Форум 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=157756)

royality 10.06.2011 10:31

Вопрос про взаимодействие с инвентарем
 
Доброго времени суток! Облазил интернет, форум и так далее, но не смог найти решения. Люди помогите пожалуйста реализовать один момент в моей разработке.

Делаю простенькую игру, и не могу понять как создать логику вот в чем:

у меня есть мувиклип hero - в нем 4 кадра с разными состояниями героя.

у героя в настройках указал класс: MyHero

Так же у меня есть меч, у него класс: Sword

и кнопка с изображением меча: swordButton

Не могу понять как можно добавить оружие в руки персонажу. Другими словами, нажимая на кнопку оружия, как сделать так, чтобы меч оказался в руках у героя.

Думаю есть 2 варианта, но не могу реализовать их почему-то:
1. Изначально добавить оружие в руки герою и сделать alpha = 0 и при нажатии на кнопку увеличивать альфу
2. Сделать чтобы оружие добавлялось в руки к герою через addChild(), только как реализовать.

Прошу помогите, хотя бы логику понять.

Заранее благодарен за ответы!

Dukobpa3 10.06.2011 10:48

Цитата:

2. Сделать чтобы оружие добавлялось в руки к герою через addChild(), только как реализовать.
Через addChild() реализовать :)

Есть еще третий вариант - изначально нарисовать героя с мечем и без меча. И когда брать меч - просто менять картинку, но этот вариант подойдет только если у вас на всю игру будет 1-3 меча, а то рисовать запаритесь.

Так же можно для меча сделать пустой мувиклип, но чтоб с именем был. и добавлять меч в него. что-то типа:

myHero.swordHolder.addChild();

ну а swordHolder - разместить в руке уже как положено, кроме того в него потом можно будет много чего полезного пихать, посох там какой-то, цветы для бабы мечты.

royality 10.06.2011 10:52

Ооо, спасибо за такой быстрый ответ. Сделать контейнер для меча и туда заливать. только вот у меня проблема я не могу взаимодействовать из своего главного класса с уже созданными во флеше мувиклипами, то есть:

Если дать им instance name, то Flash Builder просто не видит их.
А если дать контейнеру класс для взаимодействия, то как я его вставлю в руку?

Если можно немного проясните. Заранее спасибо

Dukobpa3 10.06.2011 10:56

Код AS3:

myHero.swordHolder.addChild();

"Не видит" и "не может взаимодествовать" - это разные вещи. То что не видит - да, а взаимодействует нормально.

Если стремно через точку то можно юзать myHero.getChildByName("swordHolder").addChild();

С проверками соответственно нашли такой чилд по имени или не нашли.

Vektor 10.06.2011 10:58

Без разницы, любой вариант пойдет.
1.вариант проще, делай его.
Если, нужно разное оружие, тогда создай клип (оружие) в кадрах размести разное оружие и в зависимости от выбора оружия, переключай кадры.

royality 10.06.2011 10:58

Всем спасибо за ответы. Сейчас попробую

Добавлено через 13 минут
Блин. все равно не получается от чего-то. Может я что-то не правильно делаю?

я делаю так:
Код AS3:

                private var hero = new MyHero();
                private var sword:Sword = new Sword();
                private var swordButton:SwordButton = new SwordButton();
 
public function testGame()
                {
                        addChild(swordButton);
                        swordButton.addEventListener(MouseEvent.CLICK, clicked);
 
                        addChild(hero);
                        hero.x = 400;
                        hero.y = 200;
 
                        hero.gotoAndStop('stop'); //Заставляю героя находиться в состоянии стоп
        }
 
private function clicked(e:MouseEvent):void
{
hero.swordHolder.addChild(Sword);
}

И так же не получается у меня увязать с instance name ничего. если создам допустим шарик и дам инстанс ему: Ball

то не могу из класса взаимодействовать с ним. как быть?

Wolsh 10.06.2011 11:16

Цитата:

hero.swordHolder.addChild(Sword);
Не класс Sword, а его экземпляр - private var sword:Sword = new Sword(); То есть с маленькой буквы))

Dukobpa3 10.06.2011 11:18

ну а ошибки какие?

Вроде всё ок, при условии что у MyHero есть внутри мувик с инстансНеймом swordHolder

Добавлено через 38 секунд
Да, втыкнул.

royality 10.06.2011 11:19

Цитата:

Сообщение от Wolsh (Сообщение 1002623)
Не класс Sword, а его экземпляр - private var sword:Sword = new Sword(); То есть с маленькой буквы))

Спасибо) и вправду я не правильно написал.

Добавлено через 1 минуту
Цитата:

Сообщение от Dukobpa3 (Сообщение 1002625)
ну а ошибки какие?

Вроде всё ок, при условии что у MyHero есть внутри мувик с инстансНеймом swordHolder

Добавлено через 38 секунд
Да, втыкнул.

А если swordHolder находится в мувиклипе рука, который не обозначен как класс но является составной частью MyHero? то как быть?

Dukobpa3 10.06.2011 11:21

Тогда придется руке дать инстанснейм и стучаться в холдер через руку.


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

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