Просмотр полной версии : зигзаг забивка текста
Есть 2 варианта стечения обстоятельств - либо 3 текстовых поля либо 43... как говорится. Важно другое алгоритм . Что нужно получить :
0 0 33 1
1 7
15 18 20
Тоесть изначально все пусто. Приходят данные например 1:3 значит нужно отобразить 1 в 3 поле, затем 2:2 нужно отобразить 2ку во втором поле на клетку дальше чем предидущее и т.д. Когда все поля заполнены до предела первые значения полей удаляются , при приходе новых значений заполняются последние и т.д.
Что вы посоветуете , как лучше сделать в 3 поля или в 43 ? и какой алгоритм предпринять?
Cornford
15.10.2011, 22:22
чето нече не ясно
что именно не ясно? Ну я привел пример как выглядет текст в 3х идущих друг за другом полях. Тоесть каждое новое значение записывается в одно из 3х полей, причем на 1 символ больше чем в предидущем.
Если смотреть в коде то
tf1.text = '1'
tf2.text = ' 55';
tf3.text = ' 100';
.................... цикл прошел
tf1.text = '1 ';
tf2.text = ' 55 33';
tf2.text = ' 55 33 1';
tf3.text = ' 100 11';
carrotoff
15.10.2011, 23:39
Если бы тут не было таких больших чисел, то я подумал бы, что это табулатура для балалайки.:)
А по сути: я бы сделал бы либо 3 массива, либо 1 двумерный массив. Новое значение записывал бы в один из массивов, а в остальные Ну и когда нужно было бы выводить, просто пробежался бы по массивам и вывел содержимое каждого из них в три текстовых поля.
В общем, я за 3 текстовых поля. Но всё равно странная задача.
Я бы вообще обошелся без текстовых полей, а рисовал в битмапе все символы.
в битмапе? ммм ? как это?
carrotoff
Тут еще дело омрачается тем, что цифры могут быть от 0 до 99, и поэтому непонятно когда поле закончилось и нужно стирать посл символ
crazyone
16.10.2011, 00:52
Если я правильно понял задачу, я бы заюзал TextFormat.tabStops и разделял цифры табуляцией.
crazyone расскажите поподробнее!? ниразу не испольщовал этого свойства. как оно работает, точнее как его применить к моему вопросу?
crazyone
16.10.2011, 13:09
Кушайте на здоровье:
package com.ds.test{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
/**
* ...
* @author DoctorSTaL
*/
public class Main extends Sprite {
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// Переменные
var tf1:TextField;
var tf2:TextField;
var tf3:TextField;
var tfArr:Array;
var tfrmt:TextFormat;
var colWidth:Array = [40, 50];
var lastTabstop:Number = 0;
var tabStops:Array = [];
var i:int;
// Создаем поля
tf1 = new TextField();
tf2 = new TextField();
tf3 = new TextField();
tf1.autoSize = tf2.autoSize = tf3.autoSize = TextFieldAutoSize.LEFT;
tfArr = [tf1, tf2, tf3];
this.addChild(tf1).y = 40;
this.addChild(tf2).y = 60;
this.addChild(tf3).y = 80;
tfrmt = new TextFormat();
// Тут начинается магия
function addText(tfInd:Number, text:String):void {
// добавляем текст в нужное поле
tfArr[tfInd].appendText(text);
// увеличиваем размер отступа табуляции на нужную ширину
// Note: она считается от начала текстового поля,
// а не от предыдущего отступа
lastTabstop += colWidth[Math.min(colWidth.length, text.length) - 1];
// добавляем его в TextFormat
tabStops.push(lastTabstop);
tfrmt.tabStops = tabStops;
// всем полям добавляем табуляцию и применяем формат с актуальными отступами табуляции
for (var j:int = 0; j < tfArr.length; j++) {
tfArr[j].appendText("\t");
tfArr[j].setTextFormat( tfrmt );
}
}
// Finnaly, заполняем поля змейкой!
i=20
while (--i>0) {
addText(int(Math.random() * 3), int(Math.random() * 99));
}
}
}
}
Я бы вообще обошелся без текстовых полей, а рисовал в битмапе все символы.
Одно текстовое поле. Назначаем ему текст, затем bitmapData.draw(tf);
Вот собственно и все.
Одно текстовое поле. Назначаем ему текст, Какой текст а ? причем тут битмапдата ваще
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.