avm2: Correctly set and use Video class from Rust
This commit is contained in:
parent
7ad864ca02
commit
7eb7f2ee2c
|
@ -725,6 +725,7 @@ fn load_playerglobal<'gc>(
|
||||||
("flash.geom", "ColorTransform", colortransform),
|
("flash.geom", "ColorTransform", colortransform),
|
||||||
("flash.media", "SoundChannel", soundchannel),
|
("flash.media", "SoundChannel", soundchannel),
|
||||||
("flash.media", "SoundTransform", soundtransform),
|
("flash.media", "SoundTransform", soundtransform),
|
||||||
|
("flash.media", "Video", video),
|
||||||
("flash.net", "URLVariables", urlvariables),
|
("flash.net", "URLVariables", urlvariables),
|
||||||
("flash.utils", "ByteArray", bytearray),
|
("flash.utils", "ByteArray", bytearray),
|
||||||
("flash.system", "ApplicationDomain", application_domain),
|
("flash.system", "ApplicationDomain", application_domain),
|
||||||
|
|
|
@ -75,6 +75,21 @@ impl<'gc> StageObject<'gc> {
|
||||||
Ok(this)
|
Ok(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Same as for_display_object_childless, but allows passing
|
||||||
|
/// constructor arguments.
|
||||||
|
pub fn for_display_object_childless_with_args(
|
||||||
|
activation: &mut Activation<'_, 'gc>,
|
||||||
|
display_object: DisplayObject<'gc>,
|
||||||
|
class: ClassObject<'gc>,
|
||||||
|
args: &[Value<'gc>],
|
||||||
|
) -> Result<Self, Error<'gc>> {
|
||||||
|
let this = Self::for_display_object(activation, display_object, class)?;
|
||||||
|
|
||||||
|
class.call_native_init(Some(this.into()), args, activation)?;
|
||||||
|
|
||||||
|
Ok(this)
|
||||||
|
}
|
||||||
|
|
||||||
/// Create a `graphics` object for a given display object.
|
/// Create a `graphics` object for a given display object.
|
||||||
pub fn graphics(
|
pub fn graphics(
|
||||||
activation: &mut Activation<'_, 'gc>,
|
activation: &mut Activation<'_, 'gc>,
|
||||||
|
|
|
@ -477,10 +477,12 @@ impl<'gc> TDisplayObject<'gc> for Video<'gc> {
|
||||||
if context.is_action_script_3() && matches!(self.object2(), Avm2Value::Null) {
|
if context.is_action_script_3() && matches!(self.object2(), Avm2Value::Null) {
|
||||||
let video_constr = context.avm2.classes().video;
|
let video_constr = context.avm2.classes().video;
|
||||||
let mut activation = Avm2Activation::from_nothing(context.reborrow());
|
let mut activation = Avm2Activation::from_nothing(context.reborrow());
|
||||||
match Avm2StageObject::for_display_object_childless(
|
let size = self.0.read().size;
|
||||||
|
match Avm2StageObject::for_display_object_childless_with_args(
|
||||||
&mut activation,
|
&mut activation,
|
||||||
(*self).into(),
|
(*self).into(),
|
||||||
video_constr,
|
video_constr,
|
||||||
|
&[size.0.into(), size.1.into()],
|
||||||
) {
|
) {
|
||||||
Ok(object) => {
|
Ok(object) => {
|
||||||
let object: Avm2Object<'gc> = object.into();
|
let object: Avm2Object<'gc> = object.into();
|
||||||
|
|
Loading…
Reference in New Issue