Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   передать параметр в слушатель MouseEvent (http://www.flasher.ru/forum/showthread.php?t=142472)

Agni 22.07.2010 00:27

передать параметр в слушатель MouseEvent
 
возможно ли передать параметр в функцию, выполняющуюся по клику мыши
возможно ли подобное:
Код AS3:

box1_mc.addEventListener(MouseEvent.CLICK,view_present_window(box1_mc));
box2_mc.addEventListener(MouseEvent.CLICK,view_present_window(box2_mc));
...............
box32_mc.addEventListener(MouseEvent.CLICK,view_present_window(box32_mc));
                                function view_present_window(Event:MouseEvent,test):void
                                {
                                        var test:view_present=new view_present();
                                        test.x = 23;
                                        test.y = 26;
                                        addChild(test);
                                }

:eek:

Котяра 22.07.2010 00:38

box1_mc - это event.currentTarget
Код AS3:

box32_mc.addEventListener(MouseEvent.CLICK,view_present_window);
        function view_present_window(event:MouseEvent):void{
                var test:DisplayObject = event.currentTarget as DisplayObject;
                test.x = 23;
                test.y = 26;
 // вот это странно - тест уже добавлен  - вы хотите его просто на верх кинуть?
                addChild(test);
        }


udaaff 22.07.2010 00:54

Agni, мне что-то не понятна логика вашего кода. Сначала вы пытаетесь передать в качестве параметра ссылку на currentTarget немыслимым способом, а потом же этому параметру присваиваете ссылку на другой объект.

Agni 22.07.2010 01:39

Код AS3:

box1_mc.addEventListener(MouseEvent.CLICK,view_present_window(box1_mc));
box2_mc.addEventListener(MouseEvent.CLICK,view_present_window(box2_mc));
...............
box32_mc.addEventListener(MouseEvent.CLICK,view_present_window(box32_mc));
                                function view_present_window(Event:MouseEvent,test):void
                                {
                                        var test:view_present=new view_present();
                                        test.parametr1= 23;//parametr1 и parametr2 это свойства box1_mc(если клик был по box1_mc)  или свйостива box2_mc, если клик был по box2_mc)
                                        test.parametr2 = 26;
                                        addChild(test);
                                }

коряво, конечно, спросил :(

имелось в виду, что при "клике" на любом mc (box1_mc,box2_mc,box3_mc,.....) создается объект класса view_present, в который хочу передать параметры (parametr1,parametr2), зависящие от box1_mc или box2_mc или box3_mc, в зависимости от того на каком был сделан клик

то есть хочу заменить страшную конструкцию

Код AS3:

 
box1_mc.addEventListener(MouseEvent.CLICK,view_box1_mc);
box2_mc.addEventListener(MouseEvent.CLICK,view_box2_mc);
box3_mc.addEventListener(MouseEvent.CLICK,view_box3_mc);
................. до box30_mc
 
function view_box1_mc(Event:MouseEvent):void
{
        var edit_temp:view_present=new view_present();
        edit_temp.description_present_txt.text = box1_mc.p_description;
        addChild(edit_temp);
}
 
function view_box2_mc(Event:MouseEvent):void
{
        var edit_temp:view_present=new view_present();
        edit_temp.description_present_txt.text = box2_mc.p_description;
        addChild(edit_temp);
 
}
function view_box3_mc(Event:MouseEvent):void
{
        var edit_temp:view_present=new view_present();
        edit_temp.description_present_txt.text = box3_mc.p_description;
        addChild(edit_temp);
}
.......... до view_box30_mc

на что-нибудь более грамотное

udaaff 22.07.2010 01:45

Смотрите пост Котяры. И параметр "Event" с маленькой буквы лучше бы написать.

Agni 22.07.2010 02:27

вроде так:
Код AS3:

 
box1_mc.addEventListener(MouseEvent.CLICK,view_box_mc);
 
        function view_box_mc(event:MouseEvent):void
                {
                        var test:DisplayObject = event.currentTarget as DisplayObject;
                        var edit_temp:view_present=new view_present();
                        edit_temp.x = -806;
                        edit_temp.y = 178;
                        edit_temp.description_txt.text = test.p_description;//не находит такого свойства у box1_mc, хотя оно присутствует
                        addChild(edit_temp);
                }

но не работает :(

Wolsh 22.07.2010 02:59

У класса DisplayObject нет свойства p_description
Приведите к правильному классу.

Agni 22.07.2010 08:21

что значит привести к правильному классу?

nark03 22.07.2010 11:00

Если хотите заменить "вашу ужасную конструкцию" то просто в обработчике пишите edit_temp.description_present_txt.text = (event.target as type).p_description;
где type тип ваших объектов boxN_mc, n = 1 to 30

Tr1te 22.07.2010 11:08

Если вы вообще хотите передавать любой параметр, то нужно писать свой эвент. Я делаю так:
Код AS3:

        import flash.events.*;
 
        public class NW_EventWithParam extends Event {
 
                private var _EventParam;
 
                public function NW_EventWithParam(NW_EventType:String,ep) {
                        super(NW_EventType,true,false);
                        _EventParam=ep;
                }
 
                public function get EventParam() {
                        return _EventParam;
                }
 
        }



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

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