avm2: Stub DisplayObject.metaData
This commit is contained in:
parent
df7d95bf43
commit
1552059c9f
|
@ -88,6 +88,9 @@ package flash.display {
|
|||
public native function get visible():Boolean;
|
||||
public native function set visible(value:Boolean):void;
|
||||
|
||||
public native function get metaData():Object;
|
||||
public native function set metaData(value:Object):void;
|
||||
|
||||
public native function get mouseX():Number;
|
||||
|
||||
public native function get mouseY():Number;
|
||||
|
|
|
@ -621,6 +621,34 @@ pub fn set_visible<'gc>(
|
|||
Ok(Value::Undefined)
|
||||
}
|
||||
|
||||
/// Implements `metaData`'s getter.
|
||||
pub fn get_meta_data<'gc>(
|
||||
activation: &mut Activation<'_, 'gc>,
|
||||
this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
avm2_stub_getter!(activation, "flash.display.DisplayObject", "metaData");
|
||||
if let Some(dobj) = this.as_display_object() {
|
||||
return Ok(dobj.meta_data().map_or(Value::Null, Value::Object));
|
||||
}
|
||||
|
||||
Ok(Value::Undefined)
|
||||
}
|
||||
|
||||
/// Implements `metaData`'s setter.
|
||||
pub fn set_meta_data<'gc>(
|
||||
activation: &mut Activation<'_, 'gc>,
|
||||
this: Object<'gc>,
|
||||
args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
if let Some(dobj) = this.as_display_object() {
|
||||
let obj = args.get_object(activation, 0, "metaData")?;
|
||||
dobj.set_meta_data(activation.gc(), obj);
|
||||
}
|
||||
|
||||
Ok(Value::Undefined)
|
||||
}
|
||||
|
||||
/// Implements `mouseX`.
|
||||
pub fn get_mouse_x<'gc>(
|
||||
activation: &mut Activation<'_, 'gc>,
|
||||
|
|
|
@ -225,6 +225,8 @@ pub struct DisplayObjectBase<'gc> {
|
|||
/// The display object we are currently masking.
|
||||
maskee: Option<DisplayObject<'gc>>,
|
||||
|
||||
meta_data: Option<Avm2Object<'gc>>,
|
||||
|
||||
/// The blend mode used when rendering this display object.
|
||||
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
||||
#[collect(require_static)]
|
||||
|
@ -282,6 +284,7 @@ impl<'gc> Default for DisplayObjectBase<'gc> {
|
|||
next_avm1_clip: None,
|
||||
masker: None,
|
||||
maskee: None,
|
||||
meta_data: None,
|
||||
sound_transform: Default::default(),
|
||||
blend_mode: Default::default(),
|
||||
blend_shader: None,
|
||||
|
@ -769,6 +772,14 @@ impl<'gc> DisplayObjectBase<'gc> {
|
|||
fn set_maskee(&mut self, node: Option<DisplayObject<'gc>>) {
|
||||
self.maskee = node;
|
||||
}
|
||||
|
||||
fn meta_data(&self) -> Option<Avm2Object<'gc>> {
|
||||
self.meta_data
|
||||
}
|
||||
|
||||
fn set_meta_data(&mut self, value: Avm2Object<'gc>) {
|
||||
self.meta_data = Some(value);
|
||||
}
|
||||
}
|
||||
|
||||
struct DrawCacheInfo {
|
||||
|
@ -1707,6 +1718,14 @@ pub trait TDisplayObject<'gc>:
|
|||
}
|
||||
}
|
||||
|
||||
fn meta_data(&self) -> Option<Avm2Object<'gc>> {
|
||||
self.base().meta_data()
|
||||
}
|
||||
|
||||
fn set_meta_data(&self, gc_context: &Mutation<'gc>, value: Avm2Object<'gc>) {
|
||||
self.base_mut(gc_context).set_meta_data(value);
|
||||
}
|
||||
|
||||
/// The blend mode used when rendering this display object.
|
||||
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
||||
fn blend_mode(&self) -> ExtendedBlendMode {
|
||||
|
|
Loading…
Reference in New Issue