Перекрытие изображения - сценарий действия 3 / Adobe Flash / Adobe Animate - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над проектом, который загружает png (png1) во время выполнения перед другим png (png2) изображением (которое размещено ранее)

Я сделал это, и он работает правильно, проблема в том, что через некоторое время png1 становится прозрачным для фона, даже png2, помещенный в середине png1 и фона, ниже я прикрепил скриншоты проблемы и кода.

import flash.net.URLLoader;
import flash.net.URLRequest;

var fl_TimerInstance: Timer = new Timer(1000);
fl_TimerInstance.addEventListener(TimerEvent.TIMER, fl_TimerHandler);
fl_TimerInstance.start();

var fl_SecondsElapsed: Number = 1;

function fl_TimerHandler(event: TimerEvent): void {

    var imageLoader: Loader = new Loader();
    var image: URLRequest = new URLRequest("C:\\Users\\Public\\Pictures\\pic.png"); //png1 = pic.png
    imageLoader.load(image);
    Zerolocation.addChild(imageLoader);

}

ScreenShots:

До ошибки - https://drive.google.com/file/d/19a0t2jEGfDoX2voQ96rap4XpvDlGMWBd/view?usp=sharing

Ошибка - https://drive.google.com/file/d/1a--EIEXz2Qzt5SBfl8Y8SxDIAG3DkYZf/view?usp=sharing

Хронология - https://drive.google.com/file/d/1s2uPSpOYAcfEJqdNqD4QpDGla8Gvs5LC/view?usp=sharing

Было бы очень признательно, если бы кто-нибудь мог дать мне подсказку о том, чтонеправильно с этим.

1 Ответ

0 голосов
/ 05 декабря 2018

Вам необходимо заменять png1 каждый раз, когда вы загружаете новый файл.Лучше всего, если вы проверите, если файл все тот же, чтобы не загружать его снова и снова каждую секунду.Причина, по которой png2 перестает отображаться, заключается именно в том, что перед png2 слишком много прозрачных слоев.Я помню, что наличие 24 изображений с альфа-каналом друг над другом привело к потере некоторого фона, который в противном случае был бы видимым.Чтобы решить вашу проблему, я говорю, что вы добавляете контейнер Sprite перед слоем png2, тогда вы можете просто очистить все дочерние элементы этого контейнера, чтобы удалить устаревшие imageLoader s, а затем добавить недавно загруженную картинку.Что-то вроде этого:

// Zerolocation has a child named "runtimePic" to place loaded pics
var didWeLoad:Boolean=true;
function fl_TimerHandler(event: TimerEvent): void {
  if (!didWeLoad) return; // why downloading more while we haven't finished?
  var imageLoader: Loader = new Loader();
  var image: URLRequest = new URLRequest("C:\\Users\\Public\\Pictures\\pic.png"); //png1 = pic.png
  imageLoader.load(image);
  imageLoader.addEventListener(Event.COMPLETE,loaded);
  didWeLoad=false;
}
function loaded(e:Event):void {
  didWeLoad=true; // allowing more downloading
  e.target.removeEventListener(Event.COMPLETE,loaded); // clean up, or else you'll leak memory
  // remove old pic(s)
  Zerolocation.runtimePic.removeChildren();
  // and now add new pic
  Zerolocation.runtimePic.addChild(e.target);
}

Имейте в виду, этот код не обрабатывает ошибки загрузки.

...