0

別の質問への回答として作成したコードを次に示します。ライブラリからライブラリ アイテムを取り出し、プログラムによってステージに配置します。画面に表示される画像を実際に更新するには、removeChild() を実行してから addChild() を実行する必要があったことを除けば、大したことではありません。画面を強制的に再描画する別の方法はありますか?

var currentImage:int = 1;
var MAX_IMAGES:int = 3;

MC_prevButton.addEventListener(MouseEvent.CLICK, goBack);
MC_nextButton.addEventListener(MouseEvent.CLICK, goForward);

var imageClip:MovieClip = new Image_1();
var thumbClip:MovieClip = new Thumb_1();

imageClip.x = thumbClip.x = stage.stageWidth/2;
imageClip.y = thumbClip.y = stage.stageHeight/2;



addChildAt(thumbClip, 0);
addChildAt(imageClip, 1);

setImages(currentImage);

function goBack(event:MouseEvent):void {
    if (currentImage) currentImage--;
    setImages(currentImage);
}

function goForward(event:MouseEvent):void {
    if (currentImage < MAX_IMAGES) currentImage++;
    setImages(currentImage);
}

function setImages(imageNumber){
    trace("Setting image number: " + imageNumber);

    var LibraryImage:Class = getDefinitionByName("Image_" + imageNumber) as Class;
    if (LibraryImage){
        removeChild(imageClip);
        imageClip = new LibraryImage();
        addChildAt(imageClip, 1);
    }
    var LibraryThumb:Class = getDefinitionByName("Thumb_" + imageNumber) as Class;
    if (LibraryThumb){
        removeChild(thumbClip);
        thumbClip = new LibraryThumb();
        addChildAt(thumbClip, 0);
    }

    imageClip.x = thumbClip.x = stage.stageWidth/2;
    imageClip.y = thumbClip.y = stage.stageHeight/2;
}

この例では、このコードはタイムラインのフレーム 1 にあり、1 フレームの FLA ファイルであることに注意してください。

4

1 に答える 1

0

forward メソッドと back メソッドの最後で updateAfterEvent() を呼び出してみてください。

function goForward(event:MouseEvent):void {
    if (currentImage < MAX_IMAGES) currentImage++;
    setImages(currentImage);
    event.updateAfterEvent();
}
于 2011-09-01T14:53:35.943 に答える