-1

as3についてあまり知らないので、深刻な問題が発生しました。

タイムライン フレーム 1 のプロジェクトに actionscript コードがあり、コードは次のとおりです。

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);

        }

今、私はこのコードを入れたい別のプロジェクトを持っていますが、このプロジェクトはactionscriptコードを外部.asファイルからロードします。

コードは次のとおりです。

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 2 番目の .as ファイルを混在させるのを手伝ってくれる人はいますか?

すべてのソース ファイルを含むダウンロード リンクを添付します。

フレーム内のファイル AdgustColor には、Main.as ファイルに転送したいアクションスクリプト コードがあります。

filescroller.fla には、元の Scroller があります。

もちろん、タイムライン フレーム 1 からアクション スクリプト コードを削除するまで、AdgustColor.fla は機能しません。

ダウンロード: myfiles

4

2 に答える 2

1

ここであなたに正直になります。このようなことを試みる前に、小さなことから始めて、クラスがどのように機能するかについてのチュートリアルを読む必要があります。移行は非常に簡単ですが、何らかの方法でコードを修正するときになると、問題が発生します。

于 2013-01-08T22:46:22.643 に答える
0

特にクラスファイルからコードを「混合」することは、自分が何をしているのかわからない場合、あまり良い考えではありません。ここにいる誰も、あなたが望むようにこの質問に答えることができるとは思いません。最終結果がどうなるかを提供すれば、誰かがあなたのためにそれをしてくれるかもしれません。そこにはたくさんのコードがありますが、それでも完璧な答えが得られるとは思えません。あなたが得ようとしている最良の答えは、コードを掘り下げて、それがどのように機能するかを学ぶことだと思います. 最終的には、コードに関するすべてを理解し、他の問題に適用できる何かを学ぶことができるため、より良い結果が得られます。それが役立つことを願っています!

于 2013-01-08T23:15:49.267 に答える