0

我有一个 300 到 200 的舞台,我拥有的所有对象都是针对这个尺寸的。还有一个填充背景的图案功能。但是用户正在考虑将舞台大小调整为 1024 到 480(他从手机切换到平板电脑)。现在平板电脑屏幕中的对象比例是以前的 3 倍以上(在手机上看到时)如何我是否保存当前的新尺寸对象并将其用于创建新背景(1024x480)。我有这个代码

public static const GAME_ORG_WIDTH:uint = 300;
public static const GAME_ORG_HEIGHT:uint = 200;
private var myC:MyClip = new MyClip();

public function MainClass_road() {
                          addEventListener(Event.ADDED, init);
                }

                public function init(e:Event):void{
                           stage.scaleMode = StageScaleMode.NO_SCALE;
                             stage.align = StageAlign.TOP_LEFT;
                             stage.addEventListener(Event.RESIZE, setUpScreen);
                }

                public function setUpScreen(ev:Event):void{

                          stage.removeEventListener(Event.RESIZE, setUpScreen);
                          if(stage.fullScreenHeight > stage.fullScreenWidth){   
                                    gameStageWidth = stage.fullScreenWidth;
                        gameStageHeight = stage.fullScreenHeight;
                          }else {
                                    gameStageWidth = stage.fullScreenHeight;       // 480
                                    gameStageHeight = stage.fullScreenWidth;                     //1024
                          }
                          rescaleRatio = gameStageWidth / GAME_ORG_WIDTH;   
                          //rescale every object, ie:
                        myC.scaleX = myC.scaleY =   rescaleRatio;
               //start filling the Background with the pattern
                               tileBgF();
                }

所以在tileBgF()之前我如何保存对象的新尺寸并使用它们(新值)用这个函数填充屏幕。因为现在我只使用旧的对象属性(大小),而不是更新的.

public function tileBgF(e:Event=null):void {
                var bgClip:MovieClip = new myC();
                var i:int = 0;
                var j:int = 0;
                while (bgClip.x < gameStageWidth - bgClip.width) {
                    bgClip = MyC;
                    while (bgClip.y < gameStageHeight - bgClip.height) {
                        bgClip = MyC;
                        tileLayer.addChild(bgClip);
                        bgClip.x = bgClip.width * i;
                        bgClip.y = bgClip.height * j;

                        j++;
                    }

                    j = 0;
                    i++;
                }

                addChildAt(tileLayer,0);
            }

如果我决定将来再次使用背景(所以我在舞台上同时有 2 个背景)是否足以制作另一个 tileLayer 并再次添加它,或者我需要做更多的事情?

4

1 回答 1

0
bgClip = new MyClip();
bgClip.scaleX = bgClip.scaleY = scaleRatio
tileLayer.addChild(bgClip);
bgClip.x = bgClip.width * i;
bgClip.y = bgClip.height * j;
于 2013-09-01T21:58:37.777 回答