动作单击按钮后存储一个值 [英] actionscript Storing a value after a button is clicked
问题描述
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屋!