0

私はここが初めてで、as3に関しては完全に初心者です。いろいろなところからの助けを借りて、なんとかこれをまとめることができました。そして今、私はあなたたちに目を向けます:)

XML ファイルからロードする画像とサムをスムージングする必要があります。多くのことを試しましたが、どれも機能せず、次のエラーが発生します: Scene 1, Layer 'as3', Frame 1, Line 27 1120: Access of undefined property e. ->だから私var bitmapContent:Bitmap = Bitmap( e.target.content );は問題があることを知っています。しかし、eの代わりに何を使用すればよいかわかりません。私はこれまでのところ私が持っているものです:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.transitions.easing.None;
import flash.display.Bitmap;


// Loads the first image//
var i =new Loader();
i.load(new URLRequest("images/1.jpg"));
mainLoader.addChild(i)


//Loads the XML file//
var picsXML:XML;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE ,  xmlLoaded);
xmlLoader.load(new URLRequest("imagelist.xml"));


//Loads images into thumbs//
function xmlLoaded(event:Event):void{
    picsXML = new XML(xmlLoader.data);
    //trace(picsXML);
    var bitmapContent:Bitmap = Bitmap( e.target.content );
    bitmapContent.smoothing = true;
    var thumbLoader:UILoader;
    for (var i:uint=0; i<picsXML.image.length(); i++)

    {
        thumbLoader=UILoader(getChildByName("thumb"+i));
        thumbLoader.load(new URLRequest("thumbs/"+picsXML.image[i].@file));
        thumbLoader.buttonMode = true;
        thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked);
        thumbLoader.addEventListener(MouseEvent.CLICK, tester); 
    }
}

//Loads large image when thumb is clicked//
function thumbClicked(event:MouseEvent){
    //var bitmapImage:Bitmap = event.target.content;
    //bitmapImage.smoothing = true;
    var thumbName:String = event.currentTarget.name;
    var thumbIndex:uint = uint(thumbName.substr(5));
    var fullPath:String = "images/"+picsXML.image[thumbIndex].@file;
    mainLoader.load(new URLRequest(fullPath));
    var myTween:Tween = new Tween(mainLoader,"alpha", None.easeNone, .3,1,18,false);

}

//Removes the first image when thumbs is clicked//
function tester(event:MouseEvent){
    if (mainLoader.contains(i)) {
        trace("hej")
     mainLoader.removeChild(i);
    }
    }
4

3 に答える 3

0

引数を持つ関数は次のように機能します: function Name ( input arg Name : input arg Type )

まず、あなたの関数はeventxmlLoaded(event:Event)と呼ばれる入力を持つことはできませんが、そのビットマップ行が機能 するようにしようとすると、入力名をeに変更する必要があります...Bitmap( e.target.content );xmlLoaded( e : Event );

第二に、var bitmapContent:Bitmap = Bitmap( e.target.content );間違っています。

これは、ビットマップ (ピクセル) としての XML コンテンツ (テキスト) ではなく、ビットマップとしてコンテンツをvar bitmapContent:Bitmap = img_Bytes_Loader.content as Bitmap; 設定する方が正しいです。Loader

とにかく、XML ファイルが次のようになっていると仮定します。

<?xml version="1.0" encoding="UTF-8"?>

<Items>

    <mp3>
        <url> track1.mp3 </url>     
        <image> image1.jpg </image>
    </mp3>

    <mp3>
        <url> track2.mp3 </url>     
        <image> image2.jpg </image>
    </mp3>

</Items>

次に、コードは次のようになります。

var imgLoader_XML : URLRequest;
var picLoader : Loader = new Loader();

function xmlLoaded(event:Event):void
{
    picsXML = new XML(xmlLoader.data);
    //trace(picsXML);

    imgLoader_XML = new URLRequest( picsXML.mp3[ index ].image ); //[index] could be replaced with [i] if FOR loop
    picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, picloadComplete);
    picLoader.load (imgLoader_2);
}

public function picloadComplete(evt:Event)
{
    yourContainer.addChild(picLoader);
    yourContainer.width = 100;
    yourContainer.height = 100;
    yourContainer.alpha = 1;

}
于 2015-11-27T21:46:39.163 に答える
0

私があなたのコードを取得した場合、本当の問題はここにあります:あなたのURLと写真の名前がおそらく含まれている外部xmlファイルをインポートします。xml ファイルをビットマップに変換できません。

あなたの写真を滑らかにしたい場合は、あなたの写真や親指をロードした後にそれを行う必要があります。おそらくあなたの問題はこのように修正されるでしょう:)これが役立つことを願っています

于 2015-11-27T14:11:46.327 に答える
0

入力してくれてありがとう。大変感謝しております。私はそれを考え出した。もちろん、UILoader にスムージングを適用することはできないため、UILoader のコンテンツをターゲットにして、thumbLoader.addEventListener(Event.COMPLETE, Smoothing); を実行する必要がありました。画像がインポートされるたびに。

これが作業コード全体です(おそらく他の誰かを助けることができます:):

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.transitions.easing.None;
import flash.display.Bitmap;
import flash.display.Loader;


// Loads the first image//
var i =new Loader();
i.load(new URLRequest("images/1.jpg"));
mainLoader.addChild(i)


//Loads the XML file//
var picsXML:XML;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE ,  xmlLoaded);
xmlLoader.load(new URLRequest("imagelist.xml"));


//Loads images into thumbs//
function xmlLoaded(event:Event):void{
    picsXML = new XML(xmlLoader.data);
    var thumbLoader :UILoader = new UILoader(); 

    for (var i:uint=0; i<picsXML.image.length(); i++)

    {
        thumbLoader=UILoader(getChildByName("thumb"+i));
        thumbLoader.load(new URLRequest("thumbs/"+picsXML.image[i].@file));
        thumbLoader.buttonMode = true;
        thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked);
        thumbLoader.addEventListener(MouseEvent.CLICK, tester);
        thumbLoader.addEventListener(Event.COMPLETE, smoothing);
    }

}

function smoothing(e:Event):void{
            if(e.currentTarget.content is Bitmap)
            {
                Bitmap(e.currentTarget.content).smoothing = true;
            }
}

//Loads large image when thumb is clicked//
function thumbClicked(event:MouseEvent){

    var thumbName:String = event.currentTarget.name;
    var thumbIndex:uint = uint(thumbName.substr(5));
    var fullPath:String = "images/"+picsXML.image[thumbIndex].@file;
    mainLoader.load(new URLRequest(fullPath));
    mainLoader.addEventListener(Event.COMPLETE, smoothing);
    var myTween:Tween = new Tween(mainLoader,"alpha", None.easeNone, .3,1,18,false);


}

//Removes the first image when thumbs is clicked//
function tester(event:MouseEvent){
    if (mainLoader.contains(i)) {
        trace("hej")
     mainLoader.removeChild(i);
    }
    }
于 2015-11-30T10:53:46.567 に答える