Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.06.2012, 19:55
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 1  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
По умолчанию Создание нескольких экземпляров класса с 1 именем

Приветствую, столкнулся с проблемой при добавлении 1 и того же предмета 1го класса в ячейки сумки, все пред идущие перестают быть связанны с переменной к которой они относятся. Как это выяснилось: в коде есть переменная targ=e.target; и memory = targ; memory является переменной другого класса о том что за предмет был под указателем мышки когда его вставили в соответствующий слот на персонаже. Как происходит проверка:
if (MenuPanel.menuP.oneHandSw == memory)
MenuPanel - класс
menuP - статическая переменная(через нее связываюсь со всеми методами и св-ми класса)
oneHandSw - переменная того предмета который перетаскивал.

Вот как я создавал эти предметы: (скорее всего тут неправильно)
Код AS3:
public var oneHandSw:OneHanded = new OneHanded ;
bag.addChild(oneHandSw = new oneHandedSword_icon); //oneHandedSword_icon - имя MovieClip
oneHandSw.x = bag.sl1.x;
oneHandSw.y = bag.sl1.y;
bag.addChild(oneHandSw = new oneHandedSword_icon); //oneHandedSword_icon - имя MovieClip
oneHandSw.x = bag.sl2.x;
oneHandSw.y = bag.sl2.y;
Только таким образом я смог создать 2 одинаковых предмета, но такое чувство что в memory передаются не те данные либо вообще не передаются.
Конечно можно создать несколько предметов под разными переменными, но тогда если выпадет такой же предмет как и у меня, мой сразу потеряет связь с переменной+придется для каждого одинакового предмета писать его характеристики.

Старый 10.06.2012, 20:27
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Я бы написал в bag(точнее в его классе) функцию addItem, в которую бы передавал нужные данные. А уже внутри этой функции можно сделать добавление на сцену и расчёт координат.

Добавление тогда будет выглядеть просто:
Код AS3:
bag.addItem(new oneHandedSword_icon());
Кстати, названия классов принято в большой буквы писать.

Старый 10.06.2012, 20:31
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 3  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Tetraeon, "переменная" - это ссылка на созданный объект

каждый раз когда вы пишете
Код AS3:
 new SomeObj();
вы создаете новый экземпляр класса

когда вы пишете
Код AS3:
someVar = new SomeObj();
вы присваиваете ссылку на этот экземпляр в переменную someVar

таким образом если вы 3 раза подряд напишите
Код AS3:
someVar = new SomeObj();
то у вас 3 раза создастся экземпляр класса SomeObj, но ссылка у вас будет только на последний созданный, эта ссылка будет храниться в someVar
__________________
low +

Старый 10.06.2012, 23:31
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 4  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Цитата:
Сообщение от illuzor Посмотреть сообщение
Кстати, названия классов принято в большой буквы писать.
bag это клип сумки расположенный в этом классе. Вы правы так будит попроще, но вот я все таки не понял как же быть в этой ситуации?
Может быть можно както передать в memory информацию относиться ли объект конкретно к MovieClip?


Последний раз редактировалось Tetraeon; 10.06.2012 в 23:35.
Старый 10.06.2012, 23:34
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 5  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Он вообще то про oneHandedSword_icon.
__________________
http://www.chessmax.ru

Старый 10.06.2012, 23:41
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 6  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
Он вообще то про oneHandedSword_icon.
А это не класс, а MovieClip... да я именно настолько извратился что таким образом создал несколько экземпляров... просто пришлось много вариантов перебрать без особого понимания.


Последний раз редактировалось Tetraeon; 10.06.2012 в 23:43.
Старый 10.06.2012, 23:46
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 7  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
А это не класс а MovieClip
Нда...
Цитата:
просто пришлось много вариантов перебрать без особого понимания
Чтоб было понимание, нужно книжки читать.
Вам Jewelz хорошо всё объяснил.
Если я правильно понят, создайте какой-нибудь массив или вектор, в котором храните нужную информацию.

Старый 11.06.2012, 00:34
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 8  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Решил проблему добавив .String
if (MenuPanel.menuP.oneHandSw== String(memory))


Последний раз редактировалось Tetraeon; 13.06.2012 в 19:36.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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