在as3中加载时平滑图像

时间:2015-11-27 10:08:51

标签: actionscript-3 smoothing xlm

我是新来的,当谈到as3时我是一个完整的菜鸟。不知怎的,我已经设法将这些与来自不同地方的一些帮助结合起来。现在我转向你们:)

我需要对我从XML文件加载的图像和大拇指进行平滑处理。我已经尝试了很多东西,但无法使其中的任何一个工作,我得到这个错误: 场景1,层'as3',帧1,线27 1120:访问未定义的属性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);
    }
    }

3 个答案:

答案 0 :(得分:0)

如果我得到你的代码真正的问题在这里:你导入一个外部的xml文件,它可能包含你的网址和图片的名称。你不能将你的xml文件变成位图。

如果你想要对你的照片进行平滑,你需要在加载你的照片或拇指后进行平滑。 可能你的问题会像这样解决:)希望这会有所帮助

答案 1 :(得分:0)

带参数的函数的工作方式如下:函数 名称输入参数名称输入参数类型)< BR />

首先,您的函数xmlLoaded(event:Event)无法输入名为事件的输入 但是你试着做Bitmap( e.target.content );所以要使该位图行工作,你必须将你的输入名称改为 e ,如此... xmlLoaded( e : Event ); < / p>

其次,var bitmapContent:Bitmap = Bitmap( e.target.content );不正确。

这更正确var bitmapContent:Bitmap = img_Bytes_Loader.content as Bitmap;Loader的内容设置为位图,而不是将XML内容(文本)设置为位图(像素)。

无论如何假设您的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;

}

答案 2 :(得分: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);
    }
    }