Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Пользователи

bjd bjd вне форума

Публичные сообщения

Отображение с 1 по 1 из 1 публичных сообщений
  1. Lecosson
    18.10.2009 00:54
    Lecosson
    Привет. Вчера не залазил больше на форум, так что сегодня увидел вариант свитчера. Хороший, кстати. Вот мой пример:

    package MyPackage
    {
    import flash.display.Sprite;
    import flash.events.Event;

    public class MySprite extends Sprite
    {
    private var listenerPool:Array; // в этом массиве хранятся все события, на которые подписывается данный спрайт

    public function MySprite()
    {
    listenerPool=new Array();
    super();
    // добавляем слушатель на удаление спрайта - уничтожить при этом слушателей
    super.addEventListener(Event.REMOVED, removeAllEvents);

    }

    private function removeAllEvents(event:Event):void
    {
    if (event.target == this) //только если это событие удаления именно этого спрайта
    { super.removeEventListener(Event.REMOVED, removeAllEvents);
    while(listenerPool.length > 0)
    {
    var pool:Array=listenerPool.pop();
    removeEventListener(pool[0], pool[1], pool[2]);
    }
    }
    }

    public override function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void
    { super.addEventListener(type, listener, useCapture, priority, useWeakReference);
    var pool:Array=new Array();
    pool[0]=type;
    pool[1]=listener;
    pool[2]=useCapture;
    listenerPool.push(pool);
    }


    public override function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void
    { // эта функция удаляет слушатель спрайта и убирает его из массива слушателей
    super.removeEventListener(type, listener, useCapture);
    function removeListener(a:Object, index:int, source:Array):Boolean
    {
    if ((a[0] == source[index][0]) && (a[1] == source[index][1]) && (a[2] == source[index][2]))
    return (true);
    return (false);
    }
    listenerPool.filter(removeListener);
    }
    }

Обо мне

  • О bjd
    Положение в пространстве
    Киев

Статистика

Всего сообщений
Публичные сообщения
Дополнительная информация
  • Последняя активность: 25.03.2014 00:49
  • Регистрация: 07.03.2007
  • Реферралы: 0

 


Часовой пояс GMT +4, время: 05:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.