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

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

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

Регистрация: May 2006
Адрес: РБ, Уфа ...
Сообщений: 75
По умолчанию Проблема с while

Хочу сделать зацыкленно плывущий объект на AS3

есть рабочий код на AS2:
Код:
var n:Number = 4;
var i = 0;
while (i < n)
{
    this.attachMovie("cloud", "c" + i, i, {_x: 800 * i, onEnterFrame: function ()
    {
        if (++this._x > 1600)
        {
            this._x = this._x - 800 * n;
        }
    }});
    ++i;
}
пытаюсь переписать его на AS3:
Код:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.display.Sprite;
	
	public class main extends Sprite
	{
		public function main()
		{
			var n:Number = 4;
			var i:Number = 0;
			
			while (i < n)
			{
				var clouds:cloud = new cloud()
				this.addChild(clouds);
				clouds.addEventListener(Event.ENTER_FRAME,enterFrame_handler);
				
			}
			++i;			
		}
		
		private function enterFrame_handler(e:Event):void
		{
			x++;
			if (x > 1600)
	  		{
				x = x - 800 * 4;
    	                 }
		}
	}
}
две проблемы:
1. ругается на то что цикл (while) выполняется слишком долго...
2. как сделать динамическое название переменной в AS3 (как в примере на AS2 "c" + i )...

p.s. может есть проще способ решить эту задачу?

Старый 21.05.2007, 16:51
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. Потому что ++i вне цикла, а не внутри.
2. Задать name у cloud.

з.Ы. Имена классов должны начинаться с прописной буквы, обязательно.

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

Регистрация: May 2006
Адрес: РБ, Уфа ...
Сообщений: 75
1-е спасибо!
2-е не понял ...

Старый 21.05.2007, 17:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
clouds.name = 'cloud'+i;
Потом обращаться через getChildByName.

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

Регистрация: May 2006
Адрес: РБ, Уфа ...
Сообщений: 75
__etc спасибо

решил по моему способом проще... не знаю правильно или нет но работает


Код:
package
{
	import flash.events.*;
	import flash.display.Sprite;
	
	public class main extends Sprite
	{
		public function main()
		{
			var clouds1:cloud = new cloud()
			var clouds2:cloud = new cloud()
			clouds1.x = 0;
			clouds2.x = -800;
			this.addChild(clouds1);
			this.addChild(clouds2);
			clouds1.addEventListener(Event.ENTER_FRAME,enterFrame_handler);
			clouds2.addEventListener(Event.ENTER_FRAME,enterFrame_handler);
			
		}
		private function enterFrame_handler(e:Event):void
		{
			x++;
			if (x == 800) x = 0;
			
		}
	}
}

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

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

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


 


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


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