Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Adobe Flash-选择舞台的特定部分,并在物体到达时播放声音_Flash_Select_Actionscript_If Statement_Adobe - Fatal编程技术网

Adobe Flash-选择舞台的特定部分,并在物体到达时播放声音

Adobe Flash-选择舞台的特定部分,并在物体到达时播放声音,flash,select,actionscript,if-statement,adobe,Flash,Select,Actionscript,If Statement,Adobe,问题就在这里。我对flash有点陌生,但我有一些知识,所以我正在尝试创建一个小足球游戏。我有球,控制装置,舞台(足球场)。问题是,我想指定舞台的一部分,因此,如果我的球进入舞台,就会播放一个声音文件,每当球进入拱门时,都会尖叫“Goal!!!”舞台是800 x 600 关于我将如何实施这一点,有什么想法吗?非常感谢您的帮助。谢谢大家! 这是我的代码: 有两种方法可以做到这一点(我猜球门区域大致为矩形): 1.)将球和球门创建为电影剪辑/显示对象,然后简单地执行hitTestObject()方法调

问题就在这里。我对flash有点陌生,但我有一些知识,所以我正在尝试创建一个小足球游戏。我有球,控制装置,舞台(足球场)。问题是,我想指定舞台的一部分,因此,如果我的球进入舞台,就会播放一个声音文件,每当球进入拱门时,都会尖叫“Goal!!!”舞台是800 x 600

关于我将如何实施这一点,有什么想法吗?非常感谢您的帮助。谢谢大家!

这是我的代码:


有两种方法可以做到这一点(我猜球门区域大致为矩形):

1.)将球和球门创建为电影剪辑/显示对象,然后简单地执行hitTestObject()方法调用以检查它们是否相互“接触”。球门的实际“触发”区域可以比视觉区域小,这样球只有在视觉上一直在球门内时才能接触到它

2.)这是圆形与矩形碰撞检测。你可以通过纯数学计算来解决这个问题。您应该能够通过搜索找到实际的算法,并且不太难编写,特别是如果目标矩形与轴对齐(与舞台成0或90度角)


第二种方法工作更快,可能更准确,尽管第一种方法可能是一种快速而肮脏的方法,只是让它首先工作。这两种方法都可以返回一个布尔值,如果为true,则播放声音。要播放声音,请查看声音{}类。

嗨,谢谢!!!!hitTestObject()工作起来很有魅力……整天都在烦我。再次感谢你。
 

import flash.display.*; import flash.events.*; var begin = new Begin(); var pelota = new Pelota(); var field = new SoccerField(); //Calling methods game beginGame(); //creating the welcome screen function beginGame(){ begin.x = 0; begin.y = 0; addChild(begin); pelota.x = 400; pelota.y = 425; addChild(pelota); } pelota.addEventListener(MouseEvent.CLICK, startGame); function startGame(event:Event) : void{ field.x = 400; field.y = 300; addChild(field); pelota.x = 400; pelota.y = 300; pelota.scaleX = .2; pelota.scaleY = .2; addChild(pelota); } stage.addEventListener(KeyboardEvent.KEY_DOWN, control); function control (evt:KeyboardEvent) : void { trace(evt.keyCode); if (evt.keyCode == Keyboard.LEFT) { pelota.x=pelota.x-5; trace('Left!'); } if (evt.keyCode == Keyboard.RIGHT) { pelota.x=pelota.x+5; } if (evt.keyCode == Keyboard.UP) { pelota.y=pelota.y-5; } if (evt.keyCode == Keyboard.DOWN) { pelota.y=pelota.y+5; } } <pre><code>