动作单击按钮后存储一个值 [英] actionscript Storing a value after a button is clicked

查看:278
本文介绍了动作单击按钮后存储一个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不会编程很多。有时我编写一些Actionscript 3.现在我想创建一个Flash环境,人们可以点击按钮,播放视频。我想我几乎可以用下面的脚本来解决它:

  public class main extends MovieClip 
{
private var drukknop1:knopje;
private var drukknop2:knopje;
private var drukknop3:knopje;
private var drukknop4:knopje;
private var drukknop5:knopje;
private var drukknop6:knopje;
private var drukknop7:knopje;
private var drukknop8:knopje;
private var drukknop9:knopje;
private var drukknop10:knopje;
private var videoclip:FLVPlayback = new FLVPlayback();
private var buttonClicked:Number = 0;

public function main()
{
//舞台上的plaatsen van按钮
drukknop1 = new knopje();
drukknop1.name =inst_knop1;
drukknop1.x = 50;
drukknop1.y = 70;
addChild(drukknop1);
drukknop1.buttonMode = true;
drukknop1.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop1.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop2 = new knopje();
drukknop2.name =inst_knop2;
drukknop2.x = 150;
drukknop2.y = 70;
addChild(drukknop2);
drukknop2.buttonMode = true;
drukknop2.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop2.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop3 = new knopje();
drukknop3.name =inst_knop3;
drukknop3.x = 250;
drukknop3.y = 70;
addChild(drukknop3);
drukknop3.buttonMode = true;
drukknop3.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop3.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop4 = new knopje();
drukknop4.name =inst_knop4;
drukknop4.x = 350;
drukknop4.y = 70;
addChild(drukknop4);
drukknop4.buttonMode = true;
drukknop4.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop4.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop5 = new knopje();
drukknop5.name =inst_knop5;
drukknop5.x = 450;
drukknop5.y = 70;
addChild(drukknop5);
drukknop5.buttonMode = true;
drukknop5.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop5.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop6 = new knopje();
drukknop6.name =inst_knop6;
drukknop6.x = 550;
drukknop6.y = 70;
addChild(drukknop6);
drukknop6.buttonMode = true;
drukknop6.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop6.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop7 = new knopje();
drukknop7.name =inst_knop7;
drukknop7.x = 650;
drukknop7.y = 70;
addChild(drukknop7);
drukknop7.buttonMode = true;
drukknop7.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop7.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop8 = new knopje();
drukknop8.name =inst_knop8;
drukknop8.x = 750;
drukknop8.y = 70;
addChild(drukknop8);
drukknop8.buttonMode = true;
drukknop8.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop8.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop9 = new knopje();
drukknop9.name =inst_knop9;
drukknop9.x = 850;
drukknop9.y = 70;
addChild(drukknop9);
drukknop9.buttonMode = true;
drukknop9.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop9.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

drukknop10 = new knopje();
drukknop10.name =inst_knop10;
drukknop10.x = 950;
drukknop10.y = 70;
addChild(drukknop10);
drukknop10.buttonMode = true;
drukknop10.addEventListener(MouseEvent.MOUSE_UP,_flv_component);
drukknop10.addEventListener(MouseEvent.MOUSE_DOWN,ButtonClicked);

$ b private function _flv_component(event:MouseEvent):void
{
//视频播放器门的操作$ d $ b $ drukknop1。 buttonMode = false;
drukknop1.removeEventListener(MouseEvent.MOUSE_UP,_flv_component);

videoclip.x =(stage.stageWidth / 2) - (videoclip.width / 2);
videoclip.y =(stage.stageHeight / 2) - (videoclip.height / 2);
videoclip.width = 640;
videoclip.height = 400;
videoclip.autoPlay = true;
videoclip.skin =MinimaSilverPlayBackSeekMute.swf;
$ b $ if(buttonClicked == 1)
{videoclip.load(Functieomschrijvingscene.flv);}
else if(buttonClicked == 2)
{videoclip .load(2.flv);}
else if(buttonClicked == 3)
{videoclip.load(3.flv);}
else if(buttonClicked == 4)
{videoclip.load(4.flv);}
else if(buttonClicked == 5)
{videoclip.load(5.flv);}
else if(buttonClicked == 6)
{videoclip.load(6.flv);}
else if(buttonClicked == 7)
{videoclip.load(7 .flv);}
else if(buttonClicked == 8)
{videoclip.load(8.flv);}
else if(buttonClicked == 9)
{videoclip.load(9.flv);}
else if(buttonClicked == 10)
{videoclip.load(10.flv);}

videoclip.play();
addChild(videoclip);
videoclip.addEventListener(Event.COMPLETE,videoComplete);
}
function videoComplete(event:Event):void
{
// Verwijderen van FLVPlayback component
trace(video is klaar);
removeChild(videoclip);
buttonClicked = 0;
trace(buttonClicked);

$ b函数ButtonClicked(Event:MouseEvent):void
{
trace(ButtonClicked functie werkt。);
trace(buttonClicked);

// het opslaan van een nummer van een button
if(event.target.name == drukknop1)
{buttonClicked = 1;}
else if( event.target.name == drukknop2)
{buttonClicked = 2;}
else if(event.target.name == drukknop3)
{buttonClicked = 3;}
else if(event.target.name == drukknop4)
{buttonClicked = 4;}
else if(event.target.name == drukknop5)
{buttonClicked = 5;} $ b $如果(event.target.name == drukknop7)
{buttonClicked = 6;}
$ b else if(event.target.name == drukknop8)
{buttonClicked = 8;}
else if(event.target.name == drukknop9)
{buttonClicked = 9; }
else if(event.target.name ==inst_knop10)
{buttonClicked = 10;}
}
}

}

在功能ButtonClicked,我想检查哪个按钮被点击。之后,我想在私人变量Buttonclicked中存储一个值,所以基于这个数字我知道哪些FLV需要加载。但是,当我导出时,我得到一个错误访问未定义的属性事件。这可能与我在函数中的If声明有关,但我不知道如何解决这个问题。

有人可以帮我吗?我知道使用类的编程会更加整洁,但是我不需要太多经验。

在此先感谢您,
Harold

解决方案

因为你的 ButtonClicked()函数声明了一个名为 MouseEvent 事件和在你使用事件的函数里面,我认为这只是一个输入错误。


$ b $所以你的函数可以是这样的:

$ p $ function ButtonClicked(event:MouseEvent):void
{
// ...
}

另外,你已经写了很多代码来做一些非常简单的事情,而不需要所有的代码。不要忘记,当你重复同样的事情 n 次(对于你的情况是10次),你做错了事情,你应该(可以)优化。例如,你可以使用一个函数来做那个重复的任务...

为此,以这个例子:

 包{

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;

public class Main扩展MovieClip {

private const BUTTONS_NUM:int = 10;
private const BOTTONS_Y:int = 70;
private const BUTTONS_SUFFIX:String ='inst_knop';
private const VIDEOS:Array = ['1.flv','2.flv','3.flv','4.flv','5.flv','6.flv','7。 flv','8.flv','9.flv','10 .flv'];

public function Main()
{
//初始化插入到舞台中的FLVPlayback组件
videoclip.width = 640;
videoclip.height = 400;
videoclip.autoPlay = true;
videoclip.addEventListener(Event.COMPLETE,videoComplete);

createButtons();

$ b $ private function createButtons():void
{
for(var i:int = 0; i< BUTTONS_NUM; i ++){
var button:knopje = new knopje();
button.name = BUTTONS_SUFFIX +(i + 1);
button.x = i * 100 + 50;
button.y = BOTTONS_Y;
button.buttonMode = true;
button.addEventListener(MouseEvent.CLICK,playVideo);
addChild(button);



private function playVideo(event:MouseEvent):void
{
//获取按钮的索引,例如:7为按钮称为inst_knop7
var button_index:int = int((event.currentTarget.name).substr(BUTTONS_SUFFIX.length)) - 1;

//播放视频
videoclip.play('video /'+ VIDEOS [button_index]);


private function videoComplete(event:Event):void
{
trace('end of the video。');
}
}
}

希望能帮上忙。 / p>

I don't program a lot. Sometimes I program a bit of Actionscript 3. Now I wanted to create an flash enviroment where people can click on buttons and play a video. I think I almost figured it out with the following script:

public class main extends MovieClip 
{
    private var drukknop1:knopje;
    private var drukknop2:knopje;
    private var drukknop3:knopje;
    private var drukknop4:knopje;
    private var drukknop5:knopje;
    private var drukknop6:knopje;
    private var drukknop7:knopje;
    private var drukknop8:knopje;
    private var drukknop9:knopje;
    private var drukknop10:knopje;
    private var videoclip:FLVPlayback = new FLVPlayback();
    private var buttonClicked:Number = 0;

    public function main() 
    {
        // plaatsen van buttons on stage
        drukknop1 = new knopje();
        drukknop1.name = "inst_knop1";
        drukknop1.x = 50;
        drukknop1.y = 70;
        addChild(drukknop1);
        drukknop1.buttonMode = true;
        drukknop1.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop1.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop2 = new knopje();
        drukknop2.name = "inst_knop2";
        drukknop2.x = 150;
        drukknop2.y = 70;
        addChild(drukknop2);
        drukknop2.buttonMode = true;
        drukknop2.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop2.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop3 = new knopje();
        drukknop3.name = "inst_knop3";
        drukknop3.x = 250;
        drukknop3.y = 70;
        addChild(drukknop3);
        drukknop3.buttonMode = true;
        drukknop3.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop3.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop4 = new knopje();
        drukknop4.name = "inst_knop4";
        drukknop4.x = 350;
        drukknop4.y = 70;
        addChild(drukknop4);
        drukknop4.buttonMode = true;
        drukknop4.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop4.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop5 = new knopje();
        drukknop5.name = "inst_knop5";
        drukknop5.x = 450;
        drukknop5.y = 70;
        addChild(drukknop5);
        drukknop5.buttonMode = true;
        drukknop5.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop5.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop6 = new knopje();
        drukknop6.name = "inst_knop6";
        drukknop6.x = 550;
        drukknop6.y = 70;
        addChild(drukknop6);
        drukknop6.buttonMode = true;
        drukknop6.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop6.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop7 = new knopje();
        drukknop7.name = "inst_knop7";
        drukknop7.x = 650;
        drukknop7.y = 70;
        addChild(drukknop7);
        drukknop7.buttonMode = true;
        drukknop7.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop7.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop8 = new knopje();
        drukknop8.name = "inst_knop8";
        drukknop8.x = 750;
        drukknop8.y = 70;
        addChild(drukknop8);
        drukknop8.buttonMode = true;
        drukknop8.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop8.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop9 = new knopje();
        drukknop9.name = "inst_knop9";
        drukknop9.x = 850;
        drukknop9.y = 70;
        addChild(drukknop9);
        drukknop9.buttonMode = true;
        drukknop9.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop9.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

        drukknop10 = new knopje();
        drukknop10.name = "inst_knop10";
        drukknop10.x = 950;
        drukknop10.y = 70;
        addChild(drukknop10);
        drukknop10.buttonMode = true;
        drukknop10.addEventListener(MouseEvent.MOUSE_UP, _flv_component);
        drukknop10.addEventListener(MouseEvent.MOUSE_DOWN, ButtonClicked);

    }
    private function _flv_component(event:MouseEvent):void
    {
        //plaatsen van de video player door drukken op de knop 
        drukknop1.buttonMode = false;
        drukknop1.removeEventListener(MouseEvent.MOUSE_UP, _flv_component);

        videoclip.x = (stage.stageWidth/2)-(videoclip.width/2);
        videoclip.y = (stage.stageHeight/2)-(videoclip.height/2);
        videoclip.width = 640;
        videoclip.height = 400;
        videoclip.autoPlay = true;
        videoclip.skin = "MinimaSilverPlayBackSeekMute.swf";

        if(buttonClicked ==1)
        {videoclip.load("Functieomschrijvingscene.flv");}
        else if(buttonClicked ==2)
        {videoclip.load("2.flv");}
        else if(buttonClicked ==3)
        {videoclip.load("3.flv");}
        else if(buttonClicked ==4)
        {videoclip.load("4.flv");}
        else if(buttonClicked ==5)
        {videoclip.load("5.flv");}
        else if(buttonClicked ==6)
        {videoclip.load("6.flv");}
        else if(buttonClicked ==7)
        {videoclip.load("7.flv");}
        else if(buttonClicked ==8)
        {videoclip.load("8.flv");}
        else if(buttonClicked ==9)
        {videoclip.load("9.flv");}
        else if(buttonClicked ==10)
        {videoclip.load("10.flv");}

        videoclip.play();
        addChild(videoclip);
        videoclip.addEventListener(Event.COMPLETE,videoComplete);
    }
    function videoComplete(event:Event):void
    {
        //Verwijderen van FLVPlayback component
        trace ("video is klaar");
        removeChild(videoclip);
        buttonClicked = 0;
        trace (buttonClicked);

    }
    function ButtonClicked(Event:MouseEvent):void
    {
        trace ("ButtonClicked functie werkt.");
        trace (buttonClicked);

        // het opslaan van een nummer van een button
        if(event.target.name == drukknop1)
        {buttonClicked = 1;}
        else if(event.target.name == drukknop2)
        {buttonClicked = 2;}
        else if(event.target.name == drukknop3)
        {buttonClicked = 3;}
        else if(event.target.name == drukknop4)
        {buttonClicked = 4;}
        else if(event.target.name == drukknop5)
        {buttonClicked = 5;}
        else if(event.target.name == drukknop6)
        {buttonClicked = 6;}
        else if(event.target.name == drukknop7)
        {buttonClicked = 7;}
        else if(event.target.name == drukknop8)
        {buttonClicked = 8;}
        else if(event.target.name == drukknop9)
        {buttonClicked = 9;}
        else if(event.target.name == "inst_knop10")
        {buttonClicked = 10;}
    }
}

}

In the function "ButtonClicked, I want to check which button is clicked. After that I want to store a value in the private var "Buttonclicked" So that based on this number I know which FLV needs to be loaded. But when I export I get an error "Access of Undefined property event". This probably has got to do with my "If" statement in the functions but I have no clue on how to solve this.

Could someone please help me out? I know programming with classes would be much neater, but I have to little experience in this.

Thanks in advance, Harold

解决方案

You got that error because for your ButtonClicked() function you've declared an MouseEvent object called Event and inside the function you've used event, I think it's just a typing mistake.

So your function can be like this :

function ButtonClicked(event:MouseEvent):void
{
    // ...
}

Also, I remarked in your code that you've written a lot of code to do something really easy and don't need all that code. Don't forget that when you are repeating the same thing n times (10 times for your case), that you are doing something wrong and that you should (can) optimize that. You can use a function, for example, to do that repeated task ...

For that, take this example :

package {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;

    public class Main extends MovieClip {

        private const BUTTONS_NUM:int = 10;
        private const BOTTONS_Y:int = 70;
        private const BUTTONS_SUFFIX:String = 'inst_knop';
        private const VIDEOS:Array = ['1.flv', '2.flv', '3.flv', '4.flv', '5.flv', '6.flv', '7.flv', '8.flv', '9.flv', '10.flv'];

        public function Main() 
        {
            // initialize the FLVPlayback component inserted in the stage
            videoclip.width = 640;
            videoclip.height = 400;
            videoclip.autoPlay = true;
            videoclip.addEventListener(Event.COMPLETE,videoComplete);

            createButtons();
        }   

        private function createButtons(): void 
        {
            for(var i:int = 0; i < BUTTONS_NUM; i++){
                var button:knopje = new knopje();
                    button.name = BUTTONS_SUFFIX + (i+1);
                    button.x = i*100 + 50;
                    button.y = BOTTONS_Y;
                    button.buttonMode = true;
                    button.addEventListener(MouseEvent.CLICK, playVideo);
                addChild(button);
            }
        }

        private function playVideo(event:MouseEvent):void 
        {   
            // get button's index, for example : 7 for the button called "inst_knop7"
            var button_index:int = int((event.currentTarget.name).substr(BUTTONS_SUFFIX.length)) - 1;   

            // play the video
            videoclip.play('video/' + VIDEOS[button_index]);
        }

        private function videoComplete(event:Event):void 
        {
            trace('end of the video.');
        }
    }
}

Hope that can help.

这篇关于动作单击按钮后存储一个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆