作者etrexetrex (moonet)
看板Flash
標題Re: [問題] AS3 MovieClip
時間Wed Apr 13 18:40:04 2011
※ 引述《AizawaYuichi (相沢祐一)》之銘言:
: 恩...不太會AS3
: 這篇純粹是請各位幫我修正寫法
: function set_obj(){
: var obj=new mc_obj() //mc_obj是元件庫的MC
: with(obj){
: name="mc_obj"
: x=100
: y=200
: }
: addChild(obj)
: }
: set_obj()
: MovieClip(getChildByName("mc_obj")).gotoAndStop(50)
: 以上是確定可以執行的
: 可是...
: obj是function內var的變數(暫時用)
: (同一function內可能用obj去new各種東西)
: 離開之後無法呼叫
: 又不想在外面為了各種MC呼叫各種全域變數
: 所以我只好給他name屬性
: 並且gCB
: 又因為要gAS,所以前面要轉型為MC
: (奇怪元件庫就是MC啦,new下來類型不對嗎?Orz)
: 總之整個就很亂
: 請問以上的程式碼應該怎麼修正
: 比較符合一般AS3的寫法?
你的函數可以傳回值
如果是我會這樣寫
funciton NewMc_obj(x:int, y:int):mc_obj
{
var obj:mc_obj =new mc_obj(); //mc_obj是元件庫的MC
obj.x = x;
obj.y = y;
return obj;
}
function anotherFunction(obj:mc_obj):void
{
obj.gotoAndStop(50);
}
用法1
NewMc_obj(100, 200).gotoAndStop(50);
用法2
var obj = NewMc_obj(100, 200);
obj.gotoAndStop(50);
用法3
anotherFunction(NewMc_obj(100, 200));
用法4
var obj = NewMc_obj(100, 200);
anotherFunction(obj);
--
blog:
http://etrex.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.137.198.18
推 AizawaYuichi:好用法,那如果新增時是在某function 04/13 18:41
→ AizawaYuichi:但是在另外的function內才要gotoAndStop()呢? 04/13 18:41
→ AizawaYuichi:obj應該已經失效了吧?不給name行得通嗎? 04/13 18:42
→ etrexetrex:把你的 mc_obj 當作參數傳到另一個 function 裡 04/13 18:42
※ 編輯: etrexetrex 來自: 140.137.198.18 (04/13 18:44)
※ 編輯: etrexetrex 來自: 140.137.198.18 (04/13 18:44)
→ etrexetrex:我認為多宣告一個變數會比用 name 好 04/13 18:45