我使用了Loader和URLRequest从互联网上下载.png并将其添加到我的显示列表中。因为它已经是位图,它是否已经内置了位图数据?或者我是否必须自己创建位图数据?
另外,为什么在displayMmage函数中输出true时,同一个trace语句在mouseMoveHandler中返回false?
var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest("http://somewebsite.com/image.png"));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, displayImage);
function displayImage(evt:Event):void
{
addChild(evt.target.content);
addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
trace(evt.target.content is Bitmap); //outputs 'true'
}
function mouseMoveHandler(evt:MouseEvent):void
{
trace(evt.target.content is Bitmap); //outputs 'false'
}
答案 0 :(得分:1)
快速搜索AS3文档告诉我Bitmap has a bitmapData property。
你在每条痕迹中得到不同的结果,因为你正在追踪不同的东西。尝试只追踪属性而不是“是位图”,以查看实际存储的内容。
您追踪事件的第一个跟踪,第二个跟踪MouseEvent。您的displayImage函数是“Loader Complete handler”,因此target将是LoaderInfo object。在LoaderInfo对象中,target引用“与此LoaderInfo对象关联的已加载DisplayObject”。但是在MouseEvent中,目标会有所不同。您需要参考docs for each event以了解目标是什么。
另外,我认为您需要将鼠标移动事件监听器添加到舞台上,否则它将无法正常工作。
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);