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

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

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

Регистрация: Oct 2009
Сообщений: 45
По умолчанию Вращение текстового поля

Всем привет. Только что начал разбираться с AS3 , и возникла такая проблема; создаю текстовое поле, внедряю шрифты и мне надо его плавно повернуть по оси Y на 20, а потом плавно вернуть в исходное состояние. Как это можно реализовать? Спасибо.

Код AS3:
 
var dat:Date = new Date();
 
var tf:TextFormat = new TextFormat();
tf.font = new A_La_Russ().fontName; // указываем шрифт, который хотим использовать в текстовом поле
tf.size = 20; // указываем размер текста
var txtField:TextField = new TextField();
txtField.defaultTextFormat = tf; // указываем форматирование, которое будет использоваться для данного текстового поля
txtField.width = 500; // ширина текстового поля
txtField.height = 350; // высота текстового поля
txtField.x = 125; // положение текстового поля по оси х
txtField.y = 25; // положение текстового поля по оси у
txtField.embedFonts = true; // указываем, что текст должен отображаться с помощью встроенного шрифта
txtField.antiAliasType = AntiAliasType.ADVANCED;
txtField.multiline = true; // текстовое поле должно быть многострочным
txtField.wordWrap = true; // разрешаем перенос по словам
txtField.text = dat.getHours() + " : " + dat.getMinutes() + " : " +dat.getSeconds();
addChild(txtField); // добавляем текстовое поле в список отображения
 
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame (event:Event) {
	txtField.rotationY = +20;
}

Старый 26.07.2013, 08:36
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 2  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Как вариант, немного изменить ваш код:
Код AS3:
// можно добавить пару переменных
var delta:int = 1; // переменная «дельта перемещения»
var maxAngle:int = 20; // максимальный угол поворота
 
// и чуток изменить вашу функцию
function onEnterFrame(event:Event):void
{
		s.rotationY += delta; // прибавляем дельту перемещения
		if (s.rotationY >= maxAngle) // если поворот больше или равен нужному углу
		{
				delta = -delta; // инвертируем дельту перемещения (прибавлялось «1», стало «-1»)
		}
		else if (s.rotationY <= 0) // если поворот меньше или равен
		{
				s.rotationY = 0; // ставим угол в нуль
                removeEventListener(Event.ENTER_FRAME, enterFrameHandler); // удаляем слушатель, чтоб не было боьше передвижения
		}
}
А потом, когда немного освоитесь с AS3, можете поэкспериментировать с твинами или с такими замечательными штуками, как библиотеки, например от GreenSock.
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.

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

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Или можно использовать библиотеку FPTween:
testRotation.swf
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
 
	import fl.transitions.easing.Strong;
 
	import ru.flashpress.tween.anim.FPTween;
	import ru.flashpress.tween.events.FPTweenEvent;
 
	public class testRotation extends Sprite
	{
		private var tween:FPTween;
		public function testRotation()
		{
			this.stage.scaleMode = StageScaleMode.NO_SCALE;
			this.stage.align = StageAlign.TOP_LEFT;
			//
			var textField:TextField = new TextField();
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.defaultTextFormat = new TextFormat('Tahoma', 40);
			textField.text = 'FPTween lib';
			this.addChild(textField);
			textField.x = 100;
			textField.y = 100;
			//
			tween = new FPTween(textField, 'rotationY', Strong.easeOut, 1);
			tween.addEventListener(FPTweenEvent.FINISH, finishHandler);
			//
			this.stage.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private var rot:Number = 0;
		private function clickHandler(event:MouseEvent):void
		{
			tween.start(20, '+20');
		}
 
		private function finishHandler(event:FPTweenEvent):void
		{
			switch (event.state.animationId) {
				case '+20':
					tween.start(0, '-20');
					break;
				case '-20':
					trace('complete');
					break;
			}
		}
	}
}
__________________
FlashPress.ru | Blog

Старый 26.07.2013, 14:31
pekinessik вне форума Посмотреть профиль Отправить личное сообщение для pekinessik Найти все сообщения от pekinessik
  № 4  
Ответить с цитированием
pekinessik

Регистрация: Oct 2009
Сообщений: 45
Первый вариант не трансформируе и не отображает текст вообще. На второй вариант выбивает ошибка: "Монтажный кадр 1, слой "Слой 2", кадр 1, строка 5 1037: Пакеты не могут быть вложенными."

maincode, не могли бы Вы сбросить fla исходник и подтолкнуть в какю сторону двигаться, чтобы трансформация была не по клику, а выполнялась все время циклично?

еще вопрос: во вложенног файле должно поварачиваться время, оно не поворачивается и секунды накладываются друг на друга. Как мне это мсправить? Спасибо.
Вложения
Тип файла: rar AuthortimeSharedAssets.rar (15.7 Кб, 11 просмотров)

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

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
по коду не понятно то вы вообще пытаетесь сделать какой результат необходимо получить?
__________________
FlashPress.ru | Blog

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

Регистрация: Oct 2009
Сообщений: 45
мне надо, чтобы часы искажались туда-обратно, как у Вас в примере, только не по клику, а чтобы все время искажение было (циклично)

Старый 27.07.2013, 10:26
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 7  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Код AS3:
import flash.utils.Timer;
import flash.events.TimerEvent;
import ru.flashpress.tween.anim.FPTween;
import ru.flashpress.tween.events.FPTweenEvent;
import fl.transitions.easing.Strong;
import fl.transitions.easing.Regular;
 
var txtField:TextField = new TextField();
var tf:TextFormat = new TextFormat();
tf.font = new A_La_Russ().fontName;
tf.size = 40;
txtField.defaultTextFormat = tf;
txtField.width = 500;
txtField.height = 350;
txtField.x = 125;
txtField.y = 25;
txtField.embedFonts = true;
txtField.antiAliasType = AntiAliasType.ADVANCED;
 
txtField.multiline = true;
txtField.wordWrap = true;
addChild(txtField);
 
 
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
 
function timerHandler(event:TimerEvent):void
{
	tween.start(20, '+20');
 
}
 
 
var tween:FPTween = new FPTween(txtField, 'rotationY', Strong.easeIn, 0.4);
tween.addEventListener(FPTweenEvent.FINISH, finishHandler);
 
function finishHandler(event:FPTweenEvent):void
{
	switch (event.state.animationId)
	{
		case '+20' :
			var dat:Date = new Date();
			txtField.text = dat.getHours() + " : " + dat.getMinutes() + " : " + dat.getSeconds();
			tween.start(0, '-20');
			break;
		case '-20' :
			break;
	}
}
Не забудьте подключить либу FPTween.swc (в архиве). Подробную информацию(asdoc и примеры использования) о библиотеке FPTween можно посмотреть здесь.
testTimer.swf   (8.5 Кб)

testTimer.zip
Вложения
Тип файла: swf testTimer.swf (8.5 Кб, 79 просмотров)
__________________
FlashPress.ru | Blog

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

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

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


 


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


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