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

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

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

Регистрация: Aug 2005
Сообщений: 64
По умолчанию Copy Motion as ActionScript 3.0 во Flash CS3

Проблема в следующем.
Если на кадре пишу применение полученого Motion всё отлично работает, вот код:
Код:
import fl.motion.Animator;
var motion2:Motion2=new Motion2();
this.addChild(motion2);

var motion2_xml:XML = <Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
	<source>
		<Source frameRate="12" x="12.25" y="6.5" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="s1">
			<dimensions>
				<geom:Rectangle left="0" top="0" width="24.5" height="13"/>
			</dimensions>
			<transformationPoint>
				<geom:Point x="0.5" y="0.5"/>
			</transformationPoint>
		</Source>
	</source>

	<Keyframe index="0">
		<tweens>
			<SimpleEase ease="0"/>
		</tweens>
	</Keyframe>

	<Keyframe index="29" x="130"/>
</Motion>;

var motion2_animator:Animator = new Animator(motion2_xml, motion2);
motion2_animator.play();
Если же я делаю Document Class и впишу туда данный код по всем правилам срабатывает как-будто только анимация одного кадра, вот код:
Код:
package {
	import flash.display.*;
	import flash.events.*;
	import fl.motion.Animator;
	import fl.motion.Motion;
	public class Temp extends MovieClip{
		public var motion2_xml:XML;
		public var motion2:Motion2;
		public function Temp(){
			trace("Temp");
			motion2_xml=<Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
				<source>
					<Source frameRate="12" x="12.25" y="6.5" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="s1">
						<dimensions>
							<geom:Rectangle left="0" top="0" width="24.5" height="13"/>
						</dimensions>
						<transformationPoint>
							<geom:Point x="0.5" y="0.5"/>
						</transformationPoint>
					</Source>
				</source>
			
				<Keyframe index="0">
					<tweens>
						<SimpleEase ease="0"/>
					</tweens>
				</Keyframe>
			
				<Keyframe index="29" x="130"/>
			</Motion>;
			motion2=new Motion2();
			this.addChild(motion2);
			motion2.addEventListener(MouseEvent.CLICK, onClick);
		}
		public function onClick(e:MouseEvent):void{
			trace("click");
			var motion2_animator:Animator = new Animator(this.motion2_xml, this.motion2);
			motion2_animator.play();
		}
	}
}
В чем проблема или что я делаю неверно?

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

Регистрация: Sep 2002
Сообщений: 30,787
Исходник в студию.

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

Регистрация: Aug 2005
Сообщений: 64
А вот исходник
http://newman.at.tut.by/temp.zip

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

Регистрация: Sep 2002
Сообщений: 30,787
Фиг его знает, чего он не хочет ехать, пришлось ручками заставить:
Код:
package {
	import flash.display.*;
	import flash.events.*;
	import fl.motion.*;
	[SWF(width="910", height="650", backgroundColor="#cccccc", frameRate="12")]
	public class Temp extends Sprite{
		private var animator:Animator;
		private var motion:Motion;
		public function Temp(){
			var motion2_xml:XML =<Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
							<source>
								<Source frameRate="12" x="12.25" y="6.5" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="motion2">
									<dimensions>
										<geom:Rectangle left="0" top="0" width="24.5" height="13"/>
									</dimensions>
									<transformationPoint>
										<geom:Point x="0.5" y="0.5"/>
									</transformationPoint>
								</Source>
							</source>
						
							<Keyframe index="0">
								<tweens>
									<SimpleEase ease="0"/>
								</tweens>
							</Keyframe>
						
							<Keyframe index="29" x="130"/>
						</Motion>;
			var motion2:Motion2 = new Motion2();
			motion2.name = 'motion2';

			animator = new Animator(motion2_xml);
			motion = new Motion(motion2_xml);
			animator.target = motion2;
			this.addChild(motion2);
			
			motion2.addEventListener(MouseEvent.CLICK, onClick);
		}
		public function onClick(e:MouseEvent):void{
			addEventListener(Event.ENTER_FRAME,enterFrameHandler);
		}
		private function enterFrameHandler(e:Event):void {
			if (animator.time<motion.duration) {
				animator.time++;
			} else {
				removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
			}
		}
	}
}

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

Регистрация: Aug 2005
Сообщений: 64
Спасибо!!!!
Попробовал вот так, тоже работает
Код:
package {
	import flash.display.*;
	import flash.events.*;
	import fl.motion.*;
	[SWF(width="910", height="650", backgroundColor="#cccccc", frameRate="12")]
	public class Temp extends Sprite{
		private var animator:Animator;
		private var motion:Motion;
		public function Temp(){
			var motion2_xml:XML =<Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
							<source>
								<Source frameRate="12" x="12.25" y="6.5" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="motion2">
									<dimensions>
										<geom:Rectangle left="0" top="0" width="24.5" height="13"/>
									</dimensions>
									<transformationPoint>
										<geom:Point x="0.5" y="0.5"/>
									</transformationPoint>
								</Source>
							</source>
						
							<Keyframe index="0">
								<tweens>
									<SimpleEase ease="0"/>
								</tweens>
							</Keyframe>
						
							<Keyframe index="29" x="130"/>
						</Motion>;
			var motion2:Motion2 = new Motion2();
			motion2.name = 'motion2';

			animator = new Animator(motion2_xml);
			motion = new Motion(motion2_xml);
			animator.target = motion2;
			this.addChild(motion2);
			
			motion2.addEventListener(MouseEvent.CLICK, onClick);
		}
		public function onClick(e:MouseEvent):void{
			animator.play();
		}
	}
}

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

Регистрация: Sep 2002
Сообщений: 30,787
Тогда motion не нужен.

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

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
А если у меня начальные и конечные координаты хранятся в переменных, как их подставить в motion_XML ?

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

Регистрация: Sep 2002
Сообщений: 30,787
Отредактировать или собрать XML в рантайме.

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

Регистрация: Nov 2006
Сообщений: 155
Извиняюсь, что пишу в столь древней теме, но вчера долго долбался с этой же проблемой.

Оказалось все дело в том, что объект animator объявляется в методе. В этом случае, он будет играть только один кадр, поскольку скорее всего ссылка на объект убивается. Поэтому animator нужно сделать параметром документ класса.
Надеюсь, кому-то поможет
__________________
Нет ничего невозможного

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

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

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


 


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


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