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

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

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

Регистрация: Nov 2005
Сообщений: 48
По умолчанию ссылка на свойство stage

Здравствуйте.
Я, в общем, это. У меня есть некоторый массив, объявленный прямо в stage. Я хочу ссылку на этот массив. То есть грубо говоря если работает
Код AS3:
var a1:Array=new Array(1,2,3);
var a2:Array=a1; //типа ссылка на a1
trace(a2); //1,2,3
 
a2[0]=4;   
trace(а1); //4,2,3
, то должно както работать и чтото вроде
Код AS3:
//это в stage
var a1:Array=new Array(1,2,3);
 
//а это гдето в дисплейлисте
var a2:Array=stage.a1;
но компилятор на такое говорит, что 1119: Access of possibly undefined property prtf through a reference with static type flash.display:Stage

я понимаю, что это совсем неэлегантно - лезть из потомка к свойствам родителя. куда забавней видимо диспатчить событие из объекта, слушать его в stage и присваивать объекту тот массив. я понимаю теоретически но пока не осилю такое. и щас мне хватило бы иметь доступ к stage, как раньше к _root. видимо я не понимаю чегото в принципе.

все, чего хочу я - иметь доступ к этому массиву из разных объектов. как сделать такую ссылку?

Старый 05.03.2010, 20:44
relevance4 вне форума Посмотреть профиль Отправить личное сообщение для relevance4 Посетить домашнюю страницу relevance4 Найти все сообщения от relevance4
  № 2  
Ответить с цитированием
relevance4

Регистрация: Nov 2006
Адрес: там
Сообщений: 468
Отправить сообщение для relevance4 с помощью ICQ
Цитата:
Сообщение от tkaChuck Посмотреть сообщение
объявленный прямо в stage.
stage != document class, если вы об этом.

Цитата:
Сообщение от tkaChuck Посмотреть сообщение
все, чего хочу я - иметь доступ к этому массиву из разных объектов. как сделать такую ссылку?
Код AS3:
можно так:
obj = new Class(a1);
или так
obj = new Class(this);
но это, наверное, не правильно.


Последний раз редактировалось relevance4; 05.03.2010 в 20:50.
Старый 05.03.2010, 21:22
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Если такой массив один - сделайте статическую переменную.

Старый 05.03.2010, 21:24
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
создай какой-то public class MyArray и в нем сделай static public var a:Array = [];
и будет тебе read/write доступ к этому массиву из всех объектов посредством MyArray.a
__________________
Поймай яблоко 2!

Старый 06.03.2010, 04:40
tkaChuck вне форума Посмотреть профиль Отправить личное сообщение для tkaChuck Найти все сообщения от tkaChuck
  № 5  
Ответить с цитированием
tkaChuck

Регистрация: Nov 2005
Сообщений: 48
спасибо, товарищи.

2relevance4: такую конструкцию я ранее не видал. это как бы мы говорим что obj будет новым экземпляром класса Class, и передаем конструктору этого класса наш массив a1? боюсь и подумать какое исчадие это породит. или проделываем то же самое, но с this. a this в том, что раньше называлось _root, разве не будет означать stage? какой с этого прок? я конечно почитаю про Class, но похоже, я Вас просто не понимаю..

2Psycho Tiger: вот оно! массив-то как раз один, но. как мне объявить ее в stage, ну или как это правильно сказать.

2Zebestov: да вот как раз пытался. но не могу до конца освободиться от идеологии AS1/AS2. я сделал класс, и этот массив теперь свойство класса. далее я создаю экземляр этого класса В STAGE, потому что где же еще, и имею 1119: Access of possibly undefined property through a reference with static type. хорошо, наверно в stage ничего класть не принято, а тогда ГДЕ ЭТОТ ОБЪЕКТ СОЗДАВАТЬ?

вообше, знаете, просто пробивая по поиску тяжело понять вообще, это. ЗАЧЕМ НУЖНЫ статические классы. безопасность? ОТ КОГО? и зачем все элементы класса по дефолту private? хороший сыщик подозревает самого себя? и почему обращаться к родителю из потомка это дурной тон? И ПОЧЕМУ НЕЛЬЗЯ УДАЛЯТЬ ОБЪЕКТЫ ВРУЧНУЮ???? простите за оффтоп.. может кто посоветует хорошую книгу.

Старый 06.03.2010, 14:32
Cornford вне форума Посмотреть профиль Отправить личное сообщение для Cornford Найти все сообщения от Cornford
  № 6  
Ответить с цитированием
Cornford

Регистрация: Oct 2009
Сообщений: 174
а вот интересно почему эта строчка: trace(а1); //4,2,3 выдаёт 4,2,3, ведь мы меняем первый элемент у массива а2, он связан с а1 но а1 не связан с а2

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Цитата:
Сообщение от Cornford Посмотреть сообщение
а вот интересно почему эта строчка: trace(а1); //4,2,3 выдаёт 4,2,3, ведь мы меняем первый элемент у массива а2, он связан с а1 но а1 не связан с а2
Вы меняете элемент у первого массива. a2 — всего лишь ссылка на массив a1.
__________________
#flasher@irc.trg.ru:6667

Старый 06.03.2010, 15:30
Elser вне форума Посмотреть профиль Отправить личное сообщение для Elser Найти все сообщения от Elser
  № 8  
Ответить с цитированием
Elser
 
Аватар для Elser

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
Код AS3:
var needEmptyArray:Boolean = true; // ну это может перестарался, но люблю объяснять кодом ))
var a2:Array = (stage != null) ? (stage as MovieClip).a1 : needEmptyArray ? new Aray() : null;
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов


Последний раз редактировалось Elser; 06.03.2010 в 15:35.
Старый 06.03.2010, 15:44
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 9  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Цитата:
Сообщение от Elser Посмотреть сообщение
Код AS3:
var a2:Array = (stage != null) ? (stage as MovieClip).a1 : needEmptyArray ? new Aray() : null;
Прошу прощения за оффтоп, но я надеюсь что мне никогда не придется разбираться в вашем коде.
__________________
#flasher@irc.trg.ru:6667

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

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
хорошо, выбирайте кому что нравится )
Код AS3:
//так я делаю в API разных модулей для Obi и ему подобных:
 
var needEmptyArray:Boolean = true;
var a2:Array;
if(stage != null) {
   a2 = (stage as MovieClip).a1;
} else {
   if(needEmptyArray){
        a2 = new Array();
   } else {
        a2 = null;
   }
}
 
//а так я делаю для себя и тех кто не испытывает особых затруднений с чтением кода:
 
var needEmptyArray:Boolean = true;
var a2:Array = (stage != null) 
    ? (stage as MovieClip).a1 
    : needEmptyArray 
        ? new Aray() 
        : null;
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов


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

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

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


 


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


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