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

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

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

Регистрация: Jan 2010
Сообщений: 187
Question присвоение имён переменных в цикле

Здраствуйте.

Мне хотелось бы добавлять на сцену чилдренов, присваивая им различные имена.
(чтобы потом можно было с конкретным "bbb"+i что-то делать)

Вот такая вот конструкция не работает:

Код AS3:
for (var i:int = 0; i < 10; i++) {
 
	"bbb"+i = new mc();
	aaa.addChild("bbb"+i);
	"bbb"+i.x=500;
	"bbb"+i.y=50+Math.random()*400;
}
Подскажите, как поступают в таких случаях?

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

Регистрация: Jun 2006
Сообщений: 400
Код AS3:
			for (var i:int = 0; i < 10; i++) {
				var tmpSprite:Sprite =new Sprite() ;
				tmpSprite.name = "bbb" + i;
				addChild(tmpSprite);
 
			}
			trace(this.getChildByName("bbb4").name);

Старый 02.06.2010, 11:47
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 3  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Спасиб! Буду пробовать.

Добавлено через 3 часа 2 минуты
Всё же немного непонятно.
Допустим я создал несколько объектов Box на сцене с помощью цикла:
Код AS3:
			for (var i:int = 0; i < 10; i++) {
				var tmpSprite:Sprite =new Box();
				tmpSprite.name="bbb"+i;
				addChild(tmpSprite);
			}
И присвоил им имена с bbb0 по bbb9.
Это вроде понятно.

А вот дальше, в другом месте программы, я хочу с помощью другого цикла взять элементы с именами с bbb3 по bbb6 и поменять им координату x, к примеру. (x += 100

Код AS3:
			for (var j:int = 3; j < 7; j++) {
                        ("bbb"+j).name += 100;
                        }
Не работает. Что я делаю неправильно?

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

Регистрация: Jun 2006
Сообщений: 400
Код AS3:
	for (var j:int = 3; j < 7; j++) {
              var tmpSprite:Sprite = getChildByName("bbb"+j);
             tmpSprite.x += 100;
           }

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

Регистрация: Jan 2010
Сообщений: 187
Не. Не хочет работать.
Пишет вот:

1151: A conflict exists with definition tmpSprite in namespace internal.


Код AS3:
 
package {
 
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends MovieClip {
 
		public var tmpSprite:Sprite;
 
		public function Main() {
 
			for (var i:int = 0; i < 10; i++) {
				var tmpSprite:Sprite =new Box();
				tmpSprite.name="bbb"+i;
				addChild(tmpSprite);
				tmpSprite.x=100+i*50;
				tmpSprite.y=200;
			}
		}
 
		for (var j:int = 3; j < 7; j++) {
			var tmpSprite:Sprite=getChildByName("bbb"+j);
			tmpSprite.x+=100;
		}
	}
}

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

Регистрация: Jun 2006
Сообщений: 400
Код AS3:
package {
 
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends MovieClip {
 
		public var tmpSprite:Sprite;//обявили раз
 
		public function Main() {
 
			for (var i:int = 0; i < 10; i++) {
				var tmpSprite:Sprite =new Box();//объявили 2
				tmpSprite.name="bbb"+i;
				addChild(tmpSprite);
				tmpSprite.x=100+i*50;
				tmpSprite.y=200;
			}
		}
 
		for (var j:int = 3; j < 7; j++) {
			var tmpSprite:Sprite=getChildByName("bbb"+j);//объявили 3
			tmpSprite.x+=100;
		}
	}
}
tmpSprite объявите где нибудь в одном месте.

Старый 02.06.2010, 17:31
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 7  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Действительно. Поправил. Оставил только в одном месте. Но не помогло. Наоборот - вывалилась целая куча ошибок.

1120: Access of undefined property tmpSprite.
1180: Call to a possibly undefined method getChildByName.
1120: Access of undefined property j.
1120: Access of undefined property tmpSprite.
1120: Access of undefined property tmpSprite.
1120: Access of undefined property j.
1120: Access of undefined property j.


Прикрепляю на всякий случай исходник.
Вложения
Тип файла: zip test.zip (6.4 Кб, 37 просмотров)

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

Регистрация: Jun 2006
Сообщений: 400
Код AS3:
package {
 
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends MovieClip {
 
		var tmpSprite:MovieClip;
 
		public function Main() {
 
			for (var i:int = 0; i < 10; i++) {
				tmpSprite =new Box();
				tmpSprite.name="bbb"+i;
				addChild(tmpSprite);
				tmpSprite.x=100+i*50;
				tmpSprite.y=200;
			}
 
			var tmpBob:DisplayObject;
			for (var j:int = 3; j < 7; j++) {
				tmpBob = getChildByName("bbb"+j);
				tmpBob.x+=100;
 
		    }
 
		}
 
	}
}

Старый 02.06.2010, 17:50
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 9  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Спасибо. Работает. Полез вчитываться.

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

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

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


 


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


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