2013-05-17 2 views
0

Привет, я просмотрел веб-страницы и эту веб-страницу для ответа, но не могу найти решение для своей проблемы. Я создал эффект пишущей машинки. Он отображается через динамическое текстовое поле (tekst_txt). То, что я хотел бы достичь, - это использовать html-теги для изменения шрифта конкретного слова на полужирный или курсив, просто включив, например, < b> и </b>, но я не могу это потянуть. Я бы очень признателен за некоторые советы.Объединение appendText и htmlText для динамического текстового поля в AS3

Это код, который отображается в первом кадре (текстовое поле не существует на этом фрейме): import flash.events.MouseEvent;

stop(); 

var tekst:String = ""; 
var i:uint = 0; 

var licznik:Timer = new Timer(20); 

tekst_txt.htmlText = tekst_txt.text; 


stage.addEventListener(MouseEvent.CLICK, klikaj); 
function klikaj(event:MouseEvent):void 
{ 
if (licznik.running == true) 
{ 

    tekst_txt.htmlText = tekst; 
    licznik.stop(); 
} 
else if (licznik.running == false || licznik == null) 
{ 
    nextFrame(); 
    tekst_txt.text = ""; 

} 
} 

И это код из следующего кадра (текстовое поле уже существует в этой системе):

import flash.events.MouseEvent; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
stop(); 
tekst="Tekst1Tekst1<i>Tekst1</i>Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1"; 
licznik.start(); 
licznik.addEventListener(TimerEvent.TIMER, odpalaj); 
function odpalaj(e:TimerEvent):void 
{ 
//tekst_txt.htmlText = tekst_txt.text; 
tekst_txt.appendText(tekst.charAt(i)); 
//tekst_txt.htmlText=tekst_txt.text; 
i++; 
if (i >= tekst.length) 
{ 
    licznik.stop(); 
} 
} 

ответ

0

Проблема вы столкнулись в том, что любая форма HTML форматирования будет принимать более 1 символ для описания , поэтому, когда вы пытаетесь сделать этот символ анимации по характеру, вы действительно просто устанавливаете сырую HTML-разметку в текст.

Это может показаться немного грязный, но вот что-то вы можете попробовать ...

Вы бы создать временную текстовое поле и установить весь текст HTML-разметки в его HTMLText значение первого, то вы можете getTextFormat, чтобы скопировать форматирование для каждого символа при добавлении ... это позволяет Flash обрабатывать html для вас.

import flash.events.MouseEvent; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 

stop(); 

tekst="Tekst1Tekst1<i>Tekst1</i>Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1"; 

// shove your html markup text into the htmlText of a textfield 
// this allows Flash to deal with parsing the html 
var myTextField:TextField = new TextField(); 
myTextField.htmlText = tekst; 

licznik.start(); 
licznik.addEventListener(TimerEvent.TIMER, odpalaj); 

function odpalaj(e:TimerEvent):void 
{ 
    // get the text directly from the temp textfield 
    // you want to do this because it will have already processed the html markup 
    // and will give you the correct indexes and length of your text 
    tekst_txt.appendText(myTextField.text.charAt(i)); 

    // copy the textformat 
    var format:TextFormat = myTextField.getTextFormat(i, i+1); 
    tekst_txt.setTextFormat(format, i, i+1); 

    i++; 
    if (i >= tekst.length) 
    { 
     licznik.stop(); 
    } 
} 
+0

Звучит хорошо. Я попробую. Большое вам спасибо за советы. – aya9

+0

Это работает. Ницца @ Каушал. Вещь находится на следующем кадре, где у меня есть: 'code'import flash.events.MouseEvent; импорт flash.utils.Timer; импорт flash.events.TimerEvent; stop(); tekst = "tekst2 tekst2tekst2tekst2"; i = 0; licznik.start(); 'code' Он по-прежнему показывает текст из предыдущего кадра. – aya9

+0

, когда вы говорите следующий кадр, я предполагаю, что мы говорим о фрейме 3 ... не возвращаясь к кадру 1? –

Смежные вопросы