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

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

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

Регистрация: Feb 2012
Сообщений: 47
По умолчанию Анимация исчезновения

мне нужно чтоб текст (nam) исчезал через каждые 0,01 секунды я набросал вот такой код:
Код AS3:
package p {
	import flash.display.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class DrawName extends MovieClip {
		private var nam;
		private var cont:Sprite = new Sprite();
		private var timer;
		public function DrawName() {
		}
 
		public function drawNam(){
			trace('Класс, анимирующий название модуля');
			this.nam = new CreateButton('Кожа', 30, 0xff0000, "Times New Roman", true, false, 90, 60, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			this.cont.addChild(nam);
			this.cont.alpha = 1;
			addChild(cont);
			this.timer = new Timer(100, 0);
			this.timer.addEventListener(TimerEvent.TIMER, timerListener);
			this.timer.start();
		}
		private function timerListener(e:TimerEvent) {
			trace(this.cont.alpha);
			this.cont.alpha -= 0.01;
			addChild(cont);
		}
	}
}
Добавлено через 49 секунд
я с таймером еще не встречался поэтому сразу извините если где-то что-то глупо

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
А что не работает? Или это урок? Если так, то слабенький вышел, но все равно похвально.
По сабжу. Во-первых 0,01 секунда - это 10 мс, а не 100, как у вас. Но выставлять такие маленькие таймеры, на сколько помню, даже адоб не рекомендует. Таймер вечен, а должен останавливаться.
Еще не понятно что такое CreateButton. Ну и название класса не совсем вяжется с его потенциальными возможностями.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Feb 2012
Сообщений: 1,540
Немного поправлю:
Код AS3:
package p {
	import flash.display.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class DrawName extends MovieClip {
		private var nam;
		private var cont:Sprite = new Sprite();
		private var timer;
		public function DrawName() {
		}
 
		public function drawNam(){
			this.nam = new CreateButton('Кожа', 30, 0xff0000, "Times New Roman", true, false, 90, 60, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			this.cont.addChild(nam);
			this.cont.alpha = 1;
			addChild(cont);
			this.timer = new Timer(10, this.cont.alpha/0.01);
			this.timer.addEventListener(TimerEvent.TIMER, timerListener);
			this.timer.start();
		}
		private function timerListener(e:TimerEvent) {
			this.cont.alpha -= 0.01;
			addChild(cont);
		}
	}
}
Твин не должен быть вечен (в таких случаях).

Старый 08.03.2012, 20:10
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 4  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
CraeateButton отвечает за создание кнопок(что чаще) и текста. И не надо ничего больше про это. Ограничение на таймер поставил ничего не появилось. И кстати пробовал и раз в секунду делать тож ничего. добавлял updateAfterEvent все равно ничего

Добавлено через 1 минуту
вот что сейчас у меня
Код AS3:
package p {
	import flash.display.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class DrawName extends MovieClip {
		private var nam;
		private var cont:Sprite = new Sprite();
		private var timer;
		public function DrawName() {
		}
 
		public function drawNam(){
			trace('Класс, анимирующий название модуля');
			this.nam = new CreateButton('Кожа', 30, 0x000000, "Times New Roman", true, false, 90, 60, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			cont.addChild(nam);
			cont.alpha = 1;
			addChild(cont);
			timer = new Timer(50, 0);
			timer.addEventListener(TimerEvent.TIMER, timerListener);
			timer.start();
		}
		public function timerListener(e:TimerEvent) {
			if(cont.alpha > 0) {
				cont.alpha -= 0.01;
				e.updateAfterEvent();
			} else {
				timer.stop();
			}
		}
	}
}

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

Регистрация: Feb 2012
Сообщений: 1,540
Лучше делать как я сказал, так и затрат на if/else будет меньше.

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

Регистрация: Feb 2012
Сообщений: 47
ок щас попробую

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

Регистрация: Feb 2012
Сообщений: 1,540
Ты имел ввиду, что у тебя не работает?
Должно работать.

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

Регистрация: Feb 2012
Сообщений: 47
ничего...(((

Добавлено через 56 секунд
у меня ничего не появляется хотя надпись изначально созданная сначала должна появиться а потом плавно исчезнуть

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

Регистрация: Feb 2012
Сообщений: 1,540
Попробуй так:
Код AS3:
package p {
	import flash.display.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class DrawName extends MovieClip {
		private var nam:CreateButton;
		private var cont:Sprite = new Sprite();
		private var timer:Timer;
		public function DrawName() {
		}
 
		public function drawNam(){
			this.nam = new CreateButton('Кожа', 30, 0xff0000, "Times New Roman", true, false, 90, 60, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			this.cont.addChild(nam);
			this.cont.alpha = 1;
			addChild(cont);
			this.timer = new Timer(100, this.cont.alpha/0.05);
			this.timer.addEventListener(TimerEvent.TIMER, timerListener);
			this.timer.start();
		}
		private function timerListener(e:TimerEvent) {
			this.cont.alpha -= 0.05;
			addChild(cont);
		}
	}
}
Если ничего, то попробуй вместо строчки:
Код AS3:
addChild(cont);
Написать:
Код AS3:
setChildIndex(cont, numChildren-1);

Старый 08.03.2012, 20:19
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 10  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
а может через setInterval как нибудь попробовать

Добавлено через 2 минуты
после добавления сетчилдиндекс выскочила ошибка RangeError: Error #2006: The supplied index is out of bounds.

Добавлено через 5 минут
вот после всех изменений
Код AS3:
package p {
	import flash.display.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class DrawName extends MovieClip {
		private var nam;
		private var cont:Sprite = new Sprite();
		private var timer;
		public function DrawName() {
		}
 
		public function drawNam(){
			this.nam = new CreateButton('Кожа', 30, 0xff0000, "Times New Roman", true, false, 90, 60, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			this.cont.addChild(nam);
			this.cont.alpha = 1;
			addChild(cont);
			this.timer = new Timer(100, this.cont.alpha/0.05);
			this.timer.addEventListener(TimerEvent.TIMER, timerListener);
			this.timer.start();
		}
		private function timerListener(e:TimerEvent) {
			this.cont.alpha -= 0.05;
			addChild(cont);
		}
	}
}

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

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

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


 


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


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