Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   расположение элементов. (http://www.flasher.ru/forum/showthread.php?t=126045)

droch_fhoula 09.06.2009 10:39

не, во флэшке тоже не работает.
если уменьшить высоту окна то с боку остается тот же самый пробел :(

Alex Lexcuk 09.06.2009 12:20

Че-то непонятно, труднее сделать, так что-бы не работало.
Код AS3:

package {
        import flash.display.*; import flash.events.*; import flash.ui.*; import flash.text.*;import flash.geom.*;
        public class DocResize extends Sprite {
                private var rMc:Sprite, lMc:Sprite;
                public function DocResize():void{
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
 
                        addChild(rMc = new ScaleTestMc);
                        addChild(lMc = new ScaleTestMc);
                        resizeHandler();
                        stage.addEventListener(Event.RESIZE, resizeHandler);
                }
                private function resizeHandler(evt:Event = null):void{
                        rMc.x = stage.stageWidth -rMc.width;
                }
 
        }
}

где rMc - мувик справа, а lMc мувик слева естественно
При публикации ставим размеры 100%
http://www.murmadillo.tut.su/html/resize.html
Естественно нет причин для не работоспособности этого и что-бы оно не работало надо приложить некоторые усилия, даже не понятно какие.

droch_fhoula 09.06.2009 12:56

да спасибо это работает. но как я уже писала у меня проблемы с NO_SCALE , потому что мне нужно что если размер окна уменьшается то элементы тоже бы меняли размер. а как задать им такой scale не знаю :(

Alex Lexcuk 09.06.2009 14:01

Вложений: 1
Ну так надо скалируемый контент засунуть в отдельный мувик и скалировать его
Код AS3:

package {
        import flash.display.*; import flash.events.*; import flash.ui.*; import flash.text.*;import flash.geom.*;
        public class DocResize extends Sprite {
                private var rMc:Sprite, lMc:Sprite, mcGeneralContent:Doc,
                baseHeight:Number, baseWidth:Number;
                public function DocResize():void{
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                        addChild(mcGeneralContent = new Doc);
                        addChild(rMc = new ScaleTestMc);
                        addChild(lMc = new ScaleTestMc);
                        baseWidth = 550;
                        baseHeight = 200;
                        resizeHandler();
                        stage.addEventListener(Event.RESIZE, resizeHandler);
                }
                private function resizeHandler(evt:Event = null):void{
                        var scaleObj:Object=getAutoScale(stage.stageWidth - (rMc.width + lMc.width), stage.stageHeight);
                        rMc.x = stage.stageWidth -rMc.width;
                        mcGeneralContent.x = scaleObj.x + lMc.width;
                        //mcGeneralContent.y = scaleObj.y;//выравнивание по центру
                        mcGeneralContent.scaleX = mcGeneralContent.scaleY = scaleObj.scale;
                }
 
                private function getAutoScale(_w:Number,_h:Number):Object {
                        //trace("resizeHandler: " + evt);
                        //trace("stageWidth: " + 800 + " stageHeight: " + 600);
 
                        var scaleMode:String;
                        var scale:Number;
                        if (baseWidth>=baseHeight) scaleMode = "width";else scaleMode = "height";
                        if (scaleMode == "width") {
                                scale = _w/baseWidth;
                                if (baseHeight*scale>_h) scale = _h/baseHeight;
                        }else{
                                scale = _h/baseHeight;
                                if (baseWidth*scale>_w) scale = _w/baseWidth;
                        }
 
                        //kindSp.scaleX = kindSp.scaleY = scale;
                        //центровка
                        var centeroX:NumberMath.abs((_w- baseWidth*scale)/2);
                        //kindSp.x = centeroX;
                        var centeroY:NumberMath.abs((_h - baseHeight*scale)/2);
                        //kindSp.y = centeroY;
                        return { scale:scale, x:centeroX, y:centeroY };
                }
        }
}

http://www.murmadillo.tut.su/html/resize-dog.html

droch_fhoula 09.06.2009 14:29

Alex Lexcuk большое спасибо! очень помог :)


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

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