Flash 如何从Loader对象获取宽度和高度
但当我跑步时,我的宽度和高度都是0。如何获得正确的值?Flash 如何从Loader对象获取宽度和高度,flash,actionscript-3,Flash,Actionscript 3,但当我跑步时,我的宽度和高度都是0。如何获得正确的值? 另外,如果图片加载正确,并且在我将其连接到movieclip后,为什么我不能从movieclip对象获取宽度和高度?图像的加载不是即时的。 在一个事件中跟踪宽度和高度。完成处理程序,它将正常工作 图像的加载不是即时的。 在一个事件中跟踪宽度和高度。完成处理程序,它将正常工作 是我还是你在整个活动开始前询问宽度和高度?设置完w和h跟踪后,如果将它们移动到“someHandler”函数中,会得到什么结果?是我还是在触发完整事件之前询问宽度和高度
另外,如果图片加载正确,并且在我将其连接到movieclip后,为什么我不能从movieclip对象获取宽度和高度?图像的加载不是即时的。
在一个事件中跟踪宽度和高度。完成处理程序,它将正常工作 图像的加载不是即时的。
在一个事件中跟踪宽度和高度。完成处理程序,它将正常工作 是我还是你在整个活动开始前询问宽度和高度?设置完w和h跟踪后,如果将它们移动到“someHandler”函数中,会得到什么结果?是我还是在触发完整事件之前询问宽度和高度?设置w和h跟踪后,如果将它们移动到“someHandler”函数中,会得到什么结果?您要求的是contentLoaderInfo.height。。。您应该询问内容高度
package
{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
public class Main extends MovieClip
{
// state
private var iname:String = "image.gif";
private var w:int;
private var h:int;
private var loader:Loader;
// constructor
public function Main():void
{
loadImage( iname );
trace( w + " " + h );
}
// methods
private function loadImage( filename:String ):void
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, someHandler );
var request:URLRequest = new URLRequest( filename );
loader.load( request );
this.addChild( loader );
}
// event handlers
private function completeHandler( event:Event ):void
{
trace( "image loaded\n" + event.target.url );
trace( event.target );
}
private function someHandler( event:Event ):void
{
w = loader.contentLoaderInfo.width;
h = loader.contentLoaderInfo.height;
}
}
}
你要的是contentLoaderInfo.高度。。。您应该询问内容高度
package
{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
public class Main extends MovieClip
{
// state
private var iname:String = "image.gif";
private var w:int;
private var h:int;
private var loader:Loader;
// constructor
public function Main():void
{
loadImage( iname );
trace( w + " " + h );
}
// methods
private function loadImage( filename:String ):void
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, someHandler );
var request:URLRequest = new URLRequest( filename );
loader.load( request );
this.addChild( loader );
}
// event handlers
private function completeHandler( event:Event ):void
{
trace( "image loaded\n" + event.target.url );
trace( event.target );
}
private function someHandler( event:Event ):void
{
w = loader.contentLoaderInfo.width;
h = loader.contentLoaderInfo.height;
}
}
}
在发布之前,请花几秒钟清除任何注释代码,这只是供我们阅读的更多内容,它实际上没有任何作用。在发布之前,请花几秒钟清除任何注释代码,它只是让我们更容易阅读,实际上它什么都不做。你可以得到contentLoaderInfo的宽度和高度,它将返回对象的标称宽度或高度,而不管缩放值如何。你可以得到contentLoaderInfo的宽度和高度,它将返回对象的标称宽度或高度,而不管缩放值如何缩放值。是的,你是对的,如果我将跟踪移动到“someHandler”函数中,那么我将正确地获取维度。但我的问题是,我想在构造函数中使用这些维度从加载程序内容生成BitmapData对象,我需要宽度和高度来实例化一个对象。由于构造函数体上的值似乎未知,我如何才能做到这一点?这是不可能的,您需要在加载程序完成加载后创建位图数据,然后可能会分派一个事件,以便任何需要位图数据的人都知道它已准备好,然后使用它。如果您正在预加载所有内容,您可以在加载栏显示时完成所有这些操作,这样当您的应用程序实际启动时,信息就准备好了,您可以对其执行任何操作。是的,您是对的,如果我将跟踪移到“someHandler”函数中,那么我可以正确地获取尺寸。但我的问题是,我想在构造函数中使用这些维度从加载程序内容生成BitmapData对象,我需要宽度和高度来实例化一个对象。由于构造函数体上的值似乎未知,我如何才能做到这一点?这是不可能的,您需要在加载程序完成加载后创建位图数据,然后可能会分派一个事件,以便任何需要位图数据的人都知道它已准备好,然后使用它。如果您正在预加载所有内容,您可以在加载栏显示时完成所有操作,这样当您的应用程序实际启动时,信息就准备好了,您可以用它做任何您想做的事情。是的,正如我对Omnomlets说的,您都是正确的。但我的问题是让构造函数体知道这些值,并将它们用作参数,从类的构造函数实例化一个新对象(如果可能的话,也可以用另一种方式)。是的,正如我对Omnomlets所说的,你们都是对的。但我的问题是让构造函数体知道这些值,并将它们用作参数,从类的构造函数实例化一个新对象(或者以其他方式,如果可能的话)。