![]() |
|
||||||||||
|
|||||
|
[+4 06.05.14]
|
Есть 2 варианта стечения обстоятельств - либо 3 текстовых поля либо 43... как говорится. Важно другое алгоритм . Что нужно получить :
Тоесть изначально все пусто. Приходят данные например 1:3 значит нужно отобразить 1 в 3 поле, затем 2:2 нужно отобразить 2ку во втором поле на клетку дальше чем предидущее и т.д. Когда все поля заполнены до предела первые значения полей удаляются , при приходе новых значений заполняются последние и т.д. Что вы посоветуете , как лучше сделать в 3 поля или в 43 ? и какой алгоритм предпринять?
__________________
Марк Tween |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 174
|
чето нече не ясно
|
|
|||||
|
[+4 06.05.14]
|
что именно не ясно? Ну я привел пример как выглядет текст в 3х идущих друг за другом полях. Тоесть каждое новое значение записывается в одно из 3х полей, причем на 1 символ больше чем в предидущем.
Если смотреть в коде то
__________________
Марк Tween |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
Если бы тут не было таких больших чисел, то я подумал бы, что это табулатура для балалайки.
![]() А по сути: я бы сделал бы либо 3 массива, либо 1 двумерный массив. Новое значение записывал бы в один из массивов, а в остальные Ну и когда нужно было бы выводить, просто пробежался бы по массивам и вывел содержимое каждого из них в три текстовых поля. В общем, я за 3 текстовых поля. Но всё равно странная задача.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Я бы вообще обошелся без текстовых полей, а рисовал в битмапе все символы.
|
|
|||||
|
Кушайте на здоровье:
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)); } } } } |
|
|||||
|
Цитата:
Вот собственно и все.
__________________
http://www.chessmax.ru |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|