图像重叠 - 动作脚本 3 / adobe flash / adobe animate
Image Overlapping - action script 3 / adobe flash / adobe animate
我正在开发一个项目,它在 运行 时间加载另一个 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);
}
屏幕截图:
错误前 - 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
如果有人能告诉我这有什么问题,我将不胜感激。
每次加载新文件时都需要更换 png1。最好检查文件是否仍然相同,以免每秒一次又一次地下载它。 png2不显示的原因正是因为png2前面的透明层太多了。我记得有 24 张带有 alpha 通道的图片相互叠加导致我丢失了一些本来可以看到的背景。为了解决你的问题,我说你在你的 png2 层前面添加一个 Sprite
容器,然后你可以清除该容器的所有子级以删除过时的 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);
}
请注意,此代码不处理下载错误。
我正在开发一个项目,它在 运行 时间加载另一个 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);
}
屏幕截图:
错误前 - 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
如果有人能告诉我这有什么问题,我将不胜感激。
每次加载新文件时都需要更换 png1。最好检查文件是否仍然相同,以免每秒一次又一次地下载它。 png2不显示的原因正是因为png2前面的透明层太多了。我记得有 24 张带有 alpha 通道的图片相互叠加导致我丢失了一些本来可以看到的背景。为了解决你的问题,我说你在你的 png2 层前面添加一个 Sprite
容器,然后你可以清除该容器的所有子级以删除过时的 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);
}
请注意,此代码不处理下载错误。