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

1q2w3e4r5t6 14.07.2011 18:30

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

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

Bgg 14.07.2011 18:34

Почему не годится someArray[i].myMethod() ?

Jewelz 14.07.2011 18:41

Цитата:

Сообщение от 1q2w3e4r5t6 (Сообщение 1011713)
инструкция someArray[i].myMethod() не годится

она не годится только если в массиве предполагается держать еще и другие типы

DaFive 14.07.2011 18:43

Проверить на тип объекта в массиве и вызывать нужный метод в зависимости от типа. typeof (для простых), is.

1q2w3e4r5t6 14.07.2011 18:45

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

DaFive 14.07.2011 18:49

Код 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

Bgg 14.07.2011 18:55

а, да. Можно ещё проверять наличие метода:
Код AS3:

if(someArray[i].hasOwnProperty("myMethod"){
  someArray[i].myMethod();
}


DaFive 14.07.2011 18:56

Цитата:

Сообщение от 1q2w3e4r5t6 (Сообщение 1011724)
К тому же ставя точку (.) в списке доступных свойств моего метода нет.

Это уже может быть косяк редактора кода. Видишь суслика? ... а он есть.

etc 14.07.2011 19:07

DaFive, ни одни из редакторов такое не предсказывает для Array.

DaFive 14.07.2011 19:12

Ну если к типу не привести, то да.
я почему-то подумал не для элемента массива, а к объекту.


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

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