![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 176
|
у меня в компонент ScrollPane загружается мувик, в котором присутствует код, создающий динамически набор элементов.. которые будут выходить за пределы видимости всего поля scrollPane...
и так получается, что scrollPane выводит полосы прокрутки по отношению к первоначальному размера клипа, но не изменяется когда добовляються в этом клипе новые элементы.. тем самым клип увеличивается, но нет возможности просмотреть его полностью... ScrollPanel "обрезает" его, не изменяет область прокрутки.. может есть средство борьбы с этим? |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 176
|
хорошо.. может можно тогда сначало внедрить мувик в ScrollPane и обращаться к нему из главного клипа?.
не могу подобрать нужный путь этом случае... |
|
|||||
|
Странно...
Делал именно так как ты описываешь-- в компонент ScrollPane добавлял мувик в котором динамически создавались другие мувики. Вот -- http://www.fenix-k.ru/dom_flash.html полоса прокрутки зависит от размеров вложенного мувика и при прокручивании позволяет просмотреть все его части. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 176
|
слушай.. а куском кода не можешь поделится?.. может я не в той последовательности реализую это...
|
|
|||||
|
Это в таймлайне
Это на монтажной линейке клипа с линкайдж luxory_id import org.dembicki.BitmapLibrary;
import flash.display.BitmapData;
var line_N=0;
for (i=1; i<=_root.luxory_number; i++) {
obn2=["pol_but"+i];
this.attachMovie("pol_but","pol_but"+i,i);
this["pol_but"+i]._xscale=100;
this[obn2]._yscale=100;
line_X=(i-1)%5;
this[obn2]._x=10+110*(line_X);
if ((i-1)%5 == 0){line_N++;}
this[obn2]._y=10+150*(line_N-1);
trace("LIneX="+line_X+" lineY="+line_N);
this[obn2].onLoadMapHandler = function(url:String, bitmap:BitmapData)
{
i=this.getDepth()-1;
this.tile_name=_root.luxory_ar_des[i];
trace("title "+_root.luxory_ar_des[i])
trace("url "+_root.luxory_ar[i])
this.bmp= bitmap;
this.createEmptyMovieClip("c",3);
this.c._y=25;
this.c._yscale=100;
this.c._xscale=100;
this.c.attachBitmap(this.bmp, 0);
this.onPress = function()
{
for(i=1;i<34;i++)
{
_root.room.pol["pol_tile"+i].createEmptyMovieClip("c",3);
_root.room.pol["pol_tile"+i].c._xscale=70;
_root.room.pol["pol_tile"+i].c._yscale=70;
_root.room.pol["pol_tile"+i].c.attachBitmap(this.bmp,990)
}
};
}
this[obn2].onLoadMapError = function(url:String) {
//trace("onLoadMapError "+url);
};
this[obn2].onLoadCompleteMap = function(url:String) {
//trace("onLoadCompleteMap "+url);
};
this[obn2].onLoadProgressMap = function(url:String, loaded:Number, total:Number) {
//trace("\t"+url+""+Math.round(loaded/total*100)+"%");
this.tpole=Math.round(loaded/total*100)+"%";
};
this[obn2].onLoadStartMap = function(url:String) {
//trace("onLoadStartMap "+url);
};
}
for (i=1; i<=_root.luxory_number; i++) {
myname = "img/pol/lam_efloor/luxory/"+_root.luxory_ar[i-1];
obn2= ["pol_but"+i];
//_root[obn]._xscale = 50;
//trace(myname);
BitmapLibrary.getInstance().getBitmap(myname, this[obn2], this[obn2].onLoadMapHandler, this[obn2].onLoadMapError, this[obn2].onLoadCompleteMap, this[obn2].onLoadProgressMap, this[obn2].onLoadStartMap);
}
_root.stop();
Но тогда было важно чтоб работало... |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 176
|
ого.. спасибо.. буду разбираться...
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 16
|
У меня та же проблема. Есть вариант скомпилировать мувиклип как отдельный swf и указывать его в contentPath. Тогда все работает. Но это не комильфо.
У меня мувиклип отрисовывает содержимое с нуля программным способом: создаются дочерние мувиклипы, рисуются линии и области. Так и не решил как побороть. Если найдете решение, напишите плиз. для terbooter: если не секрет, зачем у мувиклипа в конце стоит _root.stop();? |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 176
|
скинь мне свой простой не работющей пример.. я попробую запустить его..
я свою проблему решил, но немного другим способом.. корень так и не нашёл.. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 16
|
Кажется разобрался.
Изначально у меня было так: 1. в бибилиотеке находятся: ScrollPane, mcEmpt (с линками) 2. в тайм лайн основной сцены: this.createObject("ScrollPane", "csp", this.getNextHighestDepth());
csp.setSize(Stage.width,Stage.height);
csp.move(0,0, true);
csp.contentPath = "mcEmpt";
var doc:XML = new XML(); // Источник данных
var mcLines:MovieClip = this;
// ^ Люблю работать с именованными указателями
// хотя можно и так: var mcLines:MovieClip = this.createEmptyMovieClip("mcLines", this.getNextHighestDepth());
// и дальше использовать mcLines как использовал c учетом более глубокой вложенности. В общем это не проблема отрисовки полос прокрутки в ScrollPane.
trace(targetPath(this)); // _level0.csp.spContentHolder
trace(targetPath(mcLines)); // _level0.csp.spContentHolder или _level0.csp.spContentHolder.mcLines если через this.createEmptyMovieClip
doc.onLoad = function (success:Boolean)
{
// Рисуем линиии на мувике mcLines черным цветом с прозрачностью 50% и минимальной толщиной
drawLines(mcLines, 0x000000, 50, 0);
};
Теоретически, чтобы решить проблему, необходимо вызвать метод redraw у компонента скролПане после прорисовки. Правильно было бы использовать событие complete того же скролПане. Однако оно (событие) не срабатывает. Вот код который я добавил в таймлайн основной сцены для обработки события: var cspCompleteListener:Object = new Object();
cspCompleteListener.complete = function() {
trace("Загрузка завершена."); // Это сообщение не появляется
};
csp.addEventListener("complete", cspCompleteListener);
... // Рисуем линиии на мувике mcLines черным цветом с прозрачностью 50% и минимальной толщиной ... mcLines._parent.redraw(true); // Или mcLines._parent._parent.redraw(true); если mcLines через this.createEmptyMovieClip ... Вопрос знатокам: почему может не работать событие complete? |
|
|||||
|
Вот, нашёл на флеш-потрошителе такую уловку:
scrollPane.content._yscale = 1000; // Изменяем размер контента scrollPane.doLater(scrollPane, "size"); // Заставляем компонент отреагировать на изменение размера контента )ЗЫ. Я нашел хорошую замену этому компоненту, может поможете его под AS2 переделать? |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|