Загрузка объекта на сцену с AS3 - PullRequest
1 голос
/ 06 августа 2009

Я новичок в AS3, поэтому, пожалуйста, прости меня за вопрос, который, вероятно, довольно просто решить.

Я пытаюсь загрузить изображение на сцену, используя внешний класс AS3. Я не уверен, что это лучший способ сделать это, но я начал с учебника, поэтому следовал этому.

Мой объект (мувиклип) имеет класс «Mountain» и называется «Mountain_mc».

Мой внешний файл класса AS3 называется «Mountain», и это код (он хранится на том же уровне папки проекта, что и файл Flash, на котором я пытаюсь загрузить изображение на сцену) -

package 
{
    import flash.display.MovieClip;
    import flash.display.Stage;

    public class Mountain extends MovieClip
    {
        public function Mountain()
        {

            var myMountain:Mountain = new Mountain();
            stage.addChild(myMountain);
            myMountain.x = stage.stageWidth/2;
            myMountain.y = stage.stageHeight/2;
            trace ("I am a mountain");

        }
    }       
}

Я не получаю никаких ошибок, но команда трассировки также не работает, и мое изображение не появляется на сцене. Любая помощь будет принята с благодарностью. Я потратил слишком много времени, пытаясь понять это, и у меня ничего не получается.

Спасибо!

1 Ответ

5 голосов
/ 06 августа 2009

Для начала вы должны прочитать больше о том, что делает класс. В вашем коде есть несколько ошибок:

  1. Вы на самом деле делаете переполнение стека там. Что смешно, из-за названия этого сайта. :)

    Вы рекурсивно определяете переменную того же типа, что и родительский. Когда вы создадите первый myMountain, он назовет его конструктором. Внутри него будет создана переменная myMountain, которая также будет вызывать ее конструктор. И так далее.

    Таким образом, ни одна строка кода ниже var myMountain:Mountain = new Mountain(); не будет отображаться. Если вы хотите, вы можете попробовать переместить trace до этой строки. Если вы скомпилируете это, вы получите бесконечное число «Я гора».

  2. Вы не можете вызвать stage, если ваш класс не добавлен на сцену.
  3. Экземпляр класса не может добавить себя в stage.
  4. Вы должны разделить код на код в вашем классе и код в вашем первом ключевом кадре.

Учитывая, что у вас есть пустой фильм с библиотечным символом "mountain_mc", который указывает на класс с именем Mountain, у вас должен быть внешний файл Mountain.as в папке вашего фильма. Затем у вас есть два типа кода

в первом кадре фильма вы открываете панель «Действия» и пишете:

var myMountain:Mountain = new Mountain();
this.addChild(myMountain);
myMountain.x = stage.stageWidth/2;
myMountain.y = stage.stageHeight/2;

во внешнем файле, Mountain.as, у вас есть:

package {
    import flash.display.MovieClip;
    import flash.display.Stage;
    public class Mountain extends MovieClip
    {
        public function Mountain()
        {
            trace ("I am a mountain");
            // do something else
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...