Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Это мне надо руки отрезать или это так работает (http://www.flasher.ru/forum/showthread.php?t=210593)

sasha88886 04.04.2015 02:35

Это мне надо руки отрезать или это так работает
 
Всем здравствуйте

С этой проблемой я встречался и ранние, даже описывал в этом форуме. Но так и не разобравшись обошол окольными путями, Сей час проблема меня догнала и я реально не знаю что делать.
То есть проблему то я решил и вроде бы работает, но мне очень не нравится код. Короче давайте посмотрим вместе.
Значит проект игра. Есть карта на карте мои герои где то надо припустим штук 10. Героев я объявляю в массиве. Пишу для героев ивент клика мышки один для всех. Проблема заключается в том что не могу определить в функции обработки ивента, на каком из десяти героев я щелкнул.

Значит я нашол такой вот метод как
Код AS3:

e.currentTarget.name

он выдает надпись "instance" и номер по порядку объекта на сцене. Проведя несколько манипуляций со словом "instance" получаю номер на сцене вычисляю все предыдущие объекты и сухой остаток мне показывает порядковый номер в массиве. Все вроде бы работает но эта работа мне напоминает то место на котором я привык сидеть:). ВОПРОС следующийу как обычно пишут код для множество объектов с одним ивентом, Ну и как обычно вычисляют по какому из объектов произвелся ивент. Код прошу посмотреть ниже

Код AS3:

var _heroExempl:Array= new Array
//обявляем наш массив
 
for(var i=0;i<=10;i++){
        _heroExempl[i]=new _hero;
        //призначаем наш символ
        addChild(_heroExempl[i]);
        //выводим в роб. обл.
        _heroExempl[i].addEventListener(MouseEvent.CLICK,heroClick,false,0,true);
        //назначаем ивент на клик по герою
        _heroExempl[i].x=i*50;
        //разлажеваем героев чтоб на куче не столпились
}
 
function heroClick (e:MouseEvent) :void{
        trace(e.currentTarget.name)
        //выдает "instance8" например если клик по 9 объекту
        var _charToArray:String=e.currentTarget.name.toString();
        //переводем всю надпись в стринге
        var heroNow=_charToArray.charAt(8)+_charToArray.charAt(9);
        //отнимаем надпись "instance" и получаем только цыфры
        var herCalcul:Number=new Number(heroNow)
        //переводим стринги в номер
        trace(herCalcul)
        //выдает 8 тоесть клик произведен по объекту _heroExempl[8]
}


olexandr 04.04.2015 05:39

отрезать не стоит - они еще пригодятся :)
Код AS3:

trace(_heroExempl.indexOf(e.target));


Wolsh 04.04.2015 10:03

Название темы не отражает суть вопроса.


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

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