我真的已經在這個小問題上嘗試了我最艱難的,它已經2周長的夜晚,我知道你有一個更有經驗的AS3開發人員會在一分鐘內修復或者兩個,我希望。removeEventListener從一個函數,不工作,試了一切(我認爲)
所以我有一個非常簡單的遊戲,拖拽能夠使用MOUSEUP的動畫對象,然後點擊主題並製作另一個動畫(圖示或其他)。只在影片剪輯內的一幀上進行hitTest。 (這工作正常)
我有問題,刪除說eventListener,我試圖在動畫結束時刪除它,所以在最後從動畫那裏會說AS從舞臺removeEventListener,但這並沒有工作,所以我在動態地將動畫添加到舞臺後嘗試removeEventListener,仍然沒有喜悅。
我希望這是簡單的像this.removeEventListener或currentTarget,但唉。
我真的想不出別的什麼,
對於愛的AS請幫助。 解釋也將是驚人的我瞭解人們沒有時間如此真的任何輸入將不勝感激。
下面是我的AS,如果有人想看FLA,我可以發送它,我很酷分享。
NB它可能是相當明顯的,我是新手,請幫我對我的方式....
import flash.display.MovieClip;
import flash.events.*;
var test:dart = new dart();
addChild(test);
circle.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);
function fl_ClickToDrag(event:MouseEvent):void
{
circle.startDrag();
}
stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);
function fl_ReleaseToDrop(event:MouseEvent):void
{
circle.stopDrag();
addEventListener(Event.ENTER_FRAME, checkIfHitTest);
function checkIfHitTest(Event)
{
if (circle.hitTestObject(square))
{
trace("true, the circle and square are colliding");
var s:blood_splat = new blood_splat();
addChild(s);
s.x = mouseX;
s.y = mouseY;
**removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**
}
else
{
trace("false, the circle and square are not colliding");
var s:blood_splat = new blood_splat();
addChild(s);
s.x = mouseX;
s.y = mouseY;
s.alpha = 0.1;
**removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**
}
}
}
只是提供一些輔助建議,我相信艾米在下面的正確軌道上。還有一點建議,在OOP語言中,使用大寫來啓動類名稱和使用camelCase來定義變量實例是很常見的。所以例如var test:Dart = new Dart();這使得在使用類與對象的實例相比時,它更具可讀性和顯而易見性。也可以通過這種方式來查看Flash CSXX的文檔類,這樣您就可以封裝這些代碼,並且具有更清晰的範圍,而不僅僅是將代碼放入時間軸中。另外,您從未嘗試過任何有無限間接性的東西:) – shaunhusain
另一種通用編碼建議,使用更長的變量名稱,我們在大多數不錯的IDE中具有製表符完成的優點,最好是在代碼中更加明確,並使其可讀性高於需要解釋它的評論。 – shaunhusain
感謝您的建議,我會嘗試開始在課堂上獲得我的AS,它看起來像一個很好和有組織的方式,我有點困惑與私人,公共和靜態類,並試圖達到電影剪輯裏面的容器內的影片剪輯在舞臺上,我只用了5-6周的時間,而且我總是感覺不到自己的深度。在嘗試所有的事情時,我應該說「我已經嘗試了我所知道的一切,希望有人能夠幫助」。 – johnp