图像重叠-动作脚本3 / Adob​​e Flash / Adob​​e Animate

时间:2018-12-04 09:10:47

标签: actionscript-3 flash actionscript adobe adobe-animate

我正在一个项目,该项目正在运行时在另一个png(png2)图像(放置在较早位置)之前加载png(png1)

我已经做到了,它可以正常工作,问题是一段时间后png1透明化到背景,甚至是放置在png1和背景中间的png2,下面也附上了问题和代码的屏幕截图。

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);

}

屏幕截图:

错误之前-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 :(得分:0)

每次加载新文件时都需要替换png1。最好是,如果您要检查文件是否仍然相同,以免每秒下载一次。停止显示png2的原因完全是因为png2前面的透明层过多。我记得有24张图片,彼此之间有alpha通道,这使我失去了一些本来可以看到的背景。为了解决您的问题,我说您在png2图层前面添加了一个Sprite容器,然后您可以清除该容器的所有子级以删除过时的imageLoader,然后添加新下载的图片。与此相符的东西:

// 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);
}

请注意,该代码不会处理下载错误。