-1

我遇到了一个严重的问题,因为我对 as3 不太了解。

我在时间轴第一帧的项目中有一个动作脚本代码,代码是:

stop();


    import flash.display.BitmapData;
    import flash.display.SimpleButton
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.errors.IOError;
    import flash.events.ProgressEvent;
    import flash.net.FileFilter;
    import flash.net.FileReference;
    import flash.net.URLVariables;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.utils.ByteArray;

    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;


    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequestHeader;
    import flash.geom.ColorTransform;

    import flash.geom.Matrix;
    import flash.display.LoaderInfo;
    import flash.events.IOErrorEvent;
    import flash.events.SecurityErrorEvent;


import com.drooza.*;
import caurina.transitions.Tweener;

const thumbWidth:int = 90;
const numThumbsShown:int = 5;

var thumb_array:Array = [];
var thumbContainer:Sprite = new Sprite(), 
    pictureContainer:Sprite = new Sprite();

var leftMostThumb:int = 0; //for sliding thumbs
var currentThumb:int = 0;
var thumbsXML:XMLReader = new XMLReader("gallery.xml");

var thumbcurrentThumbList:XMLList;
var pictureLoader:Loader;


//var _browseBtn: SimpleButton;


thumbsXML.init();
thumbsXML.addEventListener(Event.COMPLETE, thumbCompleteHandler);

pictureContainer.addEventListener(MouseEvent.CLICK, gotoLargePicture);
pictureContainer.buttonMode = true;
pictureContainer.mouseChildren = false;
pictureContainer.x = 10;
pictureContainer.y = 10;

addChild(pictureContainer);
addChildAt(thumbContainer, getChildIndex(mask_mc) - 1);

with(thumbContainer)
{
    mask = mask_mc;
    x = mask_mc.x;
    y = mask_mc.y;
}

thumbsXML.parseXML = function() {
    clearContainer(thumbContainer);

    try {
//  <gallery albumDir="albums/">
//  <album galleryDir="album-1/" thumbDir="thumbs/" sizedDir="sized/" largeDir="large/">
//      <image url="2009-Lotus-Evora-Front-1280x960.jpg"><![CDATA[Caption for the image 1]]></image>
        trace(thumbsXML.xmlData..album.length() + " albums found.");

        for each(var album:XML in thumbsXML.xmlData..album)
        {
            trace("ALBUM: \n" + album);
            for each(var image:XML in album.image)
            {
                trace("THUMB\n" + image);
                //create client thumbs and add them to container
                var thumb:Thumb = new Thumb();
                thumb.imageLoader = new ImageLoader(thumb);
                thumb.x = (thumbContainer.numChildren * (thumbWidth + 10));

                thumb.imageLoader.loadImage(thumbsXML.xmlData.@albumDir + album.@dir + album.@galleryDir + album.@thumbDir + image.@url);
                thumb.addEventListener(MouseEvent.CLICK, thumbClickHandler);
                thumbContainer.addChild(thumb);
                thumb_array[thumb_array.length] = thumb;

                thumb.item = new Item({
                      image:thumbsXML.xmlData.@albumDir + album.@dir + album.@galleryDir + album.@largeDir + image.@url,
                      sized:thumbsXML.xmlData.@albumDir + album.@dir + album.@galleryDir + album.@sizedDir + image.@url,
                      thumb:thumbsXML.xmlData.@albumDir + album.@dir + album.@galleryDir + album.@thumbDir + image.@url, 
                      description:image.text()
                      });


            }
        }

        leftArrow.addEventListener(MouseEvent.CLICK, moveLeft);
        rightArrow.addEventListener(MouseEvent.CLICK, moveRight);

        showThumbContents();
    }
    catch(e:Error)
    { 
        trace(":: Error parsing XML.");
        trace("Caught: " + e.getStackTrace());
    }
}





function thumbClickHandler(e:MouseEvent):void {
    var thumb:Thumb = e.target as Thumb;
    currentThumb = thumbContainer.getChildIndex(thumb);
    showThumbContents();
}

function showThumbContents():void {
    var thumb:Thumb = thumbContainer.getChildAt(currentThumb) as Thumb;
    clearContainer(pictureContainer);
    try
    {
        pictureLoader = new Loader();

        pictureLoader.load(new URLRequest(thumb.item.sized));
        pictureLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
        pictureLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
        pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, pictureCompleteHandler);


        pictureContainer.addChild(pictureLoader);
    }
    catch(e:TypeError){
        trace("Error showing thumb contents.\n\t" + e.getStackTrace());
    }
}


function gotoLargePicture(e:MouseEvent = null):void {
    trace("GOTO LARGE PICTURE");
    var thumb:Thumb = thumbContainer.getChildAt(currentThumb) as Thumb; 
    navigateToURL(new URLRequest(thumb.item.image), "_blank");
}

function IOErrorHandler(e:IOErrorEvent):void {
    trace("IOErrorEvent!:" + e);
}

function onProgressHandler(e:ProgressEvent):void {
    trace("ProgressEvent: " + e);
    loading_mc.visible = true;
}

function pictureCompleteHandler(e:Event):void {
    //trace("Complete! " + e);
    //pictureContainer.x = 275 - (pictureContainer.width / 2)
    loading_mc.visible = false; 
}

function adjustThumbs():void {
    var temp:int = 0;
    while(temp <= currentThumb - numThumbsShown)
        temp += numThumbsShown;
    leftMostThumb = temp;

    slideThumbs();
}

function moveLeft(e:MouseEvent):void {
    if(leftMostThumb > 0)
        leftMostThumb -= numThumbsShown;
    slideThumbs();
}

function moveRight(e:MouseEvent):void {
    if(leftMostThumb < int(thumbContainer.numChildren - numThumbsShown))
        leftMostThumb += numThumbsShown;
    slideThumbs();
}

function slideToThumb(thumbNum:int):void {
    leftMostThumb = thumbNum;
    slideThumbs();
}

function slideThumbs():void {
    var slide:Object = {x:mask_mc.x - leftMostThumb * (thumbWidth + 10), time:.5, transition:"easeOut"};
    Tweener.addTween(thumbContainer, slide);
    //Tweener.addTween(clientTitleContainer, slide);
}

function prevThumb(e:MouseEvent):void {
    currentThumb--;
    if(currentThumb <= 0)
        currentThumb = thumbContainer.numChildren - 1;
    //showDescription();
    showThumbContents();
}

function nextThumb(e:MouseEvent):void {
    currentThumb++;
    if(currentThumb >= thumbContainer.numChildren)
        currentThumb = 0;
    //showDescription();
    showThumbContents();
}

function clearContainer(container:DisplayObjectContainer):void {
    while(container.numChildren > 0)
        container.removeChildAt(0);
}

function thumbCompleteHandler(e:Event){ 
    trace("thumbsXML loaded. ");
    thumbsXML.removeEventListener(Event.COMPLETE, thumbCompleteHandler);
}









//_browseBtn = browseBT;// new SimpleButton ( ) ;
//_browseBtn.useHandCursor = true;
browseBT.addEventListener ( MouseEvent.CLICK, _handleMouseEvent ) ;
//_fileFilter = new FileFilter ( "Image", "*.jpg;*.gif;*.png;" ) ;      


        function _handleMouseEvent ( evt : MouseEvent ) : void
        {

            //_fileRef = new FileReference ( ) ;
            //_fileRef.browse ( [_fileFilter] ) ;
            //_fileRef.addEventListener ( Event.SELECT, _onImageSelect ) ;

            blackmask.blackmastin.gotoAndPlay(2);

        }

现在我有另一个项目,我想放置此代码,但该项目从外部 .as 文件加载 actionscript 代码。

该代码是:

package 
{
    import flash.display.Sprite;
    import fl.motion.AdjustColor;
    import flash.filters.ColorMatrixFilter;
    import fl.events.SliderEvent;
    import com.flashcube.Transformer;
    import flash.events.MouseEvent;


    public class Main extends Sprite
    {
        private var color:AdjustColor = new AdjustColor();
        private var filter:ColorMatrixFilter;
        private var faceTransform:Transformer;

        public function Main():void
        {
            /* Required to create initial Matrix */

            color.brightness = 0;
            color.contrast = 0;
            color.hue = 0;
            color.saturation = 0;

             var newZIndex = 10;

            /* Add Listeners function */

            addListeners();
            addListeners2();
            addListeners22();

        }

        private final function addListeners():void
        {
            faceTransform                       = new Transformer(image2);
            faceTransform.color                 = 0x000FFF;
            faceTransform.showCenterCircle      = true;
            faceTransform.selectedColor         = 0x000000;
            faceTransform.selectedAlpha         = 0.5;
            faceTransform.allowScaleProportion  = true;
            faceTransform.allowRotateProportion = false;

            colorPanel.brightSL.addEventListener(SliderEvent.CHANGE, adjustBrightness);
            colorPanel.contSL.addEventListener(SliderEvent.CHANGE, adjustContrast);
            colorPanel.hueSL.addEventListener(SliderEvent.CHANGE, adjustHue);
            colorPanel.satSL.addEventListener(SliderEvent.CHANGE, adjustSaturation);


        }

        private final function adjustBrightness(e:SliderEvent):void
        {
            color.brightness = e.target.value;
            update();
        }

        private final function adjustContrast(e:SliderEvent):void
        {
            color.contrast = e.target.value;
            update();
        }

        private final function adjustHue(e:SliderEvent):void
        {
            color.hue = e.target.value;
            update();
        }

        private final function adjustSaturation(e:SliderEvent):void
        {
            color.saturation = e.target.value;
            update();
        }

        private final function update():void
        {
            filter = new ColorMatrixFilter(color.CalculateFinalFlatArray());
            image.filters = [filter];
        }







        private final function addListeners2():void
        {
            colorPanel2.brightSL.addEventListener(SliderEvent.CHANGE, adjustBrightness2);
            colorPanel2.contSL.addEventListener(SliderEvent.CHANGE, adjustContrast2);
            colorPanel2.hueSL.addEventListener(SliderEvent.CHANGE, adjustHue2);
            colorPanel2.satSL.addEventListener(SliderEvent.CHANGE, adjustSaturation2);
        }

        private final function adjustBrightness2(e:SliderEvent):void
        {
            color.brightness = e.target.value;
            update2();
        }

        private final function adjustContrast2(e:SliderEvent):void
        {
            color.contrast = e.target.value;
            update2();
        }

        private final function adjustHue2(e:SliderEvent):void
        {
            color.hue = e.target.value;
            update2();
        }

        private final function adjustSaturation2(e:SliderEvent):void
        {
            color.saturation = e.target.value;
            update2();
        }

        private final function update2():void
        {
            filter = new ColorMatrixFilter(color.CalculateFinalFlatArray());
            image2.filters = [filter];
        }


    //-------------------------------------------------

private final function addListeners22():void
        {
image.addEventListener(MouseEvent.CLICK, friendMaker);
        }

private final function friendMaker(evt:MouseEvent):void {
 //setChildIndex(image2,stage.numChildren-1);
   setChildIndex(image,numChildren+1);
}





    }

}

请问有人可以帮我混合第一个代码 int 第二个 .as 文件吗?

我附上了一个包含所有源文件的下载链接。

在框架中的文件 AdgustColor 中,有我想要转换到 Main.as 文件的操作脚本代码。

在文件scroller.fla 中有原始的Scroller。

当然,在我从时间轴帧 1 中删除 actionscript 代码之前,AdgustColor.fla 不起作用。

下载: 我的文件

4

2 回答 2

1

我要在这里对你说实话。在尝试这样的事情之前,您应该从小处着手并阅读一些关于类如何工作的教程。尽管迁移非常简单,但当需要以任何方式修改代码时,您都会遇到问题。

于 2013-01-08T22:46:22.643 回答
0

如果您不知道自己在做什么,“混合”代码尤其是来自类文件的代码并不是一个好主意。我认为这里的任何人都无法按照您希望的方式回答这个问题,这似乎是“为我做”。也许如果您提供最终结果,那么有人可能会为您做这件事。但是那里有很多代码,所以我仍然怀疑你会得到一个完美的答案。我认为您将获得的最佳答案是深入研究代码并了解其功能。最后,您将获得更好的结果,因为您将了解有关代码的所有内容,并且您将从中学到一些可以应用于其他问题的东西。希望有帮助!

于 2013-01-08T23:15:49.267 回答