Вход

Просмотр полной версии : BitmapData.draw()


chingachgoog
29.08.2007, 19:04
На таймлайне (где-нибудь за видимой областью) символ targ (кружочек, с точкой отсчета в левом верхнем углу и сторонами 100х100 для простоты).
Собственно я его масштабирую (_xscale) и пытаюсь снять с него скриншот:


import flash.display.BitmapData;

myBitmapData = new BitmapData(500, 500, false, 0x00CCCCCC);

mc = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData, this.getNextHighestDepth());
targ._xscale=targ._yscale=500


mc.onPress = function() {
myBitmapData.draw(targ)
trace(targ._width+" "+targ._xscale)
}


Скриншот снимается с НЕМАСШТАБИРОВАННОГО клипа (хотя он реально увеличился)

Далее, усложняю.
Помещаю в targ (пустой) клип-кружочек (все тот же) с именем ttt


import flash.display.BitmapData;

myBitmapData = new BitmapData(500, 500, false, 0x00CCCCCC);

mc = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData, this.getNextHighestDepth());
targ.ttt._xscale=targ.ttt._yscale=500


mc.onPress = function() {
myBitmapData.draw(targ)
trace(targ._width+" "+targ._xscale)
}


Все! Теперь скриншот как и задумывалось показывает увеличенный кружочек.

Вопрос: как же все-таки действует метод draw()???

etc
29.08.2007, 19:06
Прочитайте про второй параметр в draw.

chingachgoog
29.08.2007, 19:28
Спасибо.
Помогло. Причем _xscale вовсе не нужен:


import flash.display.BitmapData;
import flash.geom.Matrix;


myBitmapData = new BitmapData(500, 500, false, 0x00CCCCCC);

mc = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData, this.getNextHighestDepth());

myMatrix = new Matrix();
myMatrix.scale(5,5)

mc.onPress = function() {
myBitmapData.draw(targ,myMatrix)
trace(targ.ttt._width+" "+targ.ttt._xscale+" "+targ._width+" "+targ._xscale)
}