Просмотр полной версии : Ручное позиционирование и маштабирование
еще один вопросик возник.
задам его сюда чтобы не плодить ветки.
при создании флешки в ее свойствах задается ширина, высота. допустим я вывел текст 16 шрифтом. а теперь допустим я гружу эту же флешку, но указываю ей уже совершенно другие размеры. соответственно меняются и шрифты, а хотелось бы чтобы шрифты были такого же размера (это корректно так как контент флешки генериться динамически). как такого можно добиться?
ммм вообще легкого пути я не вижу, ибо в твоем случае все будет либо маштабироваться пропорционально, либо не будет маштабироваться вовсе.
Есть выход, но он требует определенной сноровки, и тщательного разбиения сайта на состовляющие.
примерный способ.
у тебя есть на сайте 3 элемента: меню, шапка и текстовой блок.
Сначала мы пишем
Stage.scaleMode = "noScale";
этим мы отрубили авто маштабирование, теперь мы будем делать его в ручную, для этого данные три эллемента мы расположим в отдельные мувиклипы, element1,element2,element3.
Через свойства класса Stage (http://www.novemberain.com/livedocs/Help/ActionScriptLangRef/00001691.html) мы можем узнать размеры флэшки, после чего расчитываем пропорции, после чего мы увеличиваем размеры двух эллементов(_width,_height) а текстовый блок оставляем таким же, либо "перерисовываем".
Так же можешь посмотреть класс Elastic (http://proto.layer51.com/d.aspx?f=1364)(Тебе нужно будет скачать весь пакет классов и там найдешь, класс и примеры) Евгения Потапенко, или класс Table (http://proto.layer51.com/d.aspx?f=1364) Игоря Агеева.
Вот возник еще вопросик. Суть: узнать реальный размер шлешки в IE после установки Stage.scaleMode = "noScale" (то есть именно те размеры, которые указаны в html'е).
Простой пример: создаем пустую флешку 200x300, пишем скрипт:
_root.createTextField("sz1", 1, 0, 0, 100, 100);
sz1.text = Stage.width + " x " + Stage.height;
Stage.align = "TL";
Stage.scaleMode = "noScale";
_root.createTextField("sz2", 2, 0, 50, 100, 100);
sz2.text = Stage.width + " x " + Stage.height;
Встраиваем на html-страничку:
<html>
<body>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
WIDTH="150" HEIGHT="350" id="myMovieName">
<PARAM NAME=movie VALUE="test.swf">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="test.swf" quality=high bgcolor=#FFFFFF WIDTH="150" HEIGHT="350"
NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>
</body>
</html>
В итоге в Опере и Фаерфоксе все выводится как и должно быть (200 x 300 и 150 x 350), а в IE выводится 200 x 300 и 0 x 0 :eek:
Оказывается известная проблема :)
Нашел workaround здесь (http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00001691.html).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.