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

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

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

Регистрация: Apr 2010
Сообщений: 9
По умолчанию Обращение к массиву из другого класса.

При выполнении последней строчки в классе Missile (обращение к массиву enemies класса main) компилятор выдает ошибку "ReferenceError: Error #1069: Не удалось найти свойство enemies в main.ship; отсутствует значение по умолчанию."
Код AS3:
...
public class ship extends MovieClip {
...
    public static var enemies:Array;
    public function ship() {
...
        addEventListener("enterFrame", EnterFrame);
        enemies = [];
    }
    public function EnterFrame(event:Event) {
		var enemy:Enemy;
		enemy = new Enemy;
		parent.addChild (enemy);
		enemies.push(enemy);
    }
...
}
Код AS3:
...
public class Missile extends MovieClip {
    public function Missile() {
         addEventListener("enterFrame", EnterFrame);
    }
    public function EnterFrame(e:Event) {
          var xx:Array = parent["Ship"].enemies;
    }
}

Старый 30.04.2010, 00:17
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
У вас массив enemies объявлен статическим, а вы пытаетесь получить его у объекта.
Рекомендуется к изучению: http://help.adobe.com/en_US/AS3LCR/F...ts.html#static
__________________
тонкий тролль, осеянный благодатью

Старый 30.04.2010, 01:25
shtyftu вне форума Посмотреть профиль Отправить личное сообщение для shtyftu Найти все сообщения от shtyftu
  № 3  
Ответить с цитированием
shtyftu

Регистрация: Apr 2010
Сообщений: 9
Спасибо за ссылку, на счет static стало понятно. А как же тогда лучше передать этот массив другому классу?

Старый 30.04.2010, 01:40
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Передайте ссылку в конструктор или любой метод другого класса. Можете и так оставить, а обращаться Ship.enemies. Кстати у вас класс Ship назван с маленькой буквы.

Код AS3:
public function EnterFrame(e:Event) {
          var xx:Array = parent["Ship"].enemies;
}
Вы собираетесь каждый кадр обновлять ссылку на массив?

Старый 30.04.2010, 02:17
shtyftu вне форума Посмотреть профиль Отправить личное сообщение для shtyftu Найти все сообщения от shtyftu
  № 5  
Ответить с цитированием
shtyftu

Регистрация: Apr 2010
Сообщений: 9
Да, имя класса - ship, а имя мувиклипа - Ship (раньше не знал, что лучше писать имена класса с большой буквы).
Да, каждый кадр необходимо проверять столконовение "ракеты" с "врагом", поэтому каждый кадр собираюсь обновлять ссылку на массив.

Сейчас изменил имя класса на Ship, а имя мувиклипа соответственно на ship и все заработало...

Старый 30.04.2010, 17:28
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В объект передается именно ссылка на массив, а не его копия, поэтому достаточно получить ее один раз.

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

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

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


 


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


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