我有一个.fla文件,里面有一些放置在场景中的movieclip实例。我需要遍历它们并收集一些数据,如位置,名称和自定义属性。
这些自定义属性,我不知道如何传递它们,我知道到目前为止一种方法是使用辅助功能属性面板(Flash Pro CC),然后在代码中我可以读取它们。但是我应该有一个更好的方法。
答案 0 :(得分:1)
如果我已经正确理解了你的问题以及你在@Aaron答案的评论中所说的内容,那么你有一个动态加载的swf文件,你想获得/设置它的一些MovieClip属性,如果就是这样,举个例子:
MyMC.as:
public class MyMC extends MovieClip
{
private var timer:Timer;
private var rotation_speed:int = 1;
public function MyMC() {
}
public function set_Rotation_Speed(_rotation_speed:int): void {
this.rotation_speed = _rotation_speed;
}
public function get_Rotation_Speed(): int {
return this.rotation_speed;
}
public function start_Rotation(): void {
this.timer = new Timer(500, 10);
this.timer.addEventListener(TimerEvent.TIMER, on_Timer);
this.timer.start();
}
private function on_Timer(e:TimerEvent): void {
this.rotation += this.rotation_speed;
}
}
然后,在我的swf.swf
中,我有一个MovieClip的实例。
我使用以下代码加载swf.swf
:
var loader:Loader = new Loader()
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_SWFLoad);
loader.load(new URLRequest('swf.swf'));
为了设置/获取我的一些MovieClip属性,我做了:
function on_SWFLoad(e:Event): void
{
var swf:DisplayObjectContainer = DisplayObjectContainer(loader.content);
var num_children:int = swf.numChildren;
for(var i:int = 0; i < num_children; i++)
{
var child:MovieClip = MovieClip(swf.getChildAt(i));
// get the name
trace('name : ' + child.name);
// set the position
child.x = child.y = 100;
// get the class name, in my case it's MyMC
var class_name:String = getQualifiedClassName(child);
// get all the details of the child
trace(describeType(child));
child.set_Rotation_Speed(45);
child.start_Rotation();
trace(child.get_Rotation_Speed()); // gives : 45
}
addChild(loader);
}
您可以使用describeType()
功能获取实例的所有属性。
希望可以提供帮助。
答案 1 :(得分:0)
首先,您可以从代码中设置时间轴实例的属性。这没什么特别的。例如:
myInstance.color = "red"
您还可以通过将符号设为组件来创建和分配自定义属性:
如果需要,您可以使用组件执行更多操作,例如实时预览和编译组件。更多信息可以在这里找到:http://www.adobe.com/devnet/flash/learning_guide/components/part03.html