![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Aug 2012
Сообщений: 10
|
Меня интересуют некоторые моменты синтаксиса actionscript 3.0 или особенности компиляции adobe flash cs4
1) Пробемма в динамическом выводе на экран объектов, класса-наследника MoviClip. Собственно есть символ S1, имеющий связь с соответствующим классом. Что если я хочу вывести несколько таких объектов на экран, допустим при помощи массива. Собсно код import S1; var s:S1=new S1(); var a:Array=new Array(); var i:int; for(i=0;i<3;i++) { a[i]=s; addChild(a[i]); a[i].y=i*100; } могу описать действия далее - в цикле задавал s.y перед a[i]=s - добавлял символы с помощью а.push(s) - заводил дополнительную переменную, которой присваивалась координата у - в ручную сделал a[0].y=0; a[1].y=100; a[2].y=200 - компилировал код во flash и air всё равно все символы имели атрибут у как у последнего символа 2) можно ли вызвать addChild из ф-ции as3-класса? Если можно -приведите пожалуйста код 3) как из класса соответствующего символу влиять на то, что творится на таймлайне данного символа. Опять же просьба привести код. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Как надо было:
__________________
Reality.getBounds(this); |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
DisplayObject добавляется в display list. И затем этот display list рендерится. Один и тот же DisplayObject может встречаться в этом списке только один раз. Отрендерить его несколько раз (в рамках такого списка отображения), как иногда делается в си - нельзя.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 31.08.2012 в 12:52. |
|
|||||
|
Цитата:
__________________
:) |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Я про то, что его можно отрендерить в bitmapData несколько раз. Или написать ещё свой рендер какой-то.
Но в рамках стандартного, с addChild/removeChild и пр. - только один.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Цитата:
// Оператор new возвращает указатель на созданный объект SomeClass * firstVar = new SomeClass(); // В данном случае для инициализации secondVar вызывается // конструктор копирования. В результате получаем копию объекта. SomeClass secondVar = *firstVar; // А вот если написать так, то мы скопируем только указатель на объект, // но не сам объект: SomeClass * thirdVar = firstVar; // Если бы у нас был какой-нибудь литерал для создания объектов, // скажем как у класса string, тогда дело выглядит так. string firstString = "Hello, World"; // И в этом случае опять же вызывается конструктор копирования. string secondString = firstString; |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Цитата:
Со стрингом как простым типом так же не вижу никаких различий.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2012
Сообщений: 131
|
1) если требовалось создать в цикле несколько экземпляров одного и того же класса и запихать их в массив, то вот:
var myArray:Array = new Array(); for (var i:int = 0; i < 3; i++){ var item:S1 = new S1(); item.y = i*100; myArray.push(item); addChild(item); //или в любом другом месте (в соответствие с видимостью) - addChild(myArray[new int]); } 3) если в классе есть публичные методы, влияющие на поведение экземпляра - конечно же, можно. |
|
|||||
|
Цитата:
package { public class SomeClass extends Sprite { // Sprite - наследник DisplayObjectContainer'а, значит у него есть метод addChild и он может содержать в себе дисплей объекты public function SomeClass() { addSomeStuff(); } private function addSomeStuff():void { for (var i:int = 0; i < 10; i++) { addChild(new SomeDisplayObject()); } } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:37. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|