字段值不更新

时间:2011-06-28 19:17:18

标签: flash actionscript-3 data-binding binding flash-cs5

我真的,真正地在网上寻找一个基本的评分系统,找不到真正有用的系统。也许这只是我/我的游戏,但没有任何作用。 我正在尝试使用动态文本框。所以我得到了一个得分。 但是当我说:“分数=分数+10;” 什么都没发生。所以,是的,请帮助。我要提出大部分游戏代码,看看它是否是别的东西,并且只有~30行......我想要它,所以当两个物体碰撞时,分数上升。谢谢 哦,我闪现告诉我后,我嵌入了文字。因此第一行↓。

import flash.text.*;
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
import flash.text.TextField;

var pressedKeys:Object = {}; 

// BASIC KEYBOARD MOVEMENT - Took it out as it is almost defs irrelevant.


var Score = 10 
var myText:TextField = new TextField();
addChild(myText);
myText.text = ("Score:"+ Score);
myText.textColor = 0xFF0000;
myText.border = true;
myText.height = 20;
myText.x = 4;
myText.y = 4;

addEventListener(Event.ENTER_FRAME, hitTest)
function hitTest(e:Event):void
{
    if(Hero_Mc.hitTestObject(Enemy_mc)&& (Enemy_mc.width<Hero_Mc.width))
   {
      Hero_Mc.width=Hero_Mc.width +4;
      Hero_Mc.height=Hero_Mc.height +4;
      Enemy_mc.stop();
        removeChild(Enemy_mc);
        addChild(Enemy_mc);
        Enemy_mc.x= Math.floor(Math.random()*500);
        Enemy_mc.y= Math.floor(Math.random()*350);
        Score = Score + 10;
    }
}

2 个答案:

答案 0 :(得分:1)

没有任何变化,因为myText.text只接收Score的值,而不是实际的参考值。您可以使用BindingUtils。或者,您可以更改以下行:

var Score = 10;

private var _score = 10;
protected function set Score(value:Number):void {
    _score = value;
    //Now, whenever you set Score to anything, it also sets the text on myText.
    myText.text = ("Score:"+ Score);
}

protected function get Score():Number {
    return _score;
}

另外,我同意公民的意见。 ActionScript约定是使用小写变量,_prefixed用于私有变量。

答案 1 :(得分:0)

这是一个更好的语法:

var score:Number = 10;
score += 10;

if if语句是否为true?