2013-03-10 80 views
0

我在Flash中做一個小型遊戲作爲學校項目,我想知道當放置影片剪輯 - onLoad函數或ENTER_FRAME事件時會首先觸發什麼。首先會發生什麼,MovieClip.onLoad()或Event.ENTER_FRAME?

任何幫助將不勝感激。

編輯:我刪除onLoad,因爲它不被實際調用時,對象被放在舞臺上。

var loaded:Boolean = false; 
var angle:Number = 0; //in radians 
this.addEventListener(Event.ENTER_FRAME, update); 
function init():void { 
    //get projectile position based on relation to mouse and spawning point. 
    trace("init"); 
    loaded = true; 
    this.angle = Math.atan2(mouseY - this.y, mouseX - this.x); 
} 
function update(e:Event):void { 
    /* TRIG TIME! Move the object a certain amount 
    * of pixels-- based on the delta, in the specified angle. 
    */ 
    if (!loaded) { 
     init(); 
    } 
    trace("update"); 
    var slope:Number = Math.tan(angle); 
} 

這種方法可能仍然無法正常工作,但...

+0

也許你可以使用這兩個和一個trace()函數添加到他們中的每一個,如跟蹤(「OnLoad here」)和跟蹤(「輸入框架」),只是看看輸出顯示什麼,這只是一個猜測 – Radicate 2013-03-10 15:39:17

+0

謝謝,我會的! – Codr 2013-03-10 15:42:30

+0

我很想知道結果:) – Radicate 2013-03-10 15:46:35

回答

0

的onLoad似乎不工作,我希望它在這個case--我解決了這個改變的onLoad函數的方式到ADDED_TO_STAGE事件。我將該類的所有actionscript代碼從flash文件中移出,並移入單獨的actionscript文件中,並將事件偵聽器event.ENTER_FRAMEevent.ADDED_TO_STAGE事件放入類的構造函數中,現在整個類都像魅力一樣工作。

public function Projectile() { 
    this.addEventListener(Event.ADDED_TO_STAGE, init); 
    this.addEventListener(Event.ENTER_FRAME, update); 
    super(); 
} 

函數init在函數更新之前被調用,現在我可以繼續我的工作了!

特別感謝Don幫助我解決這個兩難

0

在ActionScript 3,你必須添加一個偵聽器,不使用的onLoad, 所以不是MovieClip.onLoad()做的事:

MovieClip.addEventListener(Event.ADDED,mcLoaded); 

function mcLoaded(e:Event):void { 

trace("MovieClip added."); 

} 

至於所問的問題, ADDED/ADDED_TO_STAGE在ENTER_FRAME之前運行。

該解決方案是時間軸代碼(不是一個單獨的。至於文件。OP有其他情況下的解決方案。)