我有一個.fla文件,裏面有一些movieclip實例放置在場景中。我需要遍歷它們並收集一些數據,如位置,名稱和自定義屬性。從MovieClip中讀取屬性的最佳方法?
這些自定義屬性,我不知道如何傳遞它們,我知道目前工作的一種方式是使用輔助功能屬性面板(Flash Pro CC),然後在代碼中我可以讀取它們。但是,我應該有更好的方式。
我有一個.fla文件,裏面有一些movieclip實例放置在場景中。我需要遍歷它們並收集一些數據,如位置,名稱和自定義屬性。從MovieClip中讀取屬性的最佳方法?
這些自定義屬性,我不知道如何傳遞它們,我知道目前工作的一種方式是使用輔助功能屬性面板(Flash Pro CC),然後在代碼中我可以讀取它們。但是,我應該有更好的方式。
如果我已經正確理解了你的問題以及你在評論中對@Aaron的回答所說的話,那麼你有一個swf文件,可以動態加載,並且你想要獲取/設置它的一些影片剪輯的屬性,如果是這種情況,藉此例如:
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
我有一個影片剪輯的一個實例。
我使用此代碼加載swf.swf
:
var loader:Loader = new Loader()
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_SWFLoad);
loader.load(new URLRequest('swf.swf'));
並設置/獲取我的一些影片剪輯的屬性的,我所做的:
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()
函數來獲取所有您的實例的屬性。
希望能有所幫助。
首先,您可以從代碼設置時間線實例的屬性。這沒什麼特別的。例如:
myInstance.color = "red"
您還可以創建並通過使符號組件指定自定義屬性:
如果需要,您可以使用組件進行更多操作,例如實時預覽和編譯組件。更多信息可以在這裏找到:http://www.adobe.com/devnet/flash/learning_guide/components/part03.html
因此,我創建並放置在舞臺上(Flash Pro CC中)的新符號將用作類MyMC而不是MovieClip,對吧?在那種情況下,我如何將MyMC分配給符號的類?我試圖做到這一點,但它的工作原理有點笨拙,它要求我保存一個新的.as文件,但它永遠不會使用它。 – Artemix
@Artemix是的,沒錯,它是MovieClip的一個子類。如果您需要編輯該類,請執行此操作,否則Flash將自動生成該類。 – akmozo