0

我在外部设置了一个代码。类文件 这个类文件允许一些鼠标功能,例如使用色板进行颜色转换。现在代码运行良好,但它似乎只在第 1 帧中工作。我想在加载 as 时将我的所有作品从第 1 帧移动到第 4 帧。class 文件以在第 4 帧中伴随我的功能。所以基本上我只是想将所有内容从第 1 帧移动到第 4 帧。这是如何完成的?我尝试发布设置并将 eport 类选项更改为第 4 帧,但没有成功。这是我在外部的代码。文件。

package code
{
    /*****************************************
     * DrawingSample4 :
     * Demonstrates dynamic color transformations.
     * -------------------
     * See 4_color.fla
     ****************************************/

    import fl.events.SliderEvent;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.SimpleButton;
    import flash.display.MovieClip;
    import flash.geom.ColorTransform;



    public class Drawing5 extends MovieClip
    {
        //*************************
        // Properties:

        public var activeSwatch:MovieClip;

        // Color offsets
        public var c1:Number = 0;   // R
        public var c2:Number = 51;  // G
        public var c3:Number = 51;  // B

        //*************************
        // Constructor:

        public function Drawing5()
        {


            // Respond to mouse events
            swatch1_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            swatch2_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            swatch3_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            swatch4_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            swatch5_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            swatch6_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
            apply_btn.addEventListener(MouseEvent.CLICK,clickHandler,false,0,true);
            previewBox_btn.addEventListener(MouseEvent.MOUSE_DOWN,dragPressHandler);

            // Respond to drag events
            red_slider.addEventListener(SliderEvent.THUMB_DRAG,sliderHandler);
            red_slider.addEventListener(Event.CHANGE,sliderHandler);
            green_slider.addEventListener(SliderEvent.THUMB_DRAG,sliderHandler);
            green_slider.addEventListener(Event.CHANGE,sliderHandler);
            blue_slider.addEventListener(SliderEvent.THUMB_DRAG,sliderHandler);
            blue_slider.addEventListener(Event.CHANGE,sliderHandler);

            // Respond to textfield events
            hexc1_txt.addEventListener(Event.CHANGE,changeHexHandler);
            hexc2_txt.addEventListener(Event.CHANGE,changeHexHandler);
            hexc3_txt.addEventListener(Event.CHANGE,changeHexHandler);
            c1_txt.addEventListener(Event.CHANGE,changeRGBHandler);
            c2_txt.addEventListener(Event.CHANGE,changeRGBHandler);
            c3_txt.addEventListener(Event.CHANGE,changeRGBHandler);

            // Draw a frame later
            addEventListener(Event.ENTER_FRAME,draw);


        }





        //*************************
        // Initialization:

        protected function draw(event:Event):void
        {




            // Set color transformations
            swatch1_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,127,0,97);
            swatch2_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,130,0,0);
            swatch3_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,10,106,0);
            swatch4_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,0,51,51);
            swatch5_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,0,51,102)
            swatch6_btn.chipfill.transform.colorTransform = new ColorTransform(0,0,0,1,127,127,127);
            previewBox_btn.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);

            // Handle listeners...
            removeEventListener(Event.ENTER_FRAME,draw);
        }

        //*************************
        // Event Handling:

        protected function dragPressHandler( event:MouseEvent ):void
        {
            activeSwatch = new Swatch();
            activeSwatch.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
            activeSwatch.addEventListener(MouseEvent.MOUSE_UP,dragReleaseHandler);          
            activeSwatch.startDrag(true);
            addChild(activeSwatch);
        }

        protected function dragReleaseHandler( event:MouseEvent ):void
        {
            if( activeSwatch.hitTestObject(car) ){
                car.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
            }
            activeSwatch.stopDrag();
            activeSwatch.removeEventListener(MouseEvent.MOUSE_UP,dragReleaseHandler);           
            removeChild(activeSwatch);
        }

        protected function clickHandler(event:MouseEvent):void
        {
            car.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
        }

        protected function changeRGBHandler(event:Event):void
        {
            c1 = Number(c1_txt.text);
            c2 = Number(c2_txt.text);
            c3 = Number(c3_txt.text);

            if(!(c1>=0)){
                c1 = 0;
            }
            if(!(c2>=0)){
                c2 = 0;
            }
            if(!(c3>=0)){
                c3 = 0;
            }
            hexc1_txt.text = c1.toString(16);
            hexc2_txt.text = c2.toString(16);
            hexc3_txt.text = c3.toString(16);

            updateSliders();
        }

        protected function changeHexHandler(event:Event):void
        {
            c1 = parseInt("0x"+hexc1_txt.text);
            c2 = parseInt("0x"+hexc2_txt.text);
            c3 = parseInt("0x"+hexc3_txt.text);

            if(!(c1>=0)){
                c1 = 0;
            }
            if(!(c2>=0)){
                c2 = 0;
            }
            if(!(c3>=0)){
                c3 = 0;
            }
            c1_txt.text = c1.toString();
            c2_txt.text = c2.toString();
            c3_txt.text = c3.toString();

            updateSliders();
        }

        protected function sliderHandler( event:SliderEvent ):void
        {
            switch( event.target )
            {
                case red_slider:

                    c1 = red_slider.value;
                    break;

                case green_slider:

                    c2 = green_slider.value;
                    break;

                case blue_slider:

                    c3 = blue_slider.value;
                    break;
            }
            updateFields();
        }

        protected function swatchHandler(event:MouseEvent):void
        {
            switch( event.target.parent )
            {
                case swatch1_btn:

                    c1 = 127;
                    c2 = 0;
                    c3 = 97;
                    break;

                case swatch2_btn:

                    c1 = 130;
                    c2 = 0;
                    c3 = 0;
                    break;

                case swatch3_btn:

                    c1 = 10;
                    c2 = 106;
                    c3 = 0;
                    break;

                case swatch4_btn:

                    c1 = 0;
                    c2 = 51;
                    c3 = 51;
                    break;

                case swatch5_btn:

                    c1 = 0;
                    c2 = 51;
                    c3 = 102;
                    break;

                case swatch6_btn:

                    c1 = 127;
                    c2 = 127;
                    c3 = 127;
                    break;
            }
            updateFields();
            updateSliders();
        }

        //*************************
        // Utils:

        protected function updateFields():void
        {
            hexc1_txt.text = c1.toString(16);
            hexc2_txt.text = c2.toString(16);
            hexc3_txt.text = c3.toString(16);

            c1_txt.text = c1.toString();
            c2_txt.text = c2.toString();
            c3_txt.text = c3.toString();

            previewBox_btn.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
        }

        protected function updateSliders():void
        {
            red_slider.value = c1;
            green_slider.value = c2;
            blue_slider.value = c3;

            previewBox_btn.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
        }


    }

}
4

2 回答 2

0

我认为您的问题是您以前使用 Drawing5 作为文档类。现在您想在第 4 帧中单独运行它。为此,您需要为 Drawing5 类提供对您的 swfs 阶段的引用,以便它现在知道在哪里可以找到所有这些对象。

var d5:Drawing5 = new Drawing5(this);

然后向 Drawing5 类添加一个名为 _container (或其他东西)的属性

private var _container:MovieClip;

然后在您的 Drawing 5 构造函数中,更改它以适应新的 var 并设置容器

public function Drawing5(container:MovieClip){
    _container = container;
}

然后在 Drawing5 中,更改引用列表或按钮等对象的所有调用,以将容器包含在路径中,如下所示:

// Respond to mouse events
_container.swatch1_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);

我希望我正确理解了您的问题,这会有所帮助。

于 2012-10-31T02:43:43.383 回答
0

问题是当您加载/调用此类时,它正在寻找舞台上的对象,如果它们不存在,它将引发错误。所以你不应该调用它,直到它与它正在寻找的项目在同一个框架上。因此,如果您要查找的所有项目都在第 4 帧上,那么您应该调用它。

所以转到第 4 帧并添加以下代码:

var myDrawings5 = new Drawing5();

另一种选择是将当前在构造函数中的代码移动到一个名为 init() 的新公共函数中。然后,您可以随时加载该类,但在项目出现在舞台上之前不要调用 init()。

public function Drawing5(){
  // now emtpy
}

public function init(){
  // move code from Drawing5() here
}

然后加载它并在需要的地方调用它

var myDrawings5 = new Drawing5();
myDrawings5.init();
于 2012-10-29T00:36:20.943 回答