Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Class и ByteArray (http://www.flasher.ru/forum/showthread.php?t=148335)

alatar 28.12.2010 15:58

Цитата:

iflamberg, я новичок во Flex и подобный пример тяжёл для меня в понимании.
SuperImage, по-сути, тот же Image, только с кэшем для уже загруженного контента. Используется так же как Image.

zorexundra 29.12.2010 11:11

alatar, спасибо за помощь!
Проблему "моргания" удалось решить добавлением свойства Loader.content:Bitmap (в AS3LCR это свойство почему-то обозначено типом DisplayObject) методом addChild пользовательского itemRenderer. Правда теперь стал актуальным вопрос производительности этого метода, но это уже другая тема...

Всё-таки любопытно, что это за тип встраиваемого изображения Class? И почему тотже Loader.content нельзя привести к этому типу?

alatar 29.12.2010 11:23

Цитата:

в AS3LCR это свойство почему-то обозначено типом DisplayObject
Потому, что Loader работает не только с картинками, ни и с флешками, которые привести к Bitmap не получится.
Цитата:

Всё-таки любопытно, что это за тип встраиваемого изображения Class? И почему тотже Loader.content нельзя привести к этому типу?
Это не тип встраемового изображения. Это тип Class и означает он, что переменная содержит ссылку именно на класс, а не на экземпляр класса, коим является содержимое Loader.content. Например:
Код AS3:

var spriteClass:Class = Sprite; //ссылка на класс Sprite
var sprite:Sprite = new Sprite(); //ссылка на экземпляр класса
var otherSprite:Sprite = new spriteClass() as Sprite; //еще одна ссылка на экземпляр класса


iflamberg 29.12.2010 11:24

Class - это указатель на класс. Не на экзмемпляр класса, а на его конструктор грубо говоря. Пример:

Код AS3:

var c:Class = MovieClip;
var mc:MovieClip = new c () as MovieClip;
trace (mc is MovieClip); //true

=D Одновременно написали

zorexundra 29.12.2010 12:52

Возвращаясь к теме:
Можно-ли в моём случае объект Loader.content "скормить" TileList-у также, как и встраиваемое изображение, путём добавления свойства icon в dataProvider TileList-а?
Этот метод ощутимо быстрее отображает содержимое TileList-а при прокрутке...

alatar 29.12.2010 12:57

У вас там что? Одно изображение используется для всех итемов?

zorexundra 29.12.2010 13:22

alatar, сейчас эксперементирую с дубликатами одного изображения. В будущем планируется использование нескольких тысяч изображений.
При добавлении картинок методом addChild пользовательского itemRenderer время отклика скроллера при быстрой прокрутке заметно выше, нежели при скроллировании содержимого добавленного "обычным" способом.

alatar 29.12.2010 13:58

Цитата:

В будущем планируется использование нескольких тысяч изображений.
Для этого больше подойдет кэш с ограничением на размер. Либо просто оставить как есть, то есть сбросить работу по кэшированию на браузер и не обращать внимание на задержки при подгрузке изображений. Держать в памяти всю эту кучу изображений – самоубийтво. Собственно для таких случаев TileList и предусмотрен в том виде в котором он есть.
Цитата:

сейчас эксперементирую с дубликатами одного изображения.
Раз у вас используются только картинки, то наиболее экономичный вариант будет дублирование Bitmap с одной BitmapData.
Код AS3:

private var bitmapData:BitmapData;
...
bitmapData = (loader.content as Bitmap).bitmapData;
...
//создание новой битмапы
var bitmap:Bitmap = new Bitmap(bitmapData);


zorexundra 29.12.2010 15:13

alatar, крайний вопрос:
синтаксис
Код AS3:

loader.content as Bitmap

по существу отличается от
Код AS3:

Bitmap(loader.content)

?

alatar 29.12.2010 15:17

В первом случае вернется null, если content нельзя привести в Bitmap, во втором сгенерируется ошибка.


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

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