![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте!
Сделал резиновую флэшку, вот код: stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
_root.onResize = function() {
if (Stage.width>=800) {
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._x = Stage.width/2-mc_redText._width/2;
} else {
mc_logo._xscale = mc_logo._yscale=Stage.width/8;
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_logo._y = (100-mc_logo._xscale)/2;
mc_adresses._xscale = mc_adresses._yscale=Stage.width/8;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_adresses._y = (45-mc_adresses._xscale)/4+110;
mc_redText._xscale = mc_redText._yscale=Stage.width/8;
mc_redText._x = Stage.width/2-mc_redText._width/2;
mc_redText._y = (115-mc_redText._xscale)/4+160;
}
};
Stage.addListener(_root);
_root.onResize();
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=koi8-r" /> <title>capResize</title> </head> <body bgcolor="#ff8a00"> <!--url's used in the movie--> <!--text used in the movie--> <!-- saved from url=(0013)about:internet --> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="800" height="228" id="capResize" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="capResize.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ff8a00" /><embed src="capResize.swf" quality="high" bgcolor="#ff8a00" width="800" height="228" name="capResize" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </body> </html> Сергей: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="100%" height="228" id="resizecap" align="center"> <param name="allowScriptAccess" value="sameDomain"> <param name="movie" value="resizecap.swf"> <param name="quality" value=""> <param name="bgcolor" value=""> <embed src="resizecap.swf" quality="high" width="100%" height="228" name="resizecap" align="top" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </object> Если кому нужно, прилагаю исходник. Подскажите, пожалуйста, что сделать, чтобы все отображалось своевременно и верно. |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
всё дело в _xscale и _yscale, из-за них пропадает графика
|
|
|||||
, ничего себе! А нельзя ли узнать отчего именно - сам механизм косяка? И чем его заменить?В других работах есть и _xscale, и _yscale, но такого глюка не было. |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Вы не правильно вычисляете _xscale, попробуйте установить целое число, на пример 80...
Добавлю, у меня есть подозрение что при загрузке в браузере изначально флеш Stage.width высчитывает как 0, исходя из этого выполняется условие else и вычисления производяться неверно, т.е высчитывается на 0. Я поставил обработчик onLoad и изменил Dimantions, в среде вычисления производятся верно. Последний раз редактировалось screamge; 10.05.2007 в 12:20. |
|
|||||
|
Да, screamge, поменял все _xscale и _yscale на такие формулы:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
var logoW:Number = 587;
var logoH:Number = 90;
var adressesW:Number = 632;
var adressesH:Number = 64;
var redTextW:Number = 627;
var redTextH:Number = 60;
_root.onResize = function() {
if (Stage.width>=800) {
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._x = Stage.width/2-mc_redText._width/2;
} else {
mc_logo._width = Stage.width*logoW/800;
mc_logo._height = logoH*(mc_logo._width/logoW);
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_adresses._width = Stage.width*adressesW/800;
mc_adresses._height = adressesH*(mc_logo._width/adressesW);
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._width = Stage.width*redTextW/800;
mc_redText._height = redTextH*(mc_logo._width/redTextW);
mc_redText._x = Stage.width/2-mc_redText._width/2;
}
};
Stage.addListener(_root);
_root.onResize();
Да и попутно - как через onLoad проверить загрузку всего мувика в самом мувике? Или грузить его в другой мувик? Последний раз редактировалось Amra Kimmerian; 10.05.2007 в 12:32. |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Я пробовал уже, не помогает...видимо придётся условия менять.
import mx.utils.Delegate;
Stage.scaleMode = "noScale";
Stage.align = "TL";
var listen:Object = new Object();
this.onLoad = Delegate.create(this, this.resizer);
listen.onResize = Delegate.create(this, this.resizer);
var origw:Number = 800;
var origh:Number = 228;
function resizer():Void {
if (Stage.width>=800) {
mc_logo._x = Stage.width /2-mc_logo._width/2;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._x = Stage.width/2-mc_redText._width/2;
} else {
_root.onEnterFrame = function() {
if (Stage.width != 0) {
delete _root.onEnterFrame;
}
var xscale = Stage.width / origw * 80
mc_logo._xscale = mc_logo._yscale = xscale
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_logo._y = (100-mc_logo._xscale)/2;
mc_adresses._xscale = mc_adresses._yscale=xscale;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_adresses._y = (45-mc_adresses._xscale)/4+110;
mc_redText._xscale = mc_redText._yscale=xscale;
mc_redText._x = Stage.width/2-mc_redText._width/2;
mc_redText._y = (115-mc_redText._xscale)/4+160;
};
}
}
Stage.addListener(listen);
![]() з.ы. сейчас заметил что при ресайзе всёже придёться эту строку видоизменять, т.е. менять 80 на 100. Решаемо добавлением ещё одного условия Последний раз редактировалось screamge; 10.05.2007 в 12:53. |
|
|||||
|
screamge, за Stage.width=0 от моего лица и лица всей нашей фирмы тебе объявляется благодарность
. Я немного сделал по другому:stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
var logoW:Number = 587;
var logoH:Number = 90;
var adressesW:Number = 632;
var adressesH:Number = 64;
var redTextW:Number = 627;
var redTextH:Number = 60;
_root.onResize = function() {
if (Stage.width>800) {
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._x = Stage.width/2-mc_redText._width/2;
} else {
mc_logo._width = Stage.width*logoW/800;
mc_logo._height = logoH*(mc_logo._width/logoW);
mc_logo._x = Stage.width/2-mc_logo._width/2;
mc_adresses._width = Stage.width*adressesW/800;
mc_adresses._height = adressesH*(mc_logo._width/adressesW);
mc_adresses._x = Stage.width/2-mc_adresses._width/2;
mc_redText._width = Stage.width*redTextW/800;
mc_redText._height = redTextH*(mc_logo._width/redTextW);
mc_redText._x = Stage.width/2-mc_redText._width/2;
}
};
Stage.addListener(_root);
function delayFunction() {
_root.onResize();
if (Stage.width != 0) {
clearInterval(delay);
}
}
delay = setInterval(delayFunction, 1000);
Спасибо большое! Мда... Век живи - век учись! |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|