avm2: Add the legacy Vector types that old movies can use.
This one was rather tough to test, as I actually can't generate ABCs in Animate CC that reference these classes. I instead had to modify a compiled SWF to open the package-internal namespace that these pre-specialized classes exist in.
This commit is contained in:
parent
dcf6d87363
commit
bf4492c454
|
@ -450,6 +450,10 @@ impl<'gc> Class<'gc> {
|
|||
&self.name
|
||||
}
|
||||
|
||||
pub fn set_name(&mut self, name: QName<'gc>) {
|
||||
self.name = name;
|
||||
}
|
||||
|
||||
pub fn super_class_name(&self) -> &Option<Multiname<'gc>> {
|
||||
&self.super_class
|
||||
}
|
||||
|
|
|
@ -48,10 +48,93 @@ pub fn instance_init<'gc>(
|
|||
|
||||
/// Implements `Vector`'s class constructor.
|
||||
pub fn class_init<'gc>(
|
||||
_activation: &mut Activation<'_, 'gc, '_>,
|
||||
_this: Option<Object<'gc>>,
|
||||
activation: &mut Activation<'_, 'gc, '_>,
|
||||
this: Option<Object<'gc>>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error> {
|
||||
if let Some(this) = this {
|
||||
let mut globals = this.get_scope().map(|s| s.read().globals()).unwrap();
|
||||
let mut domain = globals.as_application_domain().unwrap();
|
||||
|
||||
//We have to grab Object's defining script instead of our own, because
|
||||
//at this point Vector hasn't actually been defined yet. It doesn't
|
||||
//matter because we only have one script for our globals.
|
||||
let (_, script) = domain
|
||||
.get_defining_script(&QName::new(Namespace::public(), "Object").into())?
|
||||
.unwrap();
|
||||
|
||||
let int_class = activation.avm2().classes().int;
|
||||
let int_vector_class = this.apply(activation, &[int_class.into()])?;
|
||||
let int_vector_name = QName::new(Namespace::internal(NS_VECTOR), "Vector$int");
|
||||
int_vector_class
|
||||
.as_class()
|
||||
.unwrap()
|
||||
.write(activation.context.gc_context)
|
||||
.set_name(int_vector_name.clone());
|
||||
|
||||
globals.install_const(
|
||||
activation.context.gc_context,
|
||||
int_vector_name.clone(),
|
||||
0,
|
||||
int_vector_class.into(),
|
||||
false,
|
||||
);
|
||||
domain.export_definition(int_vector_name, script, activation.context.gc_context)?;
|
||||
|
||||
let uint_class = activation.avm2().classes().uint;
|
||||
let uint_vector_class = this.apply(activation, &[uint_class.into()])?;
|
||||
let uint_vector_name = QName::new(Namespace::internal(NS_VECTOR), "Vector$uint");
|
||||
uint_vector_class
|
||||
.as_class()
|
||||
.unwrap()
|
||||
.write(activation.context.gc_context)
|
||||
.set_name(uint_vector_name.clone());
|
||||
|
||||
globals.install_const(
|
||||
activation.context.gc_context,
|
||||
uint_vector_name.clone(),
|
||||
0,
|
||||
uint_vector_class.into(),
|
||||
false,
|
||||
);
|
||||
domain.export_definition(uint_vector_name, script, activation.context.gc_context)?;
|
||||
|
||||
let number_class = activation.avm2().classes().number;
|
||||
let number_vector_class = this.apply(activation, &[number_class.into()])?;
|
||||
let number_vector_name = QName::new(Namespace::internal(NS_VECTOR), "Vector$double");
|
||||
number_vector_class
|
||||
.as_class()
|
||||
.unwrap()
|
||||
.write(activation.context.gc_context)
|
||||
.set_name(number_vector_name.clone());
|
||||
|
||||
globals.install_const(
|
||||
activation.context.gc_context,
|
||||
number_vector_name.clone(),
|
||||
0,
|
||||
number_vector_class.into(),
|
||||
false,
|
||||
);
|
||||
domain.export_definition(number_vector_name, script, activation.context.gc_context)?;
|
||||
|
||||
let object_vector_class = this.apply(activation, &[Value::Null])?;
|
||||
let object_vector_name = QName::new(Namespace::internal(NS_VECTOR), "Vector$object");
|
||||
object_vector_class
|
||||
.as_class()
|
||||
.unwrap()
|
||||
.write(activation.context.gc_context)
|
||||
.set_name(object_vector_name.clone());
|
||||
|
||||
globals.install_const(
|
||||
activation.context.gc_context,
|
||||
object_vector_name.clone(),
|
||||
0,
|
||||
object_vector_class.into(),
|
||||
false,
|
||||
);
|
||||
domain.export_definition(object_vector_name, script, activation.context.gc_context)?;
|
||||
}
|
||||
|
||||
Ok(Value::Undefined)
|
||||
}
|
||||
|
||||
|
|
|
@ -75,6 +75,10 @@ impl<'gc> Namespace<'gc> {
|
|||
Self::Package(package_name.into())
|
||||
}
|
||||
|
||||
pub fn internal(package_name: impl Into<AvmString<'gc>>) -> Self {
|
||||
Self::PackageInternal(package_name.into())
|
||||
}
|
||||
|
||||
pub fn private(name: impl Into<AvmString<'gc>>) -> Self {
|
||||
Self::Private(name.into())
|
||||
}
|
||||
|
|
|
@ -651,6 +651,7 @@ swf_tests! {
|
|||
(as3_vector_splice, "avm2/vector_splice", 1),
|
||||
(as3_vector_tostring, "avm2/vector_tostring", 1),
|
||||
(as3_vector_constr, "avm2/vector_constr", 1),
|
||||
(as3_vector_legacy, "avm2/vector_legacy", 1),
|
||||
}
|
||||
|
||||
// TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough.
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package {
|
||||
public class Test {
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: This is not the actual source to this test.
|
||||
*
|
||||
* This is just a tribute. The actual source is in test-0 and this file (as
|
||||
* well as the accompanying FLA) is provided purely for reference only.
|
||||
*
|
||||
* The AS3 compiler in modern versions of Adobe Animate does not allow
|
||||
* generating references to the package-internal specializations of Vector, so
|
||||
* this code will yield runtime errors if compiled normally.
|
||||
*
|
||||
* Instead, compile the test, disassemble the resulting ABC (using rabcasm),
|
||||
* and open the PackageInternalNs("__AS3__.vec") namespace in each access to
|
||||
* the Vector$... classes. After reassembling and running the movie you should
|
||||
* be able to get debug output (at least in Scout).
|
||||
*/
|
||||
|
||||
trace("///Vector$int === Vector.<int>");
|
||||
trace(Vector$int === Vector.<int>);
|
||||
|
||||
trace("///Vector$uint === Vector.<uint>");
|
||||
trace(Vector$uint === Vector.<uint>);
|
||||
|
||||
trace("///Vector$double === Vector.<Number>");
|
||||
trace(Vector$double === Vector.<Number>);
|
||||
|
||||
trace("///Vector$object === Vector.<Object>");
|
||||
trace(Vector$object === Vector.<Object>);
|
||||
|
||||
trace("///Vector$object === Vector.<*>");
|
||||
trace(Vector$object === Vector.<*>);
|
|
@ -0,0 +1,10 @@
|
|||
///Vector$int === Vector.<int>
|
||||
true
|
||||
///Vector$uint === Vector.<uint>
|
||||
true
|
||||
///Vector$double === Vector.<Number>
|
||||
true
|
||||
///Vector$object === Vector.<Object>
|
||||
false
|
||||
///Vector$object === Vector.<*>
|
||||
true
|
Binary file not shown.
|
@ -0,0 +1,46 @@
|
|||
class
|
||||
refid "Test"
|
||||
instance QName(PackageNamespace(""), "Test")
|
||||
extends QName(PackageNamespace(""), "Object")
|
||||
flag SEALED
|
||||
flag PROTECTEDNS
|
||||
protectedns ProtectedNamespace("Test")
|
||||
iinit
|
||||
name "Test/Test"
|
||||
refid "Test/instance/init"
|
||||
body
|
||||
maxstack 1
|
||||
localcount 1
|
||||
initscopedepth 4
|
||||
maxscopedepth 5
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
getlocal0
|
||||
constructsuper 0
|
||||
|
||||
debugfile "I:\\Code\\ruffle\\tests\\tests\\swfs\\avm2\\vector_legacy;;Test.as"
|
||||
debugline 20
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
end ; instance
|
||||
cinit
|
||||
name ""
|
||||
refid "Test/class/init"
|
||||
body
|
||||
maxstack 1
|
||||
localcount 1
|
||||
initscopedepth 3
|
||||
maxscopedepth 4
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
end ; class
|
|
@ -0,0 +1,106 @@
|
|||
script
|
||||
sinit
|
||||
name ""
|
||||
refid "Test/init"
|
||||
body
|
||||
maxstack 4
|
||||
localcount 2
|
||||
initscopedepth 1
|
||||
maxscopedepth 3
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
debugfile "I:\\Code\\ruffle\\tests\\tests\\swfs\\avm2\\vector_legacy;;Test.as"
|
||||
debugline 2
|
||||
findpropstrict Multiname("Test", [PackageNamespace("")])
|
||||
getlex QName(PackageNamespace(""), "Object")
|
||||
pushscope
|
||||
|
||||
getlex Multiname("Object", [PackageNamespace(""), PrivateNamespace("Test.as$40"), PackageInternalNs(""), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
newclass "Test"
|
||||
popscope
|
||||
initproperty QName(PackageNamespace(""), "Test")
|
||||
|
||||
debugfile "I:\\Code\\ruffle\\tests\\tests\\swfs\\avm2\\vector_legacy;;Test.as"
|
||||
debugline 6
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
pushstring "///Vector$int === Vector.<int>"
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 7
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
getlex Multiname("Vector$int", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageInternalNs("__AS3__.vec")])
|
||||
getlex Multiname("Vector", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageNamespace("__AS3__.vec")])
|
||||
getlex Multiname("int", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
applytype 1
|
||||
strictequals
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 9
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
pushstring "///Vector$uint === Vector.<uint>"
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 10
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
getlex Multiname("Vector$uint", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageInternalNs("__AS3__.vec")])
|
||||
getlex Multiname("Vector", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageNamespace("__AS3__.vec")])
|
||||
getlex Multiname("uint", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
applytype 1
|
||||
strictequals
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 12
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
pushstring "///Vector$double === Vector.<Number>"
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 13
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
getlex Multiname("Vector$double", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageInternalNs("__AS3__.vec")])
|
||||
getlex Multiname("Vector", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageNamespace("__AS3__.vec")])
|
||||
getlex Multiname("Number", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
applytype 1
|
||||
strictequals
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 15
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
pushstring "///Vector$object === Vector.<Object>"
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 16
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
getlex Multiname("Vector$object", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageInternalNs("__AS3__.vec")])
|
||||
getlex Multiname("Vector", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageNamespace("__AS3__.vec")])
|
||||
getlex Multiname("Object", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
applytype 1
|
||||
strictequals
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 18
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
pushstring "///Vector$object === Vector.<*>"
|
||||
callpropvoid Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
|
||||
debugline 19
|
||||
findpropstrict Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")])
|
||||
getlex Multiname("Vector$object", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageInternalNs("__AS3__.vec")])
|
||||
getlex Multiname("Vector", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin"), PackageNamespace("__AS3__.vec")])
|
||||
pushnull
|
||||
applytype 1
|
||||
strictequals
|
||||
callproperty Multiname("trace", [PackageNamespace(""), PrivateNamespace("Test.as$40"), Namespace("http://adobe.com/AS3/2006/builtin")]), 1
|
||||
coerce_a
|
||||
setlocal1
|
||||
|
||||
getlocal1
|
||||
returnvalue
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
trait class QName(PackageNamespace(""), "Test")
|
||||
#include "Test.class.asasm"
|
||||
end ; trait
|
||||
end ; script
|
Binary file not shown.
|
@ -0,0 +1,9 @@
|
|||
#version 4
|
||||
program
|
||||
minorversion 16
|
||||
majorversion 46
|
||||
|
||||
#include "Test.script.asasm"
|
||||
#include "test_fla/MainTimeline.script.asasm"
|
||||
|
||||
end ; program
|
|
@ -0,0 +1,76 @@
|
|||
class
|
||||
refid "test_fla:MainTimeline"
|
||||
instance QName(PackageNamespace("test_fla"), "MainTimeline")
|
||||
extends QName(PackageNamespace("flash.display"), "MovieClip")
|
||||
flag PROTECTEDNS
|
||||
protectedns ProtectedNamespace("test_fla:MainTimeline")
|
||||
iinit
|
||||
name "test_fla:MainTimeline/test_fla:MainTimeline"
|
||||
refid "test_fla:MainTimeline/instance/init"
|
||||
body
|
||||
maxstack 3
|
||||
localcount 1
|
||||
initscopedepth 10
|
||||
maxscopedepth 11
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
getlocal0
|
||||
constructsuper 0
|
||||
|
||||
findpropstrict Multiname("addFrameScript", [PrivateNamespace("test_fla:MainTimeline"), PrivateNamespace("$0"), PackageNamespace(""), PackageNamespace("test_fla"), PackageInternalNs("test_fla"), Namespace("http://adobe.com/AS3/2006/builtin"), Namespace("adobe.utils"), PackageNamespace("flash.accessibility"), Namespace("flash.desktop"), PackageNamespace("flash.display"), PackageNamespace("flash.errors"), PackageNamespace("flash.events"), Namespace("flash.external"), PackageNamespace("flash.filters"), PackageNamespace("flash.geom"), Namespace("flash.globalization"), PackageNamespace("flash.media"), PackageNamespace("flash.net"), PackageNamespace("flash.net.drm"), Namespace("flash.printing"), Namespace("flash.profiler"), Namespace("flash.sampler"), Namespace("flash.sensors"), PackageNamespace("flash.system"), PackageNamespace("flash.text"), PackageNamespace("flash.text.ime"), Namespace("flash.text.engine"), PackageNamespace("flash.ui"), PackageNamespace("flash.utils"), Namespace("flash.xml"), ProtectedNamespace("test_fla:MainTimeline"), StaticProtectedNs("test_fla:MainTimeline"), StaticProtectedNs("flash.display:MovieClip"), StaticProtectedNs("flash.display:Sprite"), StaticProtectedNs("flash.display:DisplayObjectContainer"), StaticProtectedNs("flash.display:InteractiveObject"), StaticProtectedNs("flash.display:DisplayObject"), StaticProtectedNs("flash.events:EventDispatcher")])
|
||||
debugfile "test_fla.MainTimeline::MainTimeline"
|
||||
debugline 1
|
||||
pushbyte 0
|
||||
getlocal0
|
||||
getproperty Multiname("frame1", [PrivateNamespace("test_fla:MainTimeline"), PrivateNamespace("$0"), PackageNamespace(""), PackageNamespace("test_fla"), PackageInternalNs("test_fla"), Namespace("http://adobe.com/AS3/2006/builtin"), Namespace("adobe.utils"), PackageNamespace("flash.accessibility"), Namespace("flash.desktop"), PackageNamespace("flash.display"), PackageNamespace("flash.errors"), PackageNamespace("flash.events"), Namespace("flash.external"), PackageNamespace("flash.filters"), PackageNamespace("flash.geom"), Namespace("flash.globalization"), PackageNamespace("flash.media"), PackageNamespace("flash.net"), PackageNamespace("flash.net.drm"), Namespace("flash.printing"), Namespace("flash.profiler"), Namespace("flash.sampler"), Namespace("flash.sensors"), PackageNamespace("flash.system"), PackageNamespace("flash.text"), PackageNamespace("flash.text.ime"), Namespace("flash.text.engine"), PackageNamespace("flash.ui"), PackageNamespace("flash.utils"), Namespace("flash.xml"), ProtectedNamespace("test_fla:MainTimeline"), StaticProtectedNs("test_fla:MainTimeline"), StaticProtectedNs("flash.display:MovieClip"), StaticProtectedNs("flash.display:Sprite"), StaticProtectedNs("flash.display:DisplayObjectContainer"), StaticProtectedNs("flash.display:InteractiveObject"), StaticProtectedNs("flash.display:DisplayObject"), StaticProtectedNs("flash.events:EventDispatcher")])
|
||||
callpropvoid Multiname("addFrameScript", [PrivateNamespace("test_fla:MainTimeline"), PrivateNamespace("$0"), PackageNamespace(""), PackageNamespace("test_fla"), PackageInternalNs("test_fla"), Namespace("http://adobe.com/AS3/2006/builtin"), Namespace("adobe.utils"), PackageNamespace("flash.accessibility"), Namespace("flash.desktop"), PackageNamespace("flash.display"), PackageNamespace("flash.errors"), PackageNamespace("flash.events"), Namespace("flash.external"), PackageNamespace("flash.filters"), PackageNamespace("flash.geom"), Namespace("flash.globalization"), PackageNamespace("flash.media"), PackageNamespace("flash.net"), PackageNamespace("flash.net.drm"), Namespace("flash.printing"), Namespace("flash.profiler"), Namespace("flash.sampler"), Namespace("flash.sensors"), PackageNamespace("flash.system"), PackageNamespace("flash.text"), PackageNamespace("flash.text.ime"), Namespace("flash.text.engine"), PackageNamespace("flash.ui"), PackageNamespace("flash.utils"), Namespace("flash.xml"), ProtectedNamespace("test_fla:MainTimeline"), StaticProtectedNs("test_fla:MainTimeline"), StaticProtectedNs("flash.display:MovieClip"), StaticProtectedNs("flash.display:Sprite"), StaticProtectedNs("flash.display:DisplayObjectContainer"), StaticProtectedNs("flash.display:InteractiveObject"), StaticProtectedNs("flash.display:DisplayObject"), StaticProtectedNs("flash.events:EventDispatcher")]), 2
|
||||
|
||||
debugline 2
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
trait method QName(PackageInternalNs("test_fla"), "frame1")
|
||||
method
|
||||
name "test_fla:MainTimeline/test_fla:frame1"
|
||||
refid "test_fla:MainTimeline/instance/test_fla:frame1"
|
||||
body
|
||||
maxstack 1
|
||||
localcount 1
|
||||
initscopedepth 10
|
||||
maxscopedepth 11
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
debugfile "test_fla.MainTimeline::frame1"
|
||||
debugline 3
|
||||
findpropstrict Multiname("Test", [PrivateNamespace("test_fla:MainTimeline"), PrivateNamespace("$0"), PackageNamespace(""), PackageNamespace("test_fla"), PackageInternalNs("test_fla"), Namespace("http://adobe.com/AS3/2006/builtin"), Namespace("adobe.utils"), PackageNamespace("flash.accessibility"), Namespace("flash.desktop"), PackageNamespace("flash.display"), PackageNamespace("flash.errors"), PackageNamespace("flash.events"), Namespace("flash.external"), PackageNamespace("flash.filters"), PackageNamespace("flash.geom"), Namespace("flash.globalization"), PackageNamespace("flash.media"), PackageNamespace("flash.net"), PackageNamespace("flash.net.drm"), Namespace("flash.printing"), Namespace("flash.profiler"), Namespace("flash.sampler"), Namespace("flash.sensors"), PackageNamespace("flash.system"), PackageNamespace("flash.text"), PackageNamespace("flash.text.ime"), Namespace("flash.text.engine"), PackageNamespace("flash.ui"), PackageNamespace("flash.utils"), Namespace("flash.xml"), ProtectedNamespace("test_fla:MainTimeline"), StaticProtectedNs("test_fla:MainTimeline"), StaticProtectedNs("flash.display:MovieClip"), StaticProtectedNs("flash.display:Sprite"), StaticProtectedNs("flash.display:DisplayObjectContainer"), StaticProtectedNs("flash.display:InteractiveObject"), StaticProtectedNs("flash.display:DisplayObject"), StaticProtectedNs("flash.events:EventDispatcher")])
|
||||
constructprop Multiname("Test", [PrivateNamespace("test_fla:MainTimeline"), PrivateNamespace("$0"), PackageNamespace(""), PackageNamespace("test_fla"), PackageInternalNs("test_fla"), Namespace("http://adobe.com/AS3/2006/builtin"), Namespace("adobe.utils"), PackageNamespace("flash.accessibility"), Namespace("flash.desktop"), PackageNamespace("flash.display"), PackageNamespace("flash.errors"), PackageNamespace("flash.events"), Namespace("flash.external"), PackageNamespace("flash.filters"), PackageNamespace("flash.geom"), Namespace("flash.globalization"), PackageNamespace("flash.media"), PackageNamespace("flash.net"), PackageNamespace("flash.net.drm"), Namespace("flash.printing"), Namespace("flash.profiler"), Namespace("flash.sampler"), Namespace("flash.sensors"), PackageNamespace("flash.system"), PackageNamespace("flash.text"), PackageNamespace("flash.text.ime"), Namespace("flash.text.engine"), PackageNamespace("flash.ui"), PackageNamespace("flash.utils"), Namespace("flash.xml"), ProtectedNamespace("test_fla:MainTimeline"), StaticProtectedNs("test_fla:MainTimeline"), StaticProtectedNs("flash.display:MovieClip"), StaticProtectedNs("flash.display:Sprite"), StaticProtectedNs("flash.display:DisplayObjectContainer"), StaticProtectedNs("flash.display:InteractiveObject"), StaticProtectedNs("flash.display:DisplayObject"), StaticProtectedNs("flash.events:EventDispatcher")]), 0
|
||||
pop
|
||||
debugline 4
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
end ; trait
|
||||
end ; instance
|
||||
cinit
|
||||
name ""
|
||||
refid "test_fla:MainTimeline/class/init"
|
||||
body
|
||||
maxstack 1
|
||||
localcount 1
|
||||
initscopedepth 9
|
||||
maxscopedepth 10
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
end ; class
|
|
@ -0,0 +1,56 @@
|
|||
script
|
||||
sinit
|
||||
name ""
|
||||
refid "test_fla:MainTimeline/init"
|
||||
body
|
||||
maxstack 2
|
||||
localcount 1
|
||||
initscopedepth 1
|
||||
maxscopedepth 9
|
||||
code
|
||||
getlocal0
|
||||
pushscope
|
||||
|
||||
getscopeobject 0
|
||||
getlex QName(PackageNamespace(""), "Object")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.events"), "EventDispatcher")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "DisplayObject")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "InteractiveObject")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "DisplayObjectContainer")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "Sprite")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "MovieClip")
|
||||
pushscope
|
||||
|
||||
getlex QName(PackageNamespace("flash.display"), "MovieClip")
|
||||
newclass "test_fla:MainTimeline"
|
||||
popscope
|
||||
popscope
|
||||
popscope
|
||||
popscope
|
||||
popscope
|
||||
popscope
|
||||
popscope
|
||||
initproperty QName(PackageNamespace("test_fla"), "MainTimeline")
|
||||
|
||||
debugfile "I:\\Code\\ruffle\\tests\\tests\\swfs\\avm2\\vector_legacy\\"
|
||||
debugline 24
|
||||
returnvoid
|
||||
end ; code
|
||||
end ; body
|
||||
end ; method
|
||||
trait class QName(PackageNamespace("test_fla"), "MainTimeline") slotid 1
|
||||
#include "MainTimeline.class.asasm"
|
||||
end ; trait
|
||||
end ; script
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue