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

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

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

Регистрация: Jul 2011
Сообщений: 43
По умолчанию Вызов метода объекта, находящегося в массиве

Добрый день,
столкнулся с неожиданной проблемой: не знаю, как вызвать метод из объекта, который находится в массиве. В AS3 в массиве можно держать переменные любых типов в отличии от с++. А посему инструкция someArray[i].myMethod() не годится здесь. Подскажите как?

PS ну например создал массив, в него запихнул 10 спрайтов. Далее где-то в программе в цикле потребовалось для каждого обеъекта из массива, например, вызвать метод beginfill(color, alpha). Как?

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Почему не годится someArray[i].myMethod() ?

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Цитата:
Сообщение от 1q2w3e4r5t6 Посмотреть сообщение
инструкция someArray[i].myMethod() не годится
она не годится только если в массиве предполагается держать еще и другие типы
__________________
low +

Старый 14.07.2011, 18:43
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 4  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Проверить на тип объекта в массиве и вызывать нужный метод в зависимости от типа. typeof (для простых), is.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 14.07.2011, 18:45
1q2w3e4r5t6 вне форума Посмотреть профиль Отправить личное сообщение для 1q2w3e4r5t6 Найти все сообщения от 1q2w3e4r5t6
  № 5  
Ответить с цитированием
1q2w3e4r5t6

Регистрация: Jul 2011
Сообщений: 43
Предположим: someArray = [a:myObj, b:myObj, c:int, d:Sprite];
Вызываем:
someArray[0].myMethod() //Круто!
someArray[1].myMethod() //Круто!
someArray[2].myMethod() //Бред...
someArray[3].myMethod() //Бред...
К тому же ставя точку (.) в списке доступных свойств моего метода нет.

Старый 14.07.2011, 18:49
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 6  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Код AS3:
import flash.display.Sprite;
 
var someArray = [{}, {}, 0, new Sprite()];
 
trace(someArray[0] is Object);
trace(someArray[1] is Object);
trace(someArray[2] is int);
trace(someArray[3] is int);
true
true
true
false
__________________
Кодинг, багинг, алгоритминг. me @

Старый 14.07.2011, 18:55
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 7  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
а, да. Можно ещё проверять наличие метода:
Код AS3:
if(someArray[i].hasOwnProperty("myMethod"){
  someArray[i].myMethod();
}

Старый 14.07.2011, 18:56
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 8  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Цитата:
Сообщение от 1q2w3e4r5t6 Посмотреть сообщение
К тому же ставя точку (.) в списке доступных свойств моего метода нет.
Это уже может быть косяк редактора кода. Видишь суслика? ... а он есть.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 14.07.2011, 19:07
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
DaFive, ни одни из редакторов такое не предсказывает для Array.

Старый 14.07.2011, 19:12
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 10  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Ну если к типу не привести, то да.
я почему-то подумал не для элемента массива, а к объекту.
__________________
Кодинг, багинг, алгоритминг. me @

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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