2016-07-03 34 views
-1

我得到了下面的代碼,並且flash事件全部正確加載。 ball是一個影片剪輯並被分配了一個類。如何使實例移動

var speedx: Number=5; 
var speedy: Number=3; 
var myball = new ball(); 
addChild(myball); 
addEventListener(Event:ENTER_FRAME,ballmove); 
function ballmove(e:Event):void{ 
    myball.x+=speedx; 
    myball.y+=speedy; 
} 

但現在的情況myball不會移動,它只是停留在0,0位置。請幫我諮詢如何得到這個myball沿staright線移動..

如果我拖了從庫中刪除實例,然後

myball.x+=speedx; 
myball.y+=speedy; 

完美地工作,但不工作給出addChild後。

+0

你在你的項目中的任何其他代碼? – null

+0

Hi @Joseph。歡迎來到StackOverflow。如果答案適合您,請將其標記爲正確(點擊勾號)。這樣其他人可以知道有一個工作解決方案。如果不工作,那麼請提供一些反饋,以便其他人可以嘗試幫助你。 –

回答

1

在您的代碼中錯誤地使用了Event:ENTER_FRAME時應該是:Event.ENTER_FRAME。我不知道是否有一個「沉默」的錯誤?在測試影片時,使用Ctrl + Shift + Enter運行調試器(對問題/錯誤提供更好的反饋)。

var myball = new ball();並不意味着什麼。這裏類型數據的= 價值,在你的代碼已經只是說VAR 名稱 = :您可以通過使用這種邏輯聲明實例:
VAR 名稱。令人驚訝的是它的工作原理,但我不知道如果對此感到滿意可能會導致更大的未來項目出現問題?

實例名稱僅影響已在舞臺上的對象。如果您正在通過代碼添加(來自庫),請確保您使用其名稱創建對象的新實例鏈接

解決方案:
在庫中,用鼠標右鍵單擊「球」對象,然後選擇「性能」,在那裏確保「名」ball並勾選「爲ActionScript導出」 (你應該看到「」變成Class: ball)。好的。

現在,在你的代碼,你可以通過創建新實例:var myball: ball = new ball(); ...

你的代碼看起來應該像

var speedx: Number=5; 
var speedy: Number=3; 
var myball: ball = new ball(); 

addChild(myball); 
addEventListener(Event.ENTER_FRAME, ballmove); 

function ballmove(e:Event):void 
{ 
    myball.x += speedx; 
    myball.y += speedy; 
} 
+0

我想知道:如果連接不起作用,就不會有位於0/0位置的實例。 – null

+0

@null,他還使用'Event:ENTER_FRAME'而不是'Event.ENTER_FRAME',但沒有得到通常的錯誤......我只能提出一個工作解決方案的最佳實踐(即使他已經覆蓋了某些部分它像聯動等) –

+0

這實際上可能是真正的問題。很好的發現。 – null