2015-02-11 37 views
0

對,我正在嘗試製作一款遊戲,並且我希望有一點代碼能夠適用於所有對象。例如我有:背景,燈,播放器和文本。我喜歡它,所以我不需要使燈,背景和文本成爲一個符號,但只要輸入它就可以引用一行代碼,所以我不必單獨列出它們。AS3-Flash CS6如何製作適用於所有對象的代碼

+0

我覺得這個問題太寬泛了。你的例子也令我困惑。你能解釋一下你想做什麼嗎?顯示您目前擁有的代碼示例以及您想如何改進它? – Aaron 2015-02-11 18:28:16

+0

您可以通過DisplayObjectContainer遍歷舞臺/符號,請參閱http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html,然後可能會將相關的子代作爲一個函數參數...!? - 希望這有助於。 – Zze 2015-02-17 10:30:30

回答

0

如果您希望影響一組特定的已知顯示對象,那麼您可以在創建它們時將它們添加到數組中,然後將該數組用作對象集合來執行任何您需要的操作。

這裏的代碼是程序性的,而不是OOP,但應該給你的要點。如果您將其粘貼到FLA文件中並創建三個對象(實例名稱),那麼您就可以獲得這種方法可以幫助您處理的體面示例。

這可以變得更加先進,創建ASA自己的AS3類,並且可以很聰明地處理任何可能需要的視覺顯示變化。但是你只需要使它像適合你的需要一樣複雜。

var myDisplayObjs_arr:Array = []; 

function addObj(obj:DisplayObject):void{ 
    myDisplayObjs_arr.push(obj); 
} 

function affectObjs(config:Object):void{ 
    // config object that includes things like alpha, colorTransform, whatever 
    for (var i:int = 0; i<myDisplayObjs_arr.length; i++){ 
     var dispObj:DisplayObject = myDisplayObjs_arr[i]; 
     if (config.alpha) { 
      dispObj.alpha = config.alpha; 
     } 
     if (config.scaleX) { 
      dispObj.scaleX = config.scaleX; 
     } 
    } 
} 

addObj(lamp); 
addObj(background); 
addObj(header_txt); 

// Call affectObjs(), passing it an object of some basic changes 
affectObjs({alpha:.5, scaleX:2}); 
相關問題