Принудительно перерисовать экран, кроме использования removeChild() и addChild(), чтобы получить изображение для обновления?
Вот код, который я создал как ответ на другой вопрос. Он извлекает элемент библиотеки из библиотеки и программно выводит его на сцену. Ничего страшного, за исключением того, что для того, чтобы изображение, отображаемое на экране, действительно обновлялось, мне пришлось удалить Child(), а затем добавить его обратно (). Есть ли другой способ заставить экран перерисовать?
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-файл.
1 ответ
Попробуйте вызвать updateAfterEvent() в конце ваших методов forward и back:
function goForward(event:MouseEvent):void {
if (currentImage < MAX_IMAGES) currentImage++;
setImages(currentImage);
event.updateAfterEvent();
}