Статті, які підпадають під теґ ‘TextField’

TextField, що створений у Flash IDE

, 2, 2008

Маємо:

  1. Створений руцями TextField, з ім’ям fleaT, та синього кольору (#0000FF);
  2. Код у першому кадрі:
    /*
    removeChildAt(0); // deleting the texfield created by hands
    fleaT = new TextField();
    addChild(fleaT);
    */
    
    var tf:TextFormat = new TextFormat();
    tf.color = 0xFF0000;
    fleaT.setTextFormat(tf);
    fleaT.defaultTextFormat = tf;
    
    fleaT.textColor = 0xFF0000;
    
    fleaT.htmlText = "TextField<font color='#00FF00'> flea</font>";

Якби це було загадкою, і треба було відповісти яким кольором будуть слова у текстовому полі, то я б відповів, що слово “TextField” буде червоним (#FF0000), а “flea” – зеленим (#00FF00). Але ця відповідь буде вірною, якщо перші три рядки не будуть закоментовані (якщо TextField буде створено за допомогою ActionScript). А без перших рядків слово “TextField” буде синього кольору (#0000FF), тобто тим кольором який ми призначили руцями.

TextField.appendText() набагато швидше простого додавання

, 6, 2007

Ви, напевно, помічали попередження Flash IDE “Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.”, коли Ви намагались додати текст таким чином:

tf.text = tf.text + "some text";
// або tf.text += "some text";

Так от, він не бреше :)

var tf:TextField = new TextField();
tf.textColor = 0x000000;
tf.width = stage.stageWidth;
tf.multiline = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.wordWrap = true;
addChild(tf);
tf.text = "";
var textToAppend:String = "Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.";
var iterations:uint = 200;
var i:uint;

var startTime:int = getTimer();

for(i=0; i<iterations; i++){
	tf.text = tf.text + textToAppend;
}
trace(getTimer() - startTime); // 1313

tf.text = "";
startTime = getTimer();

for(i=0; i<iterations; i++){
	tf.appendText(textToAppend);
}
trace(getTimer() - startTime); // 92

Як видно з трейсів, функція appendText() робить свою справу більш ніж в 14 разів швидше! Хоча, якщо зменшити прорахунки на wordWrap, то результат буде – більш ніж в два рази. Таке станеться, наприклад, якщо ви додасте, в наведеному вище прикладі, “\n” до змінної textToAppend. Але це теж не погано ;)