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

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

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

Регистрация: Jun 2014
Сообщений: 23
По умолчанию Текст за курсором на AS3

Всем приветик!
Прошу прощения,что пишу в это раздел..
Но у меня не вопрос,а скорее просьба...
Мне очень нужно записать этот код на AS3..
Сама не могу справиться..Не хватает знаний..
Буду очень благодарна за помощь..

Код AS1/AS2:
Text = "Осень золотая";
 letters = Text.split("");
//Выше указывается текст который будет анимироваться.
 
letterformat = new TextFormat();
 letterformat.font = "Trebuchet MS";
 letterformat.align = "left";
 letterformat.size = "14";
 letterformat.color = 0x9933000;
 letterformat.bold = true;
 
 // Здесь указываются такие параметры текста как размер, шрифт, центрирование, цвет и т.д. 
 
 spacing = 10;
 speed = 4;
 
 // Указываем дистанцию между буквами и скорость анимации.
var LTR = 0;
while (LTR < letters.length)
{
    mc = _root.createEmptyMovieClip(LTR + "l", LTR);
    mc.createTextField(letters[LTR] + "t", LTR, LTR * spacing, 20, 40, 40);
    with (mc[letters[LTR] + "t"])
    {
        text = letters[LTR];
        setTextFormat(letterformat);
        selectable = false;
    } // End of with
    if (LTR)
    {
        mc.prevClip = _root[LTR - 1 + "l"];
        mc.onEnterFrame = function ()
        {
            this._x = this._x + (this.prevClip._x - this._x + 5) / speed;
            this._y = this._y + (this.prevClip._y - this._y) / speed;
        };
    }
    else
    {
        mc.onEnterFrame = function ()
        {
            this._x = this._x + (_root._xmouse - this._x + 10) / speed;
            this._y = this._y + (_root._ymouse - this._y) / speed;
        };
    } // end else if
    ++LTR;
} // end while
Вложения
Тип файла: swf Пример.swf (1.1 Кб, 55 просмотров)

Старый 19.09.2014, 14:33
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Елена тут надо конкретно переписывать код, так с наскока не сделать. Ну может кто возьмется. Подождем
__________________
Марк Tween

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

Регистрация: Jun 2014
Сообщений: 23
Цитата:
Сообщение от in4core Посмотреть сообщение
Елена тут надо конкретно переписывать код, так с наскока не сделать. Ну может кто возьмется. Подождем
Спасибо,что откликнулись..)))
Будем подождать..
Мне на самом деле очень нужно..

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Всё что пришло в данный момент в голову. Это класс, реализующий нужный вам эффект.

JelenaTextFlow.as
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.PixelSnapping;
	import flash.display.Sprite;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
 
	/**
	 * ...
	 * @author samana
	 */
	public class JelenaTextFlow extends Sprite
	{
		private var _letters:Vector.<Bitmap>;
		private var _offset:Vector.<Point>;
 
		public var speed:Number; // скорость от 0 до 1.  1-мгновенное перемещение
 
 
		public function spliteText(text:String, speed:Number = 0.3, dist:Number = 0):void
		{
			this.speed = speed;
 
			removeChildren();
 
			_letters = new Vector.<Bitmap>();
			_offset = new Vector.<Point>();
 
			if (text)
			{
				var textFormat:TextFormat = new TextFormat();
				if (dist > 0) textFormat.letterSpacing = dist;
 
				//ВСЕ НЕОБХОДИМЫЕ НАСТРОЙКИ ШРИФТА, НАПРИМЕР
				textFormat.size = 20;
				textFormat.color = 0xFF8000;
				textFormat.bold = true;
 
 
				var tf:TextField = new TextField();
				tf.defaultTextFormat = textFormat;
				tf.autoSize = TextFieldAutoSize.LEFT;
				tf.text = text;
 
				var rect:Rectangle;
				for (var i:int = 0; i < tf.length; i++)
				{
 
					rect = tf.getCharBoundaries(i);
					if ((rect.isEmpty()) || (tf.text.charAt(i) == " "))
					{
						continue
					}
 
					var m:Matrix = new Matrix();
					m.tx = -rect.x;
					m.ty = -rect.y;
 
					var bmd:BitmapData = new BitmapData(rect.width, rect.height, true, 0x00000000);
					var bm:Bitmap = new Bitmap(bmd);
					bmd.draw(tf, m);
					bm.smoothing = true;
					bm.pixelSnapping = PixelSnapping.AUTO;
					// - - - - - - - - - - - -
 
					addChild(bm);
 
					_letters.push(bm);
					_offset.push(new Point(rect.x, rect.y));
 
				}
			}
 
		}
 
 
		public function move(tx:Number, ty:Number):void
		{
			if (_letters)
			{
				_letters[0].x += ((tx + _offset[i].x - _letters[0].x)) * speed;
				_letters[0].y += ((ty + _offset[i].y - _letters[0].y)) * speed;
 
				for (var i:int = 1; i < _letters.length; i++)
				{
					_letters[i].x += (_letters[i - 1].x + (_offset[i].x - _offset[i - 1].x) - _letters[i].x) * speed;
					_letters[i].y += (_letters[i - 1].y + (_offset[i].y - _offset[i - 1].y) - _letters[i].y) * speed;
				}
			}
		}
 
	}
 
}
Использовать так
Main.as
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author samana
	 */
	public class Main extends Sprite
	{
		private var textFlow:JelenaTextFlow;
 
 
		public function Main():void
		{
			//создаём экземпляр класса
			textFlow = new JelenaTextFlow();
			//выполняем метод, который создаёт текст и всё остальное.
			//передаём в параметры - текст, скорость, расстояние между буквами (если нужно)
			textFlow.spliteText(" Мне на самом деле очень нужно. Спасибо,что откликнулись..)))", 0.5, 1);
			//добавляем на сцену
			addChild(textFlow);
 
			//подписываемся на ентерФрейм
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
 
		private function enterFrame(e:Event):void
		{
			//вызываем метод движения букв и передаём те координаты, за которыми нужно двигаться
			textFlow.move(mouseX, mouseY);
		}
 
	}
 
}
removeAfter.swf   (2.3 Кб)
Вложения
Тип файла: swf removeAfter.swf (2.3 Кб, 98 просмотров)

Старый 19.09.2014, 20:34
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 5  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
samana, очень круто!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Gerbert Посмотреть сообщение
samana, очень круто!
Спасибо)

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

Регистрация: Jun 2014
Сообщений: 23
samana,Огромное Вам спасибо!
Хочу уточнить..может вопрос вызовет у Вас улыбку..ну и пусть..)
Я понимаю так,что должна создать документ.fla и поместить его папку с Main.as...
???
А первый код это Вы для примера показали..
???
Уточните,пожалуйста..)

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Чтобы использовать класс JelenaTextFlow, вам надо скопировать весь его код и сохранить с расширением .as, то-есть рядом с вашим fla, должен находится файл JelenaTextFlow.as.

Main класс вам и не обязательно создавать (конечно зависит от структуры вашего проекта), можно и в кадре написать код:
Код AS3:
var textFlow:JelenaTextFlow = new JelenaTextFlow();
textFlow.spliteText("Ваш текст", 0.5);
addChild(textFlow);
 
addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
	textFlow.move(mouseX, mouseY);
}
Но если вы решите всё же сделать по-правильному и не писать в кадрах, тогда вам конечно нужно будет создать и Main.as а так же прописать его имя в поле DocumentClass на панели properties вашего fla, так как Main класс является главным классом приложения в данный момент.

ps.не забудьте сохранять fla после каждого изменения чего либо в нём (добавили класс, дописали строчку кода и т.д) чтобы работало.

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

Регистрация: Jun 2014
Сообщений: 23
Цитата:
Сообщение от samana Посмотреть сообщение
Чтобы использовать класс JelenaTextFlow, вам надо скопировать весь его код и сохранить с расширением .as, то-есть рядом с вашим fla, должен находится файл JelenaTextFlow.as.

Main класс вам и не обязательно создавать (конечно зависит от структуры вашего проекта), можно и в кадре написать код:
Код AS3:
var textFlow:JelenaTextFlow = new JelenaTextFlow();
textFlow.spliteText("Ваш текст", 0.5);
addChild(textFlow);
 
addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
	textFlow.move(mouseX, mouseY);
}
Но если вы решите всё же сделать по-правильному и не писать в кадрах, тогда вам конечно нужно будет создать и Main.as а так же прописать его имя в поле DocumentClass на панели properties вашего fla, так как Main класс является главным классом приложения в данный момент.

ps.не забудьте сохранять fla после каждого изменения чего либо в нём (добавили класс, дописали строчку кода и т.д) чтобы работало.
Мне все же проще сделать не по правильному..написать в кадре код..)
А правильное взять на заметку..)
Спасибо за оперативный ответ и помощь..)

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

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

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


 


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


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