所有这些功能都会出现此错误。 setuplayer,makeBalloons和makeBalloon。我从老师那里复制并粘贴了这段代码。所以我不知道在试图让这些气球在游戏中产生时可能会遇到什么困难。在我添加触摸层之前它会运行但没有产生气球。所以我决定添加一个触摸层,然后我就遇到了这些错误。
private function setupTouchLayer(evt: Event): void {
touchLayer.graphics.beginFill(0x000000, 0);
touchLayer.graphics.drawRect(0, 0,stage.stageWidth, stage.stageHeight);
touchLayer.graphics.endFill();
}
private function makeBalloons(): void {
balloonSpawnCounter++;
if (balloonSpawnCounter > balloonSpawnDelay) {
balloonSpawnCounter = 0;
balloonSpawnDelay -= difficultyRate;
difficulty += difficultyRate;
makeBalloon();
}
}
private function makeBalloon(): void {
var i: int;
for (i = 0; i < Math.floor(difficulty); i++) {
var newBalloon: Balloon = new MouseBalloon();
newBalloon.x = 1050;
newBalloon.y = Math.random() * 300 + 150;
newBalloon.xVel = (-Math.random() * difficulty) - 5;
newBalloon.sinMeter = Math.random() * 10;
newBalloon.bobValue = Math.random() * difficulty;
newBalloon.addEventListener(Particle.PURGE_EVENT, purgeBalloonHandler);
balloonsLayer.addChild(newBalloon);
balloons.push(newBalloon);
}
}
private function purgeBalloonHandler(evt: Event): void {
var targetBalloon: Particle = Particle(evt.target);
purgeBalloon(targetBalloon);
}
private function purgeBalloon(targetBalloon: Particle): void {
targetBalloon.removeEventListener(Particle.PURGE_EVENT, purgeBalloonHandler);
try {
var i: int;
for (i = 0; i < balloons.length; i++) {
if (balloons[i].name == targetBalloon.name) {
balloons.splice(i, 1);
balloonsLayer.removeChild(targetBalloon);
i = balloons.length;
}
}
} catch (e: Error)
{
trace("Failed to delete arrow!", e);
}
}
private function hitTest(shark: Particle): void {
for each(var balloon: Balloon in balloons) {
if (balloon.status != "Dead" && balloon.hitTestPoint(shark.x, shark.y)) {
balloon.destroy();
}
}
}
private function update(evt: Event): void {
for each(var balloon: Particle in balloons) {
balloon.update();
}
makeBalloons();
}
}
}
}
答案 0 :(得分:3)
如果要将代码从类文件复制并粘贴到时间轴中,则必须删除所有package
或class
块以及任何范围关键字,例如private
,{{ 1}},public
,protected
等。
例如,如果您有以下.as文件:
final
要将其放在时间轴关键帧上,您必须将其更改为:
package com.mystuff {
public class ExampleClass extends Object {
public function ExampleClass(){
trace("Hello World!");
}
private function doSomething():void {
trace("Doing something...");
}
}
}
与类名同名的函数,您希望它自己位于代码的顶部。所有其他功能,只需删除公共和私人关键字。
现在,如果您想在实际的类文件中使用该代码(这很好),您可以执行以下操作:(假设您只有代码而不是文件,并且正在使用Animate / FlashPro作为您的IDE)。
在AnimateCC中,转到文件 - &gt; new并选择ActionScript 3.0 Class。为它提供与您在代码中看到的匹配的类名。
粘贴您的代码。
将文件保存在与.fla相同的目录中,假设代码以trace("Hello World");
function doSomething():void {
trace("Doing Something...");
}
开头。如果代码以package {
之类的方式开头,则该文件应保存在名为package com.mystuff
的子文件夹中,该子文件夹位于另一个名为mystuff
的文件夹中,该文件夹与.fla。在同一目录中。
要在时间轴(或其他类文件)中使用该类文件,您必须像这样实例化它:
com
如果您使用的是类文件但收到错误,则可能意味着您意外关闭了类块,如下所示:
import com.mystuff.ExampleClass;
var ec:ExampleClass = new ExampleClass();
ec.dosomething();