Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Чему равно e.target ? (http://www.flasher.ru/forum/showthread.php?t=122534)

GFreemen 12.03.2009 23:12

Чему равно e.target ?
 
Добрый день. Сначала немного истории...
Имеется несколько спрайтов и ссылка на один
Код AS3:

var buttonOtkrit:Sprite=new Sprite();
var buttonPoisk:Sprite=new Sprite();
var buttonRedaktirovanie:Sprite=new Sprite();
//указатель на выбранное меню,окно, по дефолту - ОТКРЫТЬ
var selectedMenuButtun:Sprite=buttonOtkrit;
 
konteinerWindow.addChild(buttonOtkrit);
konteinerWindow.addChild(buttonPoisk);
konteinerWindow.addChild(buttonRedaktirovanie);
buttonOtkrit.addEventListener(MouseEvent.CLICK,clickOnMenuButtonListener);
buttonPoisk.addEventListener(MouseEvent.CLICK,clickOnMenuButtonListener);
buttonRedaktirovanie.addEventListener(MouseEvent.CLICK,clickOnMenuButtonListener);
 
//Трэйсы - при нажатии на buttonOtkrit
private function clickOnMenuButtonListener(e:MouseEvent):void{
trace(e.target===selectedMenuButtun);//true
trace(e.target);//[object Sprite]
trace(selectedMenuButtun);//[object Sprite]
trace(e.target.name);//instance6
trace(selectedMenuButtun.name);//instance6
selectedMenuButtun=e.target;//1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:Sprite.
}

Никак не могу понять в чем проблема?
P.S. без строчки
Код AS3:

selectedMenuButtun=e.target;

все работает.

cleptoman 12.03.2009 23:16

а с областью видимости var selectedMenuButtun:Sprite=buttonOtkrit;
все нормально у вас?

GFreemen 12.03.2009 23:31

Объявлена в классе и, как я понимаю, должна быть везде видима в этом классе. Собственно говоря небыло бы видно - не трейсилось бы.

etc 13.03.2009 00:45

Тип свойства target у Event не является Sprite.

Fernando Costa 13.03.2009 01:14

__etc как бы намекает вам на такой код:
Код AS3:

selectedMenuButtun=e.target as Sprite;


GFreemen 13.03.2009 02:15

Cпасибо большое. Все работает. (а как может быть иначе)
Только маленький осадочек остался. Нельзя ли провести ликбез КАК работает.

Цитата:

as Оператор
Проверяет, относится ли выражение, заданное первым операндом, к типу данных, заданному вторым операндом. Если первый операнд относится к этому типу данных, результатом будет первый операнд. В противном случае результатом будет значение null.
Как оказалось я не только английский плохо понимаю, но и в русском - ламер. Нельзя ли сказать тоже самое на на общедоступном языке?

Fernando Costa 13.03.2009 02:41

as - как

простыми словами e.target as Sprite - считать e.target спрайтом :)

toFlash 13.03.2009 02:45

e.target имеет тип Object, с помощью конструкции e.target as Sprite мы говорим компилятору что данный объект принадлежит классу Sprite, далеее, если наш объект на самом деле спрайт, то все ок, твоей переменной присвоется ссылка на экземпляр класса, объект который вызвал ивент, если же нет, то selectedMenuButtun присвоется значение null - что вполне съедобно для компилятора

GFreemen 13.03.2009 08:12

Ясненько.
Спасибо всем большое.


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

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