Как передать переменные в ActionScript? - PullRequest
0 голосов
/ 08 декабря 2010

Как передать переменные с одной страницы на другую в ActionScript? Я получил какое-то решение, что это можно сделать с помощью CustomEvents в ActionScript, но я не смог найти понятного и простого решения. Может кто-нибудь объяснить, как передать переменные на небольшом примере? Пожалуйста, помогите?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

PatrickS ответил более или менее на этот вопрос, но объяснение создания пользовательских событий было опущено.Таким образом, чтобы более или менее добавить ответ PatrickS, ниже приведен пример настраиваемого события:

package com.events
{
    import flash.events.Event;

    public class CustomEvent extends Event
    {
        public static const EXAMPLE:String = "example";

        public var data:String;

        public function CustomEvent(p_type:String,
                                    p_data:String,
                                    p_bubbles:Boolean = false,
                                    p_cancelable:Boolean = false):void
        {
            super(p_type, p_bubbles, p_cancelable);
            data = p_data;

        }// end function

        override public function clone():Event 
        {
            return new CustomEvent(type, data, bubbles, cancelable);

        }// end function

    }// end class

}// end package

Чтобы создать настраиваемое событие, вы должны расширить его или подкласс, например MouseEvent.Класс CustomEvent - это пользовательское событие, расширяющее Event.

При создании настраиваемого события вы можете создавать настраиваемые типы событий.Типы событий - это строковые значения, которые задаются в качестве аргументов при отправке события.При разборе настоятельно рекомендуется указывать их в виде константы, чтобы они были безопасными.Для этого вы создаете публичное свойство статической константы для события.Например, событие Event имеет тип события COMPLETE, который является общедоступной статической константой со строковым значением «complete».В этом случае CustomEvent имеет тип события EXAMPLE со строковым значением «example».

При создании пользовательского события вы можете создать свойства события, в которых будут храниться значения, которые выдаются при отправке события.Например, событие ProgressEvent имеет свойство события bytesLoaded.В этом случае CustomEvent имеет свойство с именем data.

При создании пользовательского события у конструктора должен быть параметр для типа события, флага пузырьков и состояния отмены.Здесь вы также можете добавить параметры для значений, которые вы хотите сохранить в свойствах события и отправлять вместе с ним.В этом случае есть параметр p_data, который является строковым типом.Затем вы используете ключевое слово super, чтобы вызвать конструктор родительского класса Event и проанализировать аргументы, данные при отправке пользовательского события в конструктор родительского класса.Я не буду вдаваться в подробности об этом, потому что это входит в наследование классов, и вам действительно не нужно это знать.Затем вы назначаете значения свойств события данным, которые анализируются при отправке события.В этом случае данным свойств события CustomEvent присваивается значение из аргумента p_data, проанализированного с помощью конструктора CustomEvent.

Надеюсь, это помогло:)

0 голосов
/ 08 декабря 2010

Рекомендуется использовать события, чтобы гарантировать, что ваши классы не слишком тесно связаны. Вот один из способов сделать это, но, конечно, есть много разных подходов ...

   //In your main class
   private var dispatcher:EventDispatcher = new EventDispatcher();

   private var page1:A; 
   private var page2:B; 

   public function Main()
   {
      page1 = new A( dispatcher );
      page2 = new B( dispatcher );
   }


   //In Class A ( or Class B )
   private var dispatcher:EventDispatcher;

   public function A( dispatcher:EventDispatcher )
   {
        this.dispatcher = dispatcher;
        dispatcher.addEventListener( CustomEvent.EXAMPLE , customEventListener );
   }

   private function customEventListener( event:CustomEvent ):void
   {
       trace( event.type  , event.data );
   }

   private function anyMethod(data:Object):void
   {
       //using a CustomEvent with a data property
       //also passing a type can help in selecting between actions
       dispatcher.dispatchEvent( new CustomEvent( CustomEvent.EXAMPLE ,  data ) );
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...