Re: [問題] ActionScript的物件傳址問題

看板Flash作者 (kk)時間12年前 (2012/12/09 16:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《sohumi (皮老闆)》之銘言: : Flash CS6 AS3 : 在AS裡物件都是以傳址的方式, : 我把class a一個_sprite送到class b去New它 : 但是trace(_sprite) = NULL. : 如果是傳址,是不是應該要_sprite = Object Sprite ? : class a extends MovieClip : { : var _sprite:Sprite; : funciton a() : { : b.NewSprite(_sprite); : trace(_sprite);//NULL : } : } : /// : class b extends Sprite : { : function b(){} : public static NewSprite(pSprite:Sprite):void : { : pSprite = new Sprite(); : } : } 我不知道你為什麼要那樣子做 不過我知道 我這樣是可以的 class a extends MovieClip { var _sprite:Sprite; funciton a() { _sprite = b.NewSprite(); trace(_sprite); } } /// class b extends Sprite { function b(){} public static NewSprite():Sprite { var sp = new Sprite(); return sp; } } //////////////////////////////// var a:Sprite = new Sprite() a.name = "a" var b:Sprite = a var c:Sprite = a trace(a.name,b.name,c.name) // a,a,a b = new Sprite() b.name = "b" trace(a.name,b.name,c.name) // a,b,a c.name = "s" trace(a.name,b.name,c.name) // s,a,s 一開始 a 被付予一個記憶體位址 b,c 被指向 a 的記憶體位址 所以 trace(a,b,c)會得到同值 後來 b = new Sprite() 的時候 b 被付予一個新記憶體位址 a,c 的記憶體位址不變 所以trace的時候 就會得到不同的結果 同理 你的 pSprite 跟 _Sprite 就形同 a 跟 b 一樣 是不同變數被指向同一塊位址 pSprite = new Sprite() 的時候 被付予了新的記憶體 並不是把原本的記憶體位址修改 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.227.253
文章代碼(AID): #1Gn4iSNA (Flash)
討論串 (同標題文章)
文章代碼(AID): #1Gn4iSNA (Flash)