Значение поля не обновляется - PullRequest
1 голос
/ 28 июня 2011

Я искренне, искренне искал ВСЕ в Интернете базовую систему подсчета очков и не могу найти ту, которая действительно работает.Может быть, это только я / моя игра, но ничего не работает.Я пытаюсь сделать это с помощью динамического текстового поля.Итак, у меня есть стартовый счет.Но когда я ставлю: «Оценка = Оценка + 10;»
Ничего не происходит.Так что да, любая помощь, пожалуйста.Я собираюсь выложить большую часть игрового кода, чтобы увидеть, не является ли это чем-то другим, и там всего ~ 30 строк ... Я хочу, чтобы, когда два объекта сталкиваются, счет возрастал.СПАСИБО О, и я вложил текст, после того, как Flash сказал мне.Отсюда первая строка ↓.

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 ]

1 голос
/ 28 июня 2011

Ничего не меняется, потому что 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 для закрытых переменных.

0 голосов
/ 28 июня 2011

Это немного лучший синтаксис:

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

Это если оператор оценивает значение true?

...