您真正需要做的就是給這兩個實例的引用相同的陣列,或者給Perso一個參考Jeau。靜態變量是一個really bad idea,即使這種情況沒有固有的東西可以阻止它們爲你工作。
這是一個使用Dependency Injection解決方案將是什麼樣子:
package model {
public class Jeau extends EventDispatcher {
protected var _tMap1:Array = new Array();
protected var _tMap2:Array = new Array();
protected var _tMap3:Array = new Array();
//consider using more descriptive variable names
//or an array of arrays (one map in each index)
public function get tMap1():Array {
return _tMap1;
}
public function set tMap1(value:Array):void {
if (value != _tMap1) {
_tMap1 = value;
dispatchEvent(new Event('tMap1Changed'));
}
}
public function get tMap2():Array {
return _tMap2;
}
public function set tMap2(value:Array):void {
if (value != _tMap2) {
_tMap2 = value;
dispatchEvent(new Event('tMap2Changed'));
}
}
public function get tMap3():Array {
return _tMap3;
}
public function set tMap3(value:Array):void {
if (value != _tMap3) {
_tMap3 = value;
dispatchEvent(new Event('tMap3Changed'));
}
}
protected function somethingThatChangesMap1(index:int, value:String):void {
_tMap1[index] = value;
dispatchEvent(new Event('tMap1Changed'));
}
}
}
我認爲這是一個視圖類 - 你有沒有考慮到許多細節。您可以監聽模型類中的事件,然後根據這些數組中的任何內容更新視圖。通過獲取整個實例,您有能力傾聽這些事件。否則,您必須使用其他一些機制來傳達更改(例如Ro enter link description here botLegs中使用的事件總線)。
package view {
class Perso extends MovieClip {
protected var jeau:Jeau;
public function get jeau():Jeau {
return _jeau;
}
public function set jeau(value:Jeau):void {
if (value != _jeau) {
_jeau = value;
_jeau.addEventListener('map1Changed', doMap1Stuff);
_jeau.addEventListener('map2Changed', doMap2Stuff);
_jeau.addEventListener('map3Changed', doMap3Stuff);
doMap1Stuff();
doMap2Stuff();
doMap3Stuff();
}
}
protected function doMap1Stuff(e:Event=null) {
//do actions depending on the state of map1 here
}
protected function doMap2Stuff(e:Event=null) {
//do actions depending on the state of map2 here
}
protected function doMap3Stuff(e:Event=null) {
//do actions depending on the state of map3 here
}
}
}
這只是如何使用第三個類來組合前兩個的例子。我不一定這樣做:
package control {
public class MainGame {
protected var jeau:Jeau;
protected function perso:Perso;
public function MainGame() {
jeau = new Jeau();
//jeau setup
perso = new Perso();
perso.jeau = jeau;
}
}
}
難以理解的問題的語言。如果你可以專注於清理你的問題,這將會有很大的幫助。當你實例化Perso.as傳遞給你的Jeu.as類的引用時。 – BadFeelingAboutThis
(對不起,我英語不好...)簡而言之,我想將t_map值從我的jeu.as帶到perso.as中的其他變量 – Janick
你確定靜態變量不能工作嗎?即使't_map1'發生變化,訪問'Jeu.t_map1 [0]'(例如)將會給你當前的值。 –