Прошу простить меня, если это глупый вопрос, я действительно должен знать решение. Итак, здесь у меня есть программа, которая генерирует частицы на каждом заданном расстоянии от пространства. Моя программа состоит из класса документа, называемого 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 со скоростью 30 кадров в секунду, вы действительно говорите Flash, чтобы делать 150 циклов с интервалом каждые 5 секунд (т. Е. Вы хотите, чтобы это приложение вскоре вышло из строя на вашем компьютере?). Просто оставьте enterframe самостоятельно expet для анимированного кода. Просто создайте новую нормальную функцию addDots(): void' и добавьте свои точки с помощью цикла for (loop while). Ваш 'ctY ++' кажется, что он должен быть вне оператора ** else **. Используйте вложенные For-Loops (для X и Y). Вот как это делается на языке C, но не с циклами While. –
Вы были ** уже ** ** [сказали использовать вложенный for-loop] (http://stackoverflow.com/a/35547100/2057709) **, просто игнорируя рабочий совет? Этот средний код с двумя циклами 'for' - это то, что вы должны делать в обычной функции (событие без ввода). Предполагается, что базовый объект должен быть и зачем нажимать type ': Object' в тип': MovieClip'. –
@ VC.Однако мне очень жаль беспокоить вас. Просто я новичок в этом, поэтому я еще не все понял. Я очень ценю, что вы заглядываете в мой другой вопрос и помогаете мне с этим. Я теперь поставил его под вложенным циклом. Я просто понял, что могу использовать 'var base: Object = MovieClip (root);' затем использовать базовый объект для обращения к основному файлу. Я хотел сделать это, потому что я хотел протестировать столкновение с экземпляром символа на сцене. Извините еще раз и спасибо за вашу помощь. – InfiniteParadox