私はmcLeaderboarditemという名前の私のライブラリにムービークリップを持っています。テキストフィールドを管理するためのクラスを生成しました。movieclipクラス内からムービークリップのテキストフィールドを変更するにはどうすればよいですか?
最も簡単な方法は、クラスの子を作成し、このようなドットシンタックス(documentclass)と内容のプロパティを管理することです:
var leaderItem:mcLeaderboardItem = new mcLeaderboardItem();
leaderItem.lblRank.text = "2nd";
addChild(leaderItem);
これは私のためにそれが簡単になるだろうが、私はしたいですクラス内のデータを管理して、それに付加テキストを追加することができます(接頭辞/接尾辞/操作)。 私はいくつかのプライベートプロパティを作成しました:ランク、displaynameとスコアを変更し、mcLeaderboardItemのゲッターとセッターでdocumentClassを変更しました。 クラス内のlblRank.textを変更してそれをトレースすると、lblRankt.textが変更されたことがわかりますが、コンパイラがクラスを抜けてからmovieclipのラベルのデフォルト値が再び使用されます。 上記のコードブロックでソリューションを選択しない限りクラスmcLeaderboardItemの コード:
package com.cleversprite.memorygame.ui
{
import flash.display.MovieClip;
public class mcLeaderboardItem extends MovieClip
{
//VARIABLES
//------------------------------------------------
private var _rank:int;
private var _displayname:String;
private var _score:int;
//PROPERTIES
//------------------------------------------------
public function get rank():int
{
return _rank;
}
public function set rank(v:int):void
{
_rank = v;
}
public function get displayname():String
{
return _displayname;
}
public function set displayname(v:String):void
{
_displayname = v;
}
public function get score():int
{
return _score;
}
public function set score(v:int):void
{
_score = v;
}
//CONSTRUCTOR
//------------------------------------------------
public function mcLeaderboardItem()
{
super();
init();
}
public function init():void
{
lblRank.text = String(_rank);
lblDisplayname.text= _displayname;
lblScore.text= String(_score);
}
}
誰かが私が間違っているのか見ていますか? おそらく、それは疲れのために何かばかげたものになるでしょう。 または、私がやろうとしていることをするための他の方法はありますか?
Thanx事前に。
ドキュメントクラスはどのように見えますか?あなたはコードが一度だけ実行されるように 'stop();'を持っていますか?通常は値を変更すると、古いものに切り替えるべきではありません。 – pkyeck
私はその質問について確信していません。 'rank'、' displayname'と 'score'プロパティを設定したときにテキストフィールドを更新しますか? –
@atonparkerはい、確かに、それは私がしたいことです。私は最初のコードブロック(上記)のようなコードを記述しない限り何らかの理由で彼は常にデフォルト値に設定します。 – Gigi2m02