Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 1,2 > Обработчики событий на N созданных мувиков!


Автор: MrDen 22.8.2006, 12:13
Я создал в цикле некоторое число мувов(это число читается из *.xml):
Код

for(i=0;i<N;i++){
    _root.createEmptyMovieClip(["b"+i],_root.getNextHighestDepth());
    }

Как на них на всех установить обработчик события например onPress&
C учетом того, что N может измениться. smile 

Автор: AlDev 22.8.2006, 20:37
Код

import mx.events.EventDispatcher;

class ru.z3studio.batsuev.display.EMovieClip extends MovieClip
{
    static var SymbolName = "__Packages.EMovieClip";
    static var SymbolOwner = EMovieClip;
    static var SymbolLinked = Object.registerClass(SymbolName, SymbolOwner);
         
    public var addEventListener:Function;
    public var removeEventListener:Function;
    public var dispatchEvent:Function;
    
    public function EMovieClip()
    {
        EventDispatcher.initialize(this);
    }
    
    public function addListener(list:Object):Void
    {
        this.addEventListener('onPress',list);
        this.addEventListener('onRelease',list);
    }
    
    private function onRelease():Void
    {
        this.dispatchEvent({type:'onRelease',target:this});
    }
    
    private function onPress():Void
    {
        this.dispatchEvent({type:'onPress',target:this});
    }
}

и во Flash-ке:
Код

import ru.z3studio.batsuev.display.EMovieClip
var list:Object = new Object();
list.onPress = function(evnt:Object)
{
  trace (evnt.target);
}
for (var i:Number = 0;i<N;i++)
{
  var createdMc:MovieClip = _root.attachMovie(EMovieClip.SymbolName,'b'+i.toString(),_root.getNextHighestDepth());
  createdMc.addListener(list);
}

Автор: Ventur 2.10.2006, 21:14
Код

for(var i:Number =0;i<N;i++){
    _root.createEmptyMovieClip(["b"+i];
   _root.getNextHighestDepth());
   this = _root["b"+i];
   this.onPress = function()
                    {//какие-то операторы
                    }
   this.onRollOver = function()
                    {//какие-то операторы
                    }
    }


не так грамотно, как выше, но проще в понимании и подойдет для твоей задачи


Автор: AlDev 5.10.2006, 06:41
Ventur, 
если говорить проще, тогда:
Код

var releaseF:Function = function()
{
  trace (this);
}

var mc:MovieClip;
for(var i:Number = 0;i<N;i++)
{
  mc = _root.createEmptyMovieClip(["b"+i.toString()],_root.getNextHighestDepth());
  mc.onRelease = releaseF;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)