Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как изменить цвет текста компонента List? (http://www.flasher.ru/forum/showthread.php?t=129797)

nataly_1 10.09.2009 11:08

Как изменить цвет текста компонента List?
 
Подскажите пожалуйста как изменить цвет текста компонента List?

Партизан 10.09.2009 11:37

Ищите класс CellRenderer, в нем есть ссылка на TextField

nataly_1 10.09.2009 11:51

Делаю так: захожу в библиотеу, потом в Component Asserts, потом в CellRenderer,
а там редактируется только цвет ячеек. Подскажите пожалуйста как там найти Text Field?

Партизан 10.09.2009 12:42

Код AS3:

 
 
myList.setStyle('cellRenderer', Renderer); // Класс ниже;
 
/**
* Класс Renderer
*/

 
package
{
        import fl.controls.listClasses.CellRenderer;
    import fl.controls.listClasses.ICellRenderer;
 
        import flash.text.TextFormat;
 
    public class Renderer extends CellRenderer{ 
 
        public function Renderer() {
                        super();
                        var tf:TextFormat = new TextFormat();
                        tf.color = 0xFF0000;
                        setStyle("textFormat",tf);
        }       
 
    }
}


nataly_1 10.09.2009 16:02

Огромное спасибо! Получилось.

LA_ 17.09.2009 23:18

подскажите, пожалуйста, можно ли аналогичным способом поменять цвет текста одного элемента list? а цвет фона одного элемента?

Партизан 17.09.2009 23:41

можно. но тут нужно будет учитывать индексы колонки и ряда ячейки. Все это делается в CellRenderer

LA_ 18.09.2009 10:09

а как в функции Renderer получить ряд ячейки?

Партизан 18.09.2009 12:07

Код AS3:

import fl.controls.listClasses.CellRenderer;
import fl.controls.List;
import fl.data.DataProvider;
import fl.events.ListEvent;
import flash.display.Sprite;
import flash.events.Event;
 
var dp:DataProvider = new DataProvider();
var totalEntries:Number=42;
var i:Number;
for (i=0; i<totalEntries; i++) {
        var dt={label:"Math.random(): "+Math.random(),data:null};
        if (i==4) {
                dt.setColor=true;
        }
        dp.addItem( dt);
}
 
var myList:List = new List();
myList.setSize(300,300);
 
myList.setStyle('cellRenderer', Renderer);
myList.dataProvider=dp;
 
addChild(myList);
 
 
 
 
package
{
    import fl.controls.LabelButton;
    import fl.controls.listClasses.ICellRenderer;
        import fl.controls.listClasses.CellRenderer;
    import fl.controls.listClasses.ListData;
        import flash.display.Shape;
        import flash.text.TextField;
 
    public class Renderer extends CellRenderer implements ICellRenderer {
        public function Renderer() {
                }
 
        override public function set listData(newListData:ListData):void {
            super.listData = newListData;
 
        }
 
        override public function get listData():ListData {
            return _listData;
        }
 
        override public function set data(newData:Object):void {
            _data = newData;
                          if (newData.setColor != undefined) {
                                //Меняем стиль ячейки
                                setStyle("upSkin", CellBackgr);                                 
                          }else {
                                // здесь задаем стандартный, иначе некоторые ячейки не обновятся.
                                          setStyle("upSkin", CellRenderer_upSkin);
                                }
        }
 
      override  public function get data():Object {
            return _data;
        }
    }
 
 
 
}
 
import flash.display.LineScaleMode;
import flash.display.Shape
class CellBackgr extends Shape {
 
                public function CellBackgr() {
                        graphics.beginFill(0xFF7700)
                        graphics.drawRect(0, 0, 100, 15);
                        graphics.endFill()
                        }
}

Лучше конечно вместо CellBackgr сделать копию CellRenderer_upSkin и изменить как нужно.

У ListData есть свойство row, можно и к нему привязываться. Но мне кажется удобнее через data. Хотя опять же от задачи зависит.


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

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