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

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

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
По умолчанию Добавление объекта в каждый индекс.

Нашёл для себя код из as2 который хотелось бы перевести его на as3 , а если быть по конкретнее то мне надо осуществить аналог attachMovie (as 2.0) , в голову пришло только как добавить экземпляр мувы из библиотеки в в массив .
вот as 2
Код AS1/AS2:
var depth =0 
++ depth
var bullets = "bul" + depth; // bul1,bul2,bul...n
_root.attachMovie("bul",bullets,depth);
то есть мне надо добавить мувики на сцену уже под другими именеми например:
bull1
bull2
bull...n
as 3 хотел написать так что бы при каждом клике экземпляр добавлялся в порядковый индекс
Код AS3:
var bull:MovieClip = new bul();
	var arr:Array = new Array();
	arr.push(addChild(bull));
	trace(arr.length)
трейс пишет все время 1,1,.......1
как это вообще сделать правильнее ?

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Самый простой аналог:
Код AS3:
root.addChild(new bul());
Массив у вас каждый раз заново создаётся, вот и пишет 1.
__________________
Дети не должны знать о своих родителях

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Тэилс генерит ошибку
Я так понимаю индекс каждый раз будет расти и для обращения к каждому можно воспользоваться методом
getChildIndex. ладно буду разбираться.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Вы можете использовать один отдельный контейнер, куда будете помещать только bul, тогда потребности в массиве не будет.
Что за ошибка?
__________________
Дети не должны знать о своих родителях

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
(root as DisplayObjectContainer).addChild(new bul());
?
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Почти разобрался , при каждом клике (для примера )я добавляю объекты на растоянии друг от друга
но почему trace(numChildren) возвращает индексацию с 2 ? почему не с одного ?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
numChildren не возвращает индексацию, он возвращает количество детей конкретного контейнера(0~∞).
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
ZackMercury Stage ведь тоже контейнер ? так ведь ?
Цитата:
он возвращает количество детей конкретного контейнера(0~∞).
Эт понятно, но почему при первом клике трейс выдает что имеется уже два объекта , ведь она не могла добавится сама по себе до клика ?

Старый 21.06.2016, 19:37
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
const OBJ_SIZE:int = 50;
var objects:Array = [];
 
function addObject(x:int = 0, y:int = 0):Shape
{
	var shp:Shape = new Shape();
	var g:Graphics = shp.graphics;
	var gradientMatrix:Matrix = new Matrix();
	gradientMatrix.rotate(Math.PI/2);
	gradientMatrix.scale(0.05, 0.05);
	gradientMatrix.translate(20, 20);
	g.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1,1], [0x00, 0xFF], gradientMatrix, SpreadMethod.PAD);
	g.drawRoundRect(0, 0, OBJ_SIZE, OBJ_SIZE, 10, 10);
	g.endFill();
	g.beginFill(0xFFFFFF);
	g.drawCircle(OBJ_SIZE/2, OBJ_SIZE/2, OBJ_SIZE / 4);
 
	addChild(shp);
	shp.x = x;
	shp.y = y;
	return shp;
}
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick);
function onStageClick(e:MouseEvent):void
{
	objects.push(addObject(e.target.mouseX, e.target.mouseY));
	for(var i:int = 0; i < objects.length; i ++)
		objects[i].alpha = (1+i)/objects.length;
}
Добавлено через 1 минуту
stage - контейнер, но он вам дан не для того, чтобы вы в него добавляли детей.
Изначально он имеет 1 ребёнка: ваш главный класс. Вы можете увидеть имя ребёнка написав
Код AS3:
trace(stage.getChildAt(0));
Цитата:
хотел написать так что бы при каждом клике экземпляр добавлялся в порядковый индекс
При каждом addChild новый объект всегда будет поверх остальных(в индексе (numChildren-1)).
Если вам нужно добавлять в конкретный индекс, то вам нужен метод
http://help.adobe.com/ru_RU/FlashPla...l#addChildAt()
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 21.06.2016 в 20:04.
Старый 21.06.2016, 20:18
zackscript вне форума Посмотреть профиль Отправить личное сообщение для zackscript Найти все сообщения от zackscript
  № 10  
Ответить с цитированием
zackscript
 
Аватар для zackscript

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Вроде разобрался
создаю контейнер
Код AS3:
var cont:Sprite = new Sprite();
и при каждом клике кидаю поверх остальных в контейнер
Код AS3:
var bull:MovieClip = new bul();
	cont.addChild(bull);
	trace(cont.numChildren); // 1,2,...N

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

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

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


 


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


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