Add stub impl of `flash.display.MovieClip`.

This commit is contained in:
David Wendt 2020-02-20 20:29:51 -05:00
parent ebcfee4676
commit d42b16f021
3 changed files with 51 additions and 0 deletions

View File

@ -7,6 +7,7 @@ use crate::avm2::script_object::ScriptObject;
use gc_arena::{Collect, MutationContext}; use gc_arena::{Collect, MutationContext};
mod function; mod function;
mod movieclip;
mod object; mod object;
/// This structure represents all system builtins' prototypes. /// This structure represents all system builtins' prototypes.
@ -28,6 +29,7 @@ pub fn construct_global_scope<'gc>(
let object_proto = ScriptObject::bare_object(mc); let object_proto = ScriptObject::bare_object(mc);
let function_proto = function::create_proto(mc, object_proto); let function_proto = function::create_proto(mc, object_proto);
let movieclip_proto = movieclip::create_proto(mc, object_proto, function_proto);
object::fill_proto(mc, object_proto, function_proto); object::fill_proto(mc, object_proto, function_proto);
@ -64,6 +66,20 @@ pub fn construct_global_scope<'gc>(
.into(), .into(),
) )
.unwrap(); .unwrap();
global_scope
.install_dynamic_property(
mc,
QName::new(Namespace::package("flash.display"), "MovieClip"),
FunctionObject::from_builtin_constr(
mc,
movieclip::constructor,
movieclip_proto,
function_proto,
)
.unwrap()
.into(),
)
.unwrap();
(global_scope, system_prototypes) (global_scope, system_prototypes)
} }

View File

@ -0,0 +1,31 @@
//! `flash.display.MovieClip` builtin/prototype
use crate::avm2::object::Object;
use crate::avm2::return_value::ReturnValue;
use crate::avm2::script_object::ScriptObject;
use crate::avm2::value::Value;
use crate::avm2::{Avm2, Error};
use crate::context::UpdateContext;
use gc_arena::MutationContext;
/// Implements `flash.display.MovieClip`'s constructor.
pub fn constructor<'gc>(
_avm: &mut Avm2<'gc>,
_action_context: &mut UpdateContext<'_, 'gc, '_>,
_this: Object<'gc>,
_args: &[Value<'gc>],
) -> Result<ReturnValue<'gc>, Error> {
Ok(Value::Undefined.into())
}
/// Construct `MovieClip.prototype`.
pub fn create_proto<'gc>(
mc: MutationContext<'gc, '_>,
super_proto: Object<'gc>,
_fn_proto: Object<'gc>,
) -> Object<'gc> {
// TODO: Use `StageObject` here.
let movieclip_proto = ScriptObject::object(mc, super_proto);
movieclip_proto
}

View File

@ -58,6 +58,10 @@ impl Namespace {
pub fn public_namespace() -> Self { pub fn public_namespace() -> Self {
Namespace::Package("".to_string()) Namespace::Package("".to_string())
} }
pub fn package(package_name: &str) -> Self {
Namespace::Package(package_name.to_string())
}
} }
/// A `QName`, likely "qualified name", consists of a namespace and name string. /// A `QName`, likely "qualified name", consists of a namespace and name string.