Re: [問題] ActionScript的物件傳址問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章
6
17