Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.12.2006, 19:04
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 1  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
По умолчанию приручение ScrollPane

у меня в компонент ScrollPane загружается мувик, в котором присутствует код, создающий динамически набор элементов.. которые будут выходить за пределы видимости всего поля scrollPane...
и так получается, что scrollPane выводит полосы прокрутки по отношению к первоначальному размера клипа, но не изменяется когда добовляються в этом клипе новые элементы.. тем самым клип увеличивается, но нет возможности просмотреть его полностью... ScrollPanel "обрезает" его, не изменяет область прокрутки..
может есть средство борьбы с этим?

Старый 11.12.2006, 02:43
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 2  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
хорошо.. может можно тогда сначало внедрить мувик в ScrollPane и обращаться к нему из главного клипа?.
не могу подобрать нужный путь этом случае...

Старый 11.12.2006, 09:17
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 3  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Странно...
Делал именно так как ты описываешь-- в компонент
ScrollPane добавлял мувик в котором динамически создавались другие мувики.
Вот --
http://www.fenix-k.ru/dom_flash.html
полоса прокрутки зависит от размеров
вложенного мувика и при прокручивании позволяет просмотреть
все его части.

Старый 11.12.2006, 14:00
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 4  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
слушай.. а куском кода не можешь поделится?.. может я не в той последовательности реализую это...

Старый 12.12.2006, 12:53
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 5  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Это в таймлайне
Код:
luxory_scroll.contentPath="luxory_id";
Это на монтажной линейке клипа с линкайдж 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();
Сам код конечно прекорявый -)))
Но тогда было важно чтоб работало...

Старый 12.12.2006, 15:47
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 6  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
ого.. спасибо.. буду разбираться...

Старый 18.12.2006, 12:49
vento вне форума Посмотреть профиль Отправить личное сообщение для vento Найти все сообщения от vento
  № 7  
Ответить с цитированием
vento

Регистрация: Feb 2006
Сообщений: 16
У меня та же проблема. Есть вариант скомпилировать мувиклип как отдельный swf и указывать его в contentPath. Тогда все работает. Но это не комильфо.
У меня мувиклип отрисовывает содержимое с нуля программным способом: создаются дочерние мувиклипы, рисуются линии и области. Так и не решил как побороть. Если найдете решение, напишите плиз.

для terbooter: если не секрет, зачем у мувиклипа в конце стоит _root.stop();?

Старый 19.12.2006, 01:26
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 8  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
скинь мне свой простой не работющей пример.. я попробую запустить его..
я свою проблему решил, но немного другим способом.. корень так и не нашёл..

Старый 19.12.2006, 17:33
vento вне форума Посмотреть профиль Отправить личное сообщение для vento Найти все сообщения от vento
  № 9  
Ответить с цитированием
vento

Регистрация: 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";
3. в тайм лайн mcEmpt (строится диаграмма, данные для которой подгружаются в виде XML-файла):
Код:
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);
тогда я изменил содержимое скрипта в таймлайн mcEmpt в событии doc.onLoad:
Код:
	...
	// Рисуем линиии на мувике mcLines черным цветом с прозрачностью 50% и минимальной толщиной 
	...
	mcLines._parent.redraw(true);	// Или mcLines._parent._parent.redraw(true); если mcLines через this.createEmptyMovieClip
	...
после этого прорисовываются скролы и можно смотреть все содержимое.

Вопрос знатокам: почему может не работать событие complete?

Старый 20.12.2006, 19:08
Annihilator вне форума Посмотреть профиль Отправить личное сообщение для Annihilator Найти все сообщения от Annihilator
  № 10  
Ответить с цитированием
Annihilator
 
Аватар для Annihilator

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
Вот, нашёл на флеш-потрошителе такую уловку:
Код:
scrollPane.content._yscale = 1000; // Изменяем размер контента
scrollPane.doLater(scrollPane, "size"); // Заставляем компонент отреагировать на изменение размера контента
Только все равно я не пойму, как обращаться к клипу, который внутри scrollpane? (обидно, да - упорно приучал себя к централизации кода, а тут опять приходится внутрь клипа пихать )

ЗЫ. Я нашел хорошую замену этому компоненту, может поможете его под AS2 переделать?

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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