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

Denis_Pryanikov 12.09.2011 11:46

Обращение к элементу массива, как к объекту
 
Здравствуйте.

Собственно, код:
Код AS3:

 
package  {
 
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        import flash.display.Sprite;
        import flash.ui.MouseCursor;
        import flash.ui.Mouse;
 
 
        public class MainClass extends Sprite {
                public var cells : Array = new Array();
                public function MainClass() {
 
                        for (var i=0; i <= 3; i++) {
                                var b : Sprite = new Sprite();                                                                                                                                                 
                                cells.push(b);
                                b.graphics.beginFill(0x000000, 0.2);       
                                b.graphics.drawRect(0,0,50,50);
                                b.graphics.endFill();
                                b.x = (50 * i);               
                                b.y = 50;
                                b.alpha = 0.4*(i+1);                                                                                       
                                addChild(b);
                        }
                        addChild(it);                               
                        it.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent) {
                            it.startDrag();
                        });
                        it.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent) {
                            it.stopDrag();                                                                               
                            for (var i = 0; i <= cells.length; i++) {                                                                       
                                  if (cells[i].hitTestPoint(mouseX, mouseY, true)) {
                                  it.x = cells[i].x+25;
                                  it.y = cells[i].y+25;
                                  }
                            }                                                               
                        });
 
                }
        }
 
}

Ругается (Error #1010: Термин не определен и не имеет свойств) на cells[i].hitTestPoint(mouseX, mouseY, true). Я так понял, нужно обращаться не просто к элементу массива, а как к объекту? Хотя cells[i] это и есть уже отрисованый спрайт... В принципе, все работает как мне нужно, но все же как избежать ошибки?

goodguy 12.09.2011 11:49

здесь причина ошибки в том, что вызывается индекс массива, на котором отсутствует объект.
Вот этот код не правильный:
Код AS3:

for (var i = 0; i <= cells.length; i++)

нужно так:
Код AS3:

for (var i = 0; i < cells.length; i++)

А вообще, я бы использовал здесь такую конструкцию цикла
Код AS3:

for (var i:String in cells)


Denis_Pryanikov 12.09.2011 12:07

Успех) Все работает как нужно.
Спасибо за помощь, goodguy


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

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