在 rightparen 之前期望冒号并在 if 之前期望标识符

Posted

技术标签:

【中文标题】在 rightparen 之前期望冒号并在 if 之前期望标识符【英文标题】:expecting colon before rightparen and expecting identifier before if 【发布时间】:2014-09-02 16:32:04 【问题描述】:

另一个可能很愚蠢的问题。 我遵循了一个教程(Richard Parnaby-King 的爆破游戏)。

我遇到了这个我似乎无法修复的恼人错误。

main.as(称为 test1):

package

import flash.display.MovieClip; 
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.Timer;

[SWF(width='800',height='600',backgroundColor='#FFFFFF',frameRate='25')]

public class Test1 extends MovieClip


     var icon:FacebookIcon = new FacebookIcon();
     var background:BG = new BG();

     private var timer:Timer = new Timer(5000,-1);
     private var bubbles:Array = [];
     private var score:int;
     private var textBox:TextField = new TextField;
     private var textFormat:TextFormat = new TextFormat(null, 30);

    public function Test1(); void
       

        if(stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);

    
    private function init(Event = null):void 
    
        removeEventListener(Event.ADDED_TO_STAGE, init);
        // entry point

        //add start button
        icon.addChild(new StartButton());
        icon.addEventListener(MouseEvent.CLICK, startGame);
        icon.buttonMode = true;
        icon.x = (stage.stageWidth / 2) - (icon.width / 2);
        icon.y = (stage.stageHeight / 2) - (icon.height / 2);
        addChild(icon);


        textBox.defaultTextFormat = textFormat; 

        private function startGame(e:MouseEvent):void 
                 icon.removeEventListener(MouseEvent.CLICK, startGame);
                 removeChild(icon);
                 removeChild(background);
                 timer.addEventListener(TimerEvent.TIMER_COMPLETE, createBubble);
                 timer.start();
                 createBubble();
                 score = 0;
        

我得到了错误 1084: 语法错误:在 if 之前需要标识符

-1084:语法错误:在右括号之前需要冒号

就在哪里

if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);

我做错了什么?尝试了一切。 非常感谢

【问题讨论】:

好吧,你的类、包和 init 方法中缺少右大括号 - 这只是复制和粘贴错误吗? 【参考方案1】:

在构造函数的返回类型之前有一个分号。它应该是一个冒号:

public function Test1(): void
   

    if(stage) init();
    else addEventListener(Event.ADDED_TO_STAGE, init);


【讨论】:

@Net.Uk.Sweet.. 是的,但是那些缺少的花括号呢?我不知道我们可以摆脱那种那种嘘声,我的意思是,代码!!。不应该是:else addEventListener(Event.ADDED_TO_STAGE, init); 等等 正是现在我得到 标签必须是一个简单的标识符。 in new var icon:FacebookIcon = new FacebookIcon;新的 var bg:BG = 新的 BG; @VC.One - 这是 ActionScript 3.0 和 javascript 中完全合法的 if else 语句。在 Chrome 的开发工具的控制台中尝试一下。 Facebook 或 BG 类中的错误?我认为您发布的其余代码看起来还不错。 @net.uk.sweet.. 你是对的。我刚刚尝试过,AS3 did 让我摆脱了那种语法!!。每天学习新技巧。虽然我仍然更喜欢花括号,特别是对于复杂/嵌套循环。更容易看到一件事在哪里结束,另一件事从哪里开始..

以上是关于在 rightparen 之前期望冒号并在 if 之前期望标识符的主要内容,如果未能解决你的问题,请参考以下文章

语法错误 - rightparen - ActionScript 3 - 使用数组

foreach 没有很好地阅读 .descendants 并在 if 之前转到 else 语句

我应该如何在 awk 中使用 if-else 语句?

流程控制语句 if

在包括冒号之前删除所有内容并将逗号替换为换行符

使用正则表达式用单冒号而不是双冒号拆分