Дорисовала я вчера элементы и поняла что не смогу заснуть пока их не вставлю в игру, хотя уже в ушах звенело слегка, поэтому кодю слегка на автомате.
Итак, делаю класс BaseCellData чтобы разбирать клип с разными цветами и формами для одного соеденения на битмапы.
public class BaseCellData {
public var y:int;
public var x:int;
public var name:String;
private var _frames:Array = [];
public function BaseCellData (
name:String,
mc:MovieClip,
x:int, y:int
) {
this.x = x;
this.y = y;
this.name = name;
for (var i:int = 1; i <= mc.totalFrames; i++) {
mc.gotoAndStop(i);
_frames[i] = createBitmap(mc).bitmapData;
}
}
И забиваю себе данные.
public static var data:Object = {};
data['0000'] = new BaseCellData('cell_0000', new cell_0000(), -2, -2);
....
Таак думаю я, для начала сделаем рандомчик. Как сделать проще всего?
public function get bitmapData ():BitmapData {
return _frames[1 + Math.floor(Math.random()* (_frames.length - 1)];
}
Впихиваю в отрисовку, запускаю - после нескольких правок неправильных символов все работает, красотень! Запускаю просчет - здравствуй карнавал (на каждый просчет все ячейки перекрашиваются).
Блиин, а надо же запоминать в какой ячейке какой цвет!
Дописывается код
public var frame:int;
public function getBitmapData (frame:int = -1):BitmapData {
this.frame = frame;
if(this.frame == -1){
this.frame = 1 + Math.floor(Math.random()* (_frames.length - 1) );
}
return _frames[ this.frame];
}
Теперь я могу узнать какая картинка получена и запомнить во вьюхе, все работает, я ложусь спать.
Утро.
О боже что же я натворила! Мысль не выходит из головы пока завтракаю.
Убираю из кода getBitmapData, магический frame который отдает верное значение только сразу после обращения и открываю доступ к _frames.
А мораль такова - пока не собираешься строить продуманный и клевый звездолет лучше не выеживаться и давать доступ к данным напрямую.
Итак, делаю класс BaseCellData чтобы разбирать клип с разными цветами и формами для одного соеденения на битмапы.
public class BaseCellData {
public var y:int;
public var x:int;
public var name:String;
private var _frames:Array = [];
public function BaseCellData (
name:String,
mc:MovieClip,
x:int, y:int
) {
this.x = x;
this.y = y;
this.name = name;
for (var i:int = 1; i <= mc.totalFrames; i++) {
mc.gotoAndStop(i);
_frames[i] = createBitmap(mc).bitmapData;
}
}
И забиваю себе данные.
public static var data:Object = {};
data['0000'] = new BaseCellData('cell_0000', new cell_0000(), -2, -2);
....
Таак думаю я, для начала сделаем рандомчик. Как сделать проще всего?
public function get bitmapData ():BitmapData {
return _frames[1 + Math.floor(Math.random()* (_frames.length - 1)];
}
Впихиваю в отрисовку, запускаю - после нескольких правок неправильных символов все работает, красотень! Запускаю просчет - здравствуй карнавал (на каждый просчет все ячейки перекрашиваются).
Блиин, а надо же запоминать в какой ячейке какой цвет!
Дописывается код
public var frame:int;
public function getBitmapData (frame:int = -1):BitmapData {
this.frame = frame;
if(this.frame == -1){
this.frame = 1 + Math.floor(Math.random()* (_frames.length - 1) );
}
return _frames[ this.frame];
}
Теперь я могу узнать какая картинка получена и запомнить во вьюхе, все работает, я ложусь спать.
Утро.
О боже что же я натворила! Мысль не выходит из головы пока завтракаю.
Убираю из кода getBitmapData, магический frame который отдает верное значение только сразу после обращения и открываю доступ к _frames.
А мораль такова - пока не собираешься строить продуманный и клевый звездолет лучше не выеживаться и давать доступ к данным напрямую.
Комментариев нет:
Отправить комментарий