Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   linkage + циклы (http://www.flasher.ru/forum/showthread.php?t=128940)

zzz_dmg 20.08.2009 19:59

linkage + циклы
 
простите за глупый вопрос, но ничего не выходит
на ас2 все хорошо работает, когда linkage задаешь мувиклипам, а потом их аттачишь через i
Код AS1/AS2:

var i:Number = 1;
this.attachMovie (['s'+i], 's',1);

а в ас3 как туда "впихнуть" i, чтобы вместо s1 записи делилась на s + i?
Код AS3:

var s:s1 = new s1 ();
this.addChildAt(s);

спасибо

Dante 20.08.2009 20:32

Код AS3:

var class : Class = Class( getDefinitionByName("s"+i));
var s:*= new class ();
this.addChildAt(s);

примерно вроде так

BlooDHounD 20.08.2009 22:00

Dante, ну тогда уже так:
Код AS3:

var c:Class = getDefinitionByName( "s" + i ) as Class;
var s:Sprite = new c() as Sprite;
this.addChildAt( s );


MonkDead 21.08.2009 01:35

BlooDHounD, Sprite можно хранить в "библиотеке" :) Возможно вы подразумеваете, что MovieClip наследник Sprite, но все же наверное надо писать MovieClip.
Код AS3:

var c:Class = getDefinitionByName( "mc" + i ) as Class;
var mc:MovieClip = new c() as MovieClip;
this.addChildAt(mc);


igrayka 21.08.2009 01:48

Так друзья, это что-то очень круто, а как быть с этим ?

Код AS3:

for(i=1;i<house;i++) {
 
                        bigmap["BTN"+i]addEventListener(MouseEvent.ROLL_OVER, BTNrollOverHandler);
                        bigmap["BTN"+i]addEventListener(MouseEvent.ROLL_OUT, BTNrollOutHandler);
                        }

как добавить слушателей сразу ко всем кнопкам ?

MonkDead 21.08.2009 02:13

igrayka, наверно самое простое завести массив и в него добавлять ссылки на кнопки, пробегаемся по массиву подписываемся или отписываемся от слушателей.

BlooDHounD 21.08.2009 08:50

MonkDead, чего? Вы в порядке? зачем мне писать мувиклип, если, как вы написали, Sprite Тоже можно хранить в библиотеке, и тем самым один и тот же код у меня подойдёт на обо случая, а ваш придётся переписывать.

p.s.: лично я всегда указываю DisplayObject.

igrayka 21.08.2009 12:29

MonkDead,

Спасибо,попробую что-нибудь сейчас

Добавлено через 22 минуты
блин не могу понять как "пробежаться" по массиву и прявязать слушателей (

как используя массив ко всем его элементам добавить слушателей ?
1071: Syntax error: expected a definition keyword (such as function) after attribute rightbracket, not addEventListener.

Obi 21.08.2009 14:25

Цитата:

Сообщение от igrayka (Сообщение 844395)
MonkDead,

блин не могу понять как "пробежаться" по массиву и прявязать слушателей (

как используя массив ко всем его элементам добавить слушателей ?

Код AS3:

var a:Array = [new Sprite(),new Sprite(),new Sprite(),new Sprite(),new Sprite(),];
 
for(var i:uint = 0; i < a.length; i++) {
        var dObj:DisplayObject = a[i] as DisplayObject;
        dObj.addEventListener(MouseEvent.ROLL_OVER, trace);
        dObj.addEventListener(MouseEvent.ROLL_OUT, trace);
}


igrayka 21.08.2009 15:02

Код AS3:

for(i=1;i<60;i++) {
var ABTN:Array = new Array();
                                ABTN[i] = new Sprite("bigmap.BTN"+i);
                                var dObj:DisplayObject = ABTN[i] as DisplayObject;
                                dObj.addEventListener(MouseEvent.ROLL_OVER, BTNrollOverHandler);
                                dObj.addEventListener(MouseEvent.ROLL_OUT, BTNrollOutHandler);
                        }

или

Код AS3:

for(i=1;i<60;i++) {
var ABTN:Array = new Array();
                                ABTN[i] = "bigmap.BTN"+i;
                                var dObj:DisplayObject = ABTN[i] as DisplayObject;
                                dObj.addEventListener(MouseEvent.ROLL_OVER, BTNrollOverHandler);
                                dObj.addEventListener(MouseEvent.ROLL_OUT, BTNrollOutHandler);
                        }

все равно я не втыкаю (( жесть

1119: Access of possibly undefined property bigmap through a reference with static type flash.display:DisplayObject.


когда я делаю хотя бы так
Код AS3:

//for(i=1;i<60;i++) {
                                ABTN[0] = "bigmap.BTN1";
                                var dObj:DisplayObject = ABTN[0] as DisplayObject;
                                dObj.addEventListener(MouseEvent.ROLL_OVER, BTNrollOverHandler);
                                dObj.addEventListener(MouseEvent.ROLL_OUT, BTNrollOutHandler);
                        //}

он пишет - TypeError: Error #1009: Cannot access a property or method of a null object reference.
at AS::Control()


у меня MovieClip - карта, называется на сцене bigmap, в нем кнопки, 60 штук ...

bigmap.BTN(1-60).addEventListener( бла бла бла ) HOOW ?

хотелось бы слушать их в цикле, но я что-то никак не могу понять как


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

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