2011-07-28 39 views
0

我有一個問題,我似乎無法解決。我正在製作一個動畫,在移動的對象之後繪製一條線(引導線上的圓圈)。這個圈子是一個動畫片段,我有很多線條來繪製。所以,我把它們中的許多放在不同的場景中。我已經創建了來自動畫片段的按鈕,並且在按下它時繪製了一條線。我得到的一切正常工作,但當一條線被繪製,並且你按相同的按鈕來再次繪製相同的線我得到錯誤代碼:#1009 cannot access a property or method of a null object reference.畫線,並得到錯誤代碼#1009

我認爲這是因爲圖形仍然存在,但我似乎無法在再次繪製之前將其清除。我已經使用graphics.clear();,但它只是清除所有,所以當它再次「繪製」它不顯示,只有動畫片段動畫的作品。這裏有什麼問題?

我對畫線的代碼是:

import flash.display.Shape; 
import flash.events.Event; 

var shape = new Shape(); 
shape.graphics.lineStyle(2,0xFF0000); 
shape.graphics.moveTo(ani1.x, ani1.y); 
addChild(shape); 

addEventListener(Event.ENTER_FRAME, loop); 

function loop(event:Event):void 
{ 
    shape.graphics.lineTo(ani1.x, ani1.y); 
} 

以及按鈕的代碼是:

import flash.events.MouseEvent; 

stop(); 

menu_button1.addEventListener (MouseEvent.CLICK, buttonClick); 

function buttonClick (event:MouseEvent):void 
{ 
    gotoAndPlay(2, "AniDel1"); 
} 

和所有的動畫具有stop();末。

+0

試着擺脫場面,他們是邪惡的。當你使用場景時,我不知道變量的範圍/生命週期。該錯誤可能來自ENTER_FRAME監聽器:它仍在運行,但形狀不再被定義,因爲您切換了場景... – pkyeck

+0

我現在試過了,但它不起作用..同樣的錯誤代碼彈出:/但感謝您的幫助:)任何其他想法? – Cat

+0

'ani1'是圓圈對吧!?是時間軸上所有幀的圓圈?你的時間軸上是否有多個關鍵幀,是每個關鍵幀中設置的圓圈的名稱? errormsg會說出有關代碼行的任何內容嗎?null-pointer-exception會發生什麼? – pkyeck

回答

0

我放在一起的例子FLA爲您提供:anitest.fla.zip

希望這能解決你的問題。

+0

hnaks :)這太棒了!但我得到了他的工作,唯一的問題是當你製作更多的按鈕時,繪製更多的線條。可以請你舉一個例子,其中有按鈕「a」和按鈕「b」,其中兩個圖形在第一個圖形之後用3或4個框畫出來,(在不同的ayers上),當你點擊按鈕「a」時, ,當你點擊「b」時,它會清除「a」中畫出的內容,並畫出「b」上的內容?...如果再次敲擊「a」和「a」,它會清除它並從頭開始繪製?我不是很好的解釋:p但你明白嗎?:) – Cat

+0

@cat你應該考慮在課堂上編碼和擺脫時間表。項目越複雜,在時間軸上的維護越困難。在IDE中創建動畫資產將它們全部導出爲SWC並編寫一個控制所有內容的類。 – pkyeck