Просмотр полной версии : Оптимизация текста. Это реально?
Здравствуйте!
Дело в том, что у меня есть клип, в котором один из слоёв обычный текст и его очень много. Без текста всё работает просто отлично, а с текстом флешка начинает тормозить. Пробывал оптимизировать с помощью this.cacheAsBitmap = true, но помогает слабо... Вот и возник вопрос. Можно ли как-нибудь оптимизировать текст?
Aziz Zaynutdinoff
11.05.2007, 20:45
просто перевести весь текст в картинку через
BitmapData.draw(src);
с последующим удалением исходного ресурса
А можно подробнее? На слой этот код вешать или куда?
Текст наружу, его грузить, и проблемы нет.
Если текста очень много, он превысит предел по габаритам.
2 Kikasso я делаю карту, т.е. там текст разбросан по всему клипу и относительно горизонтали у отдельной надписи своё положение. Можно ли такой текст как-нибудь подгружать со строны?
Aziz Zaynutdinoff
11.05.2007, 21:04
Любой текст можно грузить извне. Один из самых удобных способов из XML-файла.
Допустим у меня улица проходит относительно вертикали под 45 градусов. Надпись, обозначающая улицу соответственно тоже должна быть под 45 градусов относительно вертикали. Это реально сделать, в смысле через XML-файл задавать положение и угол наклона? И если этих улиц 200? Плюс ещё номера омов... Объясните, пожалуйста, как использовать BitmapData.draw(src);.
Aziz Zaynutdinoff
11.05.2007, 21:21
Сошлюсь на пример из Help'а (поиск по ключевым BitmapData constructor), дам ссылку на помощь от iNils'а (http://help.inils.ru/flash8/) ну и в качестве бонуса минипример по использованию в вашем случае:
import flash.display.BitmapData;
//грузим XML и парсируем его.
//пишем функцию обработки полученных данных
//среди которых легко можно брать и угол поворота
//
//далее формирование текста:
var _tmp_mc:MovieClip = this.createEmptyMovieClip("_tmp_mc", this.getNextHighestDepth());
var _tmp_txt:TextField = _tmp_mc.createTextField("_tmp_txt", _tmp_mc.getNextHighestDepth(), 0, 0, 1, 1);
_tmp_txt.autoSize = true;
_tmp_txt.text = <НАЗВАНИЕ УЛИЦЫ>;
var _bmp:BitmapData = new BitmapData(_tmp_mc._width, _tmp_mc._height, true, 0xFFFFFF);
_bmp.draw(_tmp_mc);
_tmp_mc.removeMovieClip;
var street_mc:MovieClip = this.createEmptyMovieClip("street_mc", this.getNextHighestDepth());
street_mc.attachBitmap(_bmp);
street_mc._rotation = <УГОЛ ПОВОРОТА>;
Учебник по XML (http://www.artlebedev.ru/tools/technogrette/etc/flash-xml/) от Дембицкого. Будет полезно к изучению и пониманию основ XML
screamge
11.05.2007, 21:24
В хелпе про это достаточно написанно, если английский хелп не устраивает ищите iNils - a, а точнее его подпись.
Надпись, обозначающая улицу соответственно тоже должна быть под 45 градусов относительно вертикали. Это реально сделать, в смысле через XML-файл задавать положение и угол наклона?
А зечем создавать создавать поля, просто записывайте текст в созданные на карте.
Что касается BitmapData то он подходит вамтолько в том случае если надписи не функциональны, т.е. не должны нажиматся и т.д.
Aziz Zaynutdinoff
11.05.2007, 21:28
ну про то, что они не будут нажиматься – это ты погорячился :) будут... как миленькие.
Только я бы сделал следующим образом: сначала сформировал бы весь слой из текста, а потом только отрисовал бы его... в этом случае тормозов было бы меньше, но если надо работать с каждым из этих объектов, то так, как указано в примере выше.
С текстом работать не надо будет. Он только в качестве "декорации"8) Готов уже полностью, теперь осталось только отрисовать. Сейчас читаю хелп, но толком не могу ничего поянть8(
Напишите текст, на текстовом поле тыкните правую кнопу мыша и выберите в меню Break Apart. Два раза. Как вариант.
Aziz Zaynutdinoff
11.05.2007, 22:33
К сожалению это не вариант, а распложение векторных форм, что ведёт к диким тормозам.
К сожалению это не вариант, а распложение векторных форм, что ведёт к диким тормозам.
Уверен что векторных?
screamge
11.05.2007, 22:41
Уверен что векторных?
После второго раза, да.
Азиз, ты уверен что функционал кнопки сохраняется после прорисовки? Я тыкал, тыкал и всё никак:(
Aziz Zaynutdinoff
11.05.2007, 22:44
я так делаю :) когда не надо выделять текст.
_mc.attachBitmap(bmp);
_mc.onRelease = function(){
trace("Hehe")
};
screamge
11.05.2007, 22:45
Это не честно:D
Aziz Zaynutdinoff
11.05.2007, 22:46
А кто тут играет по правилам? :D
screamge
11.05.2007, 22:48
Но к поставленной задаче не применимо:)
Aziz Zaynutdinoff
11.05.2007, 22:50
хм... а почему?
если сначала сделать контейнер, потом отрисовать его и после повесить событие – то чем не ложиться вариант? :)
screamge
11.05.2007, 22:51
а как ты собиешься вешать события на 100 надписей? По координатам?:)
Aziz Zaynutdinoff
11.05.2007, 22:55
точно также, как вешал бы и и без отрисовки :) через цикл
screamge
11.05.2007, 23:01
да но если эти надписи прорисованны?
Aziz Zaynutdinoff
11.05.2007, 23:09
Если они просто ручками выложены – тогда я пасс :) я так давно не делаю и в этом я некомпитетен.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.