0

私はFlashAS3、iOSSDK用のAIR3.2で作業しています。画像を読み込んでから、その上に図形とテキストフィールドを適用しています。しかし、z-indexはローダークラスで奇妙になっているようです。現時点では、これを実行すると、テキストと図形が最初に適用され、メソッドの順序が異なっていても、画像がこれらの上に適用されます。ローダークラスから読み込まれた画像の上に形状とテキストを設定するにはどうすればよいですか?

mainメソッドのメソッド:

displayImage();
overlayBox();
textAnimation();

これらは方法です:

public function displayImage():void {

        var imageurl:String = "image.jpg";

        myLoader = new Loader();

        var fileRequest:URLRequest = new URLRequest(imageurl);

        myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoaderProgress);
        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);

        myLoader.load(fileRequest);
    }

public function onLoaderProgress(e:ProgressEvent) {
        trace(e.bytesLoaded, e.bytesTotal); // this is where progress will be monitored
    }

public function onLoaderComplete(e:Event) {

        image = new Bitmap(e.target.content.bitmapData);

        var imageWidth:Number = image.width;
        var imageHeight:Number = image.height;
        var resizeWidthVar:Number;
        var resizeHeightVar:Number;

        trace("Image width: " + image.width);
        trace("Image height: " + image.height);

        if(imageWidth >= imageHeight) {
            resizeHeightVar = imageHeight/displayRes;
            trace("resizeHeightVar = " + resizeHeightVar);

            imageWidth = imageWidth/resizeHeightVar;
            imageHeight = imageHeight/resizeHeightVar;
        }
        else {
            resizeWidthVar = imageWidth/displayRes;
            trace("resizeWidthVar = " + resizeWidthVar);

            imageWidth = imageWidth/resizeWidthVar;
            imageHeight = imageHeight/resizeWidthVar;
         }

        image.width = imageWidth;
        image.height = imageHeight;

        trace("Image width: " + image.width);
        trace("Image height: " + image.height);

        image.x = xScreenPos;
        image.y = yScreenPos;

        addChild(image); // the image is now loaded, so let's add it to the display tree!
    }

public function overlayBox():void {

        var overlaySquare:Sprite = new Sprite();

        addChild(overlaySquare);

        overlaySquare.graphics.beginFill(0x00000, 0.7);
        overlaySquare.graphics.drawRect(0, 0, displayRes, displayRes);
        overlaySquare.graphics.endFill();
        overlaySquare.x = xScreenPos;
        overlaySquare.y = yScreenPos;
    }

public function textAnimation():void {

        //set text format
        textFormat.font = "Helvetica Neue Light";
        textFormat.size = 12;
        textFormat.bold = false;
        textFormat.color = 0x000000;

        // pass text format
        textOne.defaultTextFormat = textFormat;

        textOne.text = "Blah blah blah blah";
        textOne.autoSize = TextFieldAutoSize.LEFT;
        textOne.x = xScreenPos;
        textOne.y = yScreenPos;

        //add to stage
        addChild(textOne);

    }
4

1 に答える 1

1

解決策addChild(image);addChildAt(image, 0);1 つは、ローダーaddChild(loader);を追加し、完全なハンドラーにイメージを追加しないことです。

于 2013-01-31T19:23:11.317 に答える