Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация текстового эффекта (http://www.flasher.ru/forum/showthread.php?t=166294)

Isaac 01.09.2011 13:21

Реализация текстового эффекта
 
Здравсвуйте.
Подскажите пожалуйста.
Есть код
Код AS3:

import flash.events.Event;
import flash.text.TextField;
 
var myString:String = "Hello World !!!";
var myArray:Array = myString.split("");
addEventListener(Event.ENTER_FRAME, frameLooper);
 
function frameLooper(event:Event):void
{
        if(myArray.length > 0)
        {
                tf.appendText(myArray.shift());
        }else
        {
                removeEventListener(Event.ENTER_FRAME, frameLooper);
        }
}

Проблема в том, что tf - это имя объекта(текстового поля), который я создаю во флеш на сцене, а как мне сделать этот эффект так, что объект создавался в as3 ?

illuzor 01.09.2011 13:23

Создавайте, как любую другую переменную и добавляйте на сцену
Почитайте в справке про TextField и TextFormat

Isaac 01.09.2011 13:28

Цитата:

Сообщение от illuzor (Сообщение 1027425)
Создавайте, как любую другую переменную и добавляйте на сцену
Почитайте в справке про TextField и TextFormat

Я знаю про текстФиел и текст Формат
Вы имеете в виду так ?
Код AS3:

import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
 
var txtFrt:TextFormat = new TextFormat();
txtFrt.font = "Arial";
txtFrt.size = 17;
txtFrt.color = 0xFFFFFF;
 
var txt:TextField = new TextField();
txt.x = txt.y = 100;
txt.text = "Hello World !!!";
txt.defaultTextFormat = txtFrt;
addChild(txt);
 
//var myString:String = "Hello World !!!";
var myArray:Array = txt.split("");
addEventListener(Event.ENTER_FRAME, frameLooper);
 
function frameLooper(event:Event):void
{
        if(myArray.length > 0)
        {
                txt.appendText(myArray.shift());
        }else
        {
                removeEventListener(Event.ENTER_FRAME, frameLooper);
        }
}

Но флеш выдает ошибку
Код AS3:

ReferenceError: Error #1065: Переменная TLFTextField не определена.

Что это может значить, подск4ажите пожалуйста

Добавлено через 14 минут
Вот переписал, все работает
Код AS3:

var _letters:Array = [];
var _counter:int = 0;
 
var format : TextFormat = new TextFormat();
format.size = 18;
format.font = "Arial";
format.bold = true;
format.color = 0x00000;
 
var _textField : TextField = new TextField();
_textField.width = 400;
_textField.height = 200;
_textField.selectable = false;
_textField.wordWrap = true;
_textField.defaultTextFormat = format;
_textField.x = _textField.y =10;
addChild(_textField);
 
 
var _text = "Hello World"; 
_letters = _text.split('');
 
addEventListener(Event.ENTER_FRAME, Write, false, 0, true);
 
 
 
function Write(e:Event):void
{
  if (_counter < _letters.length)
  {
        _textField.appendText(_letters[_counter]);
        _counter++;
  }
}

Но проблема в следующем: если мне нужно выводить несколько разных текстовых полей с определенным интервало, как мне это сделать?

illuzor 01.09.2011 13:44

Что значит с интервалом?
Несколько текстовых полей можно создать через цикл

Isaac 01.09.2011 13:57

Цитата:

Сообщение от illuzor (Сообщение 1027430)
Что значит с интервалом?
Несколько текстовых полей можно создать через цикл

Напирмер имеем 3-4 текстовых поля(разных) и когда запустилось первое, по-его окончанию - удаляем его и запускаем второе и т.д. пока все поля не проиграют

illuzor 01.09.2011 14:04

можно сложить текстовые поля в массив, отслеживать, когда закончится эффект, плюсуем счётчик, удаляем текстовое поле, добавляем новое из массива.


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

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