0
請原諒我,如果這是一個愚蠢的問題,我真的需要知道解決方案。所以在這裏我有一個程序可以在每個設定的距離上產生粒子。我的程序由一個稱爲supportForce的文檔類和一個名爲TheDot的粒子對象類組成。 在TheDot對象類,我有以下代碼 -錯誤#1009-只有當代碼存在於主類
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class TheDot extends MovieClip
{
var base:Object = MovieClip(root);
public function TheDot()
{
this.addEventListener(Event.ENTER_FRAME, eFrame);
}
private function eFrame(event:Event):void
{
if (base.currentFrame == 1){
trace ("G");
}
}
}
}
此代碼的工作完美(輸出G),直到我添加以下代碼插入到文檔類,suportForce,一個ENTER_FRAME事件 -
var ctX:int = 0,ctY:int = 0,done:Boolean = false;
while (done == false)
{
var dots:TheDot = new TheDot ;
dots.alpha = 0;
dots.x += (25 * ctX);
dots.y += (25 * ctY);
ctX++;
if (ctX == 22 && ctY == 20)
{
done = true;
break;
}
else if (ctX == 22)
{
ctX = 0;
ctY++;
}
stage.addChild(dots);
}
下
因此,現在有一個錯誤#1009:無法訪問TheDot/eFrame()處的空對象引用的屬性或方法。我已經在正確的位置聲明瞭所有變量,並且還聲明瞭函數。提前致謝。我有鏈接到我的驅動器中的.fla和.as文件,如果有必要,請使用它。 https://drive.google.com/folderview?id=0B8QnUfRAn9lKLUVqRjNSRHNpRkU&usp=sharing
你意識到'enterFrame'是在SWF刷新其顯示緩衝區時完成的嗎?如果你將SWF設置爲30fps,那麼你真的只是告訴Flash每5秒鐘做150次while循環(即:你希望這個應用很快就會讓你的電腦崩潰,不是嗎?)。對於動畫代碼,只需將enterframe單獨留給excpet即可。只需創建一個新的普通函數addDots():void',並用for循環(而不是while循環)添加點。你的'ctY ++'好像應該在** else **語句之外。使用嵌套For循環(用於X和Y)。這就是用C語言完成的,而不是使用While循環。 –
**你已經** ** [告訴使用嵌套for循環](http://stackoverflow.com/a/35547100/2057709)**,只是忽略工作建議?具有兩個for循環的中間代碼是您在正常函數(非enterframe事件)中必須執行的操作。基本對象應該是什麼,以及爲什麼將類型':Object'推入類型':MovieClip'。 –
@ VC.One我真的很抱歉讓你煩惱。只是我對這個比較陌生,這就是爲什麼我還沒有完全理解一切。我真的很感謝你看着我的另一個問題,並幫助我解決這個問題。我現在把它放在一個嵌套的循環中。我只知道我可以使用'var base:Object = MovieClip(root);'然後使用Base對象來引用主文件。我想這樣做是因爲我想測試與舞臺上的符號實例的碰撞。再次抱歉,感謝您的幫助。 – InfiniteParadox