Срез BitmapData - PullRequest
       5

Срез BitmapData

1 голос
/ 13 марта 2010

Я пишу растеризатор MovieClip, который растеризует все кадры в указанном мувиклипе.Вот код для растеризации:

for ( var i:int = start; i <= end; i++ ) { //goto the next frame clip.gotoAndStop( i );</p> <p>//get the bounds bounds = clip.getBounds(clip);</p> <p>//create a new bitmapdata container bitmapData = new BitmapData( transformer.width == -1 ? bounds.width : transformer.width, transformer.height == -1 ? bounds.height : transformer.height, transformer.transparent, transformer.color );</p> <p>if (transformer.matrix.tx == 0 && transformer.matrix.ty == 0) transformer.translateToZero( bounds );</p> <p>//draw the bitmap data with the transformers bitmapData.draw( this._source, transformer.matrix, transformer.colorTransform, transformer.blendMode, transformer.clipRect, //new Rectangle(0, 0, bounds.width, bounds.height), transformer.smoothing );</p> <p>//push the data on the array frames.push( bitmapData ); }

Теперь результат другой - http://i42.tinypic.com/lfv52.jpg - черный - это растеризованная версия (я использовал преобразование цвета на нем, чтобыпроверить это: P).Обратите внимание на голову и левый ботинок.Кто-нибудь знает в чем проблема?Я видел людей, добавляющих «лишние» пиксели к своему граничному блоку в конструкторе BitmapData, но это правильное решение.

У кого-нибудь есть идея, как красиво вписаться в символ?

1 Ответ

0 голосов
/ 14 марта 2010

Вы не сказали, что делает transformer.translateToZero () , но вы уверены, что символ всегда выровнен по (0, 0)?

Я имею в виду, вы должны передать границы как BitmapData.draw () 'clipRect аргумент, если вы хотите, чтобы он скопировал весь MovieClip .

...