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 get visible():Boolean;
|
||||||
public native function set visible(value:Boolean):void;
|
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 mouseX():Number;
|
||||||
|
|
||||||
public native function get mouseY():Number;
|
public native function get mouseY():Number;
|
||||||
|
|
|
@ -621,6 +621,34 @@ pub fn set_visible<'gc>(
|
||||||
Ok(Value::Undefined)
|
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`.
|
/// Implements `mouseX`.
|
||||||
pub fn get_mouse_x<'gc>(
|
pub fn get_mouse_x<'gc>(
|
||||||
activation: &mut Activation<'_, 'gc>,
|
activation: &mut Activation<'_, 'gc>,
|
||||||
|
|
|
@ -225,6 +225,8 @@ pub struct DisplayObjectBase<'gc> {
|
||||||
/// The display object we are currently masking.
|
/// The display object we are currently masking.
|
||||||
maskee: Option<DisplayObject<'gc>>,
|
maskee: Option<DisplayObject<'gc>>,
|
||||||
|
|
||||||
|
meta_data: Option<Avm2Object<'gc>>,
|
||||||
|
|
||||||
/// The blend mode used when rendering this display object.
|
/// The blend mode used when rendering this display object.
|
||||||
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
||||||
#[collect(require_static)]
|
#[collect(require_static)]
|
||||||
|
@ -282,6 +284,7 @@ impl<'gc> Default for DisplayObjectBase<'gc> {
|
||||||
next_avm1_clip: None,
|
next_avm1_clip: None,
|
||||||
masker: None,
|
masker: None,
|
||||||
maskee: None,
|
maskee: None,
|
||||||
|
meta_data: None,
|
||||||
sound_transform: Default::default(),
|
sound_transform: Default::default(),
|
||||||
blend_mode: Default::default(),
|
blend_mode: Default::default(),
|
||||||
blend_shader: None,
|
blend_shader: None,
|
||||||
|
@ -769,6 +772,14 @@ impl<'gc> DisplayObjectBase<'gc> {
|
||||||
fn set_maskee(&mut self, node: Option<DisplayObject<'gc>>) {
|
fn set_maskee(&mut self, node: Option<DisplayObject<'gc>>) {
|
||||||
self.maskee = node;
|
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 {
|
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.
|
/// The blend mode used when rendering this display object.
|
||||||
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
/// Values other than the default `BlendMode::Normal` implicitly cause cache-as-bitmap behavior.
|
||||||
fn blend_mode(&self) -> ExtendedBlendMode {
|
fn blend_mode(&self) -> ExtendedBlendMode {
|
||||||
|
|
Loading…
Reference in New Issue