2

次のように、as3のURLから画像を読み込もうとしています。

var myImageLoader:Loader = new Loader();
private var mcImage: MovieClip = new MovieClip();
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg");
myImageLoader.load(myImageLocation);
mcImage.addChild(myImageLoader);
mcImage.x = 100;
mcImage.y = 100;
//mcImage.width = 50;
//mcImage.height = 50;
addChild(mcImage);

上記のコードは問題なく動作しますが、私の希望する画像は元の画像とはサイズが異なるため、ここでサイズを変更する必要があります。したがって、上記のコードでコメント化されている行を使用すると、mcImageが消えます。

mcImage.scaleX = myImageLoader.width / 50を使用しようとしましたが、myImageLoaderが最初にロードされていないため、nullであるmyImageLoaderの幅を取得できません。

4

3 に答える 3

3

サイズの設定でエラーになることがよくあります。空の表示オブジェクト(幅と高さがゼロのオブジェクト)のサイズを設定することはできません。表示オブジェクトのサイズを設定するには、最初にその上に何かを描画する必要がありますgraphics(たとえば、1 * 1 pxの長方形)が、その後、たとえば1を描画する場合、元のサイズに対して表示オブジェクトを相対的に拡大縮小することを理解する必要があります。 * 1ピクセルの長方形で、= height = 50に設定すると、scaleXとscaleYが50になるため、ローダーについて言えば、読み込まれる画像は巨大なサイズになります:)フラッシュでのサイズ設定がすべてです。

あなたのタスクはどうですか:1つの一般的なルールがあります-ローダーのサイズを変更しないでください、ロードされた画像のサイズを変更してください。上で述べたように、ローダーのサイズ変更は、サイズを設定するのではなく、画像を拡大縮小するだけです。完全なハンドラーを追加し、必要に応じてloader.contentのサイズを変更します。

例:

public function astest()
{
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplte);
    addChild(loader);

    loader.load(new URLRequest("https://www.google.ru/images/srpr/logo3w.png"));
}

protected function onComplte(event:Event):void
{
    EventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
    var image:DisplayObject = (event.target as LoaderInfo).content;

    image.width = 50;
    image.height = 50;
}
于 2013-02-03T17:27:06.550 に答える
0

MCで遊ぶ前に、ローダーでloadCompleteイベントを取得する必要があります

var myImageLoader:Loader = new Loader();
private var mcImage: MovieClip = new MovieClip();
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg");

myImageLoader.addEventListener(Event.COMPLETE, completeHandler);
myImageLoader.load(myImageLocation);

function completeHandler(e:Event){
    mcImage.x = 100;
    mcImage.y = 100;
    mcImage.width = 50;
    mcImage.height = 50;
    addChild(mcImage);
    mcImage.addChild(myImageLoader);
}
于 2013-02-03T17:31:06.427 に答える
0

これを試して:

var myImageLoader:Loader = new Loader();
//hide until loaded
myImageLoader.visible = false;
//listen for load completed
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
//...rest of your code (without setting width/height)

次に、これを追加してサイズを変更し、ロード時に表示します。

function completeHandler(event:Event):void
{
    myImageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
    myImageLoader.content.width = 50;
    myImageLoader.content.height = 50;
    myImageLoader.visible = true;
}
于 2013-02-03T17:37:51.247 に答える