actionscript 在单击按钮后存储值
actionscript Storing a value after a button is clicked
我编程不多。有时我会编写一些 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 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;}
}
}
}
在函数 "ButtonClicked, I want to check which button is clicked. After that I want to store a value in the private var "Buttonclicked" 中,因此根据这个数字我知道需要加载哪个 FLV。但是当我导出时出现错误 "Access of Undefined property event"。这可能是必须要做的在函数中使用我的 "If" 语句,但我不知道如何解决这个问题。
有人可以帮帮我吗?我知道用 类 编程会更简洁,但我在这方面经验不足。
提前致谢,
哈罗德
你得到那个错误是因为你为你的 ButtonClicked()
函数声明了一个名为 Event
的 MouseEvent
对象并且在你使用的函数内部 event
,我认为这只是一个打字错误。
所以你的函数可以是这样的:
function ButtonClicked(event:MouseEvent):void
{
// ...
}
此外,我在您的代码中指出,您已经编写了很多代码来做一些非常简单的事情,并不需要所有这些代码。不要忘记,当你重复同样的事情 n
次(你的情况是 10 次)时,你做错了什么,你应该(可以)优化它。例如,您可以使用一个函数来执行重复任务 ...
为此,举个例子:
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.');
}
}
}
希望能帮到你。
我编程不多。有时我会编写一些 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 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;}
}
}
}
在函数 "ButtonClicked, I want to check which button is clicked. After that I want to store a value in the private var "Buttonclicked" 中,因此根据这个数字我知道需要加载哪个 FLV。但是当我导出时出现错误 "Access of Undefined property event"。这可能是必须要做的在函数中使用我的 "If" 语句,但我不知道如何解决这个问题。
有人可以帮帮我吗?我知道用 类 编程会更简洁,但我在这方面经验不足。
提前致谢, 哈罗德
你得到那个错误是因为你为你的 ButtonClicked()
函数声明了一个名为 Event
的 MouseEvent
对象并且在你使用的函数内部 event
,我认为这只是一个打字错误。
所以你的函数可以是这样的:
function ButtonClicked(event:MouseEvent):void
{
// ...
}
此外,我在您的代码中指出,您已经编写了很多代码来做一些非常简单的事情,并不需要所有这些代码。不要忘记,当你重复同样的事情 n
次(你的情况是 10 次)时,你做错了什么,你应该(可以)优化它。例如,您可以使用一个函数来执行重复任务 ...
为此,举个例子:
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.');
}
}
}
希望能帮到你。