Доступ к основному этапу из файла определения класса (as3) - PullRequest
0 голосов
/ 23 марта 2010

Я бы хотел получить доступ к сцене основной временной шкалы из класса, который расширяет видеоклип. По сути, у меня есть кнопка на основной временной шкале, которая позволяет отображать HUD. HUD - это расширенный класс MovieClip. Когда люди нажимают на кнопку в HUD, я хотел бы удалить объект со сцены основного мувиклипа.

@ curro: Я думаю, что ваша путаница может быть связана с тем, что я запускаю этот код из файла определения класса. Нажав на кнопку с этим объектом, он должен удалить его из DisplayList MainTimeline. Вот код из файла определения класса:

package classes {
    import flash.display.Stage;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Answers extends MovieClip {
        public function Answers(){
            listen();
        }//constructor

            //initiatlize variables
        public var answersArray:Array = new Array();

        private function listen():void {
            submit_btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){
                answersArray.push(answer_txt.text);
                e.currentTarget.parent.parent.stage.removeChild(this);
            });//listen 
        }//listen

    }//class Definition
}//package

trace (e.currentTarget.parent.parent) возвращает мне MainTimeline, а trace (e.currentTarget.parent.parent.stage) возвращает основной этап, но я не могу использовать removeChild без получения ошибки, которая Я пытаюсь заставить сцену быть объектом DisplayObject (каким он должен быть).

Что находится на этапе MainTimeline: одна кнопка, при нажатии которой добавляется экземпляр класса Ответы на сцену.

Что является частью класса Ответы, которого нет в коде? Сначала я создал «Ответы» в виде объекта MovieClip в основной библиотеке. Он состоит из 3 частей:

  1. TextField с именем "answer_txt"
  2. a clear_btn, который очищает answer_txt
  3. «submit_btn», который отправляет текст answer_txt, а затем удаляет весь объект Ответы из MainTimeline (по крайней мере, это то, что я хочу, чтобы он делал).

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

ваше определение класса действительно странно. Выглядит как смесь as2 и as3.
Попробуйте с этим:

package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.*;
import fl.controls.Button;
public class Answers extends MovieClip
{

    public var answersArray:Array = new Array();

    public function Answers()
    {
        submit_btn.addEventListener(MouseEvent.CLICK, remove);
    }

    private function remove(e:MouseEvent)
    {
        answersArray.push(answer_txt.text);
        this.parent.removeChild(this);
    }

}

}

Это работает на моем компьютере. Ваш код не Я думаю, что это как-то связано с методом прослушивания. Класс еще не образован, и вы заставляете его работать.

0 голосов
/ 11 сентября 2012

Если вы добавите этот мувиклип на сцену, вы сможете получить доступ к сцене из этого класса так же просто, как в классе документа

stage

В противном случае вы не сможете получить доступ к сцене из этого класса. Но вы можете получить к нему доступ, отправив сценарий в качестве аргумента при создании экземпляра класса.

0 голосов
/ 23 марта 2010

Эй, я не могу сделать голову или хвост из кода.Откуда submit_btn?Это свойство класса?Как насчет answer_txt?
Вам не нужен доступ к e.currentTarget ..., чтобы просто удалить "this":

this.parent.removeChild(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...