2014-09-23 7 views
1

Я создаю графику по коду и помещаю их в растровое изображение. Но они выше, чем этот битмап-контейнер.Растровое изображение слишком мало для его содержания

import flash.display.*; 

function getLine(){   
    var containerWidh:Number =enter code here 300; 
    var containerHeight:Number = 300; 
    var borderWidt:Number = 1; 
    var spriteWrap:Sprite = new Sprite(); 

    var innerContainer:Sprite = new Sprite(); 
    innerContainer.x = 0; 
    innerContainer.y = 0; 

    var line1:Shape = new Shape(); 
    line1.graphics.lineStyle(5, 0x6F4356, 1, false, StageScaleMode.SHOW_ALL, CapsStyle.ROUND); 
    line1.graphics.moveTo(50, 5); 
    line1.graphics.lineTo(50, 800); 
    line1.graphics.endFill(); 

    var line2:Shape = new Shape(); 
    line2.graphics.lineStyle(5, 0x6F4356, 1, false, StageScaleMode.SHOW_ALL, CapsStyle.ROUND); 
    line2.graphics.moveTo(200, 290); 
    line2.graphics.lineTo(200, 300); 
    line2.graphics.endFill(); 

    innerContainer.addChild(line1); 
    innerContainer.addChild(line2); 
    spriteWrap.addChild(innerContainer);  

    return spriteWrap; 
} 

var spriteWrap:Sprite = getLine(); 
var wrapForBitmap:Sprite = new Sprite();    
var drawBitmap:BitmapData = new BitmapData(300, 300, true, 0x00ffaa); 
var goOnStage:Bitmap = new Bitmap(drawBitmap); 
wrapForBitmap.graphics.beginBitmapFill(drawBitmap); 
wrapForBitmap.graphics.lineStyle(1, 0x6F7E84); 
wrapForBitmap.graphics.drawRect(0, 0, 300, 300); 
wrapForBitmap.graphics.endFill(); 
wrapForBitmap.x = 10; 
wrapForBitmap.y = 10; 

drawBitmap.draw(spriteWrap, new Matrix(1, 0, 0, 1, 0, 0)); 

wrapForBitmap.addChild(goOnStage); 
stage.addChild(wrapForBitmap); 

ответ

0

Your Shape line1 выше, чем высота вашего растрового изображения (300):

line1.graphics.moveTo(50, 5); // begins at x = 50 and y = 5 
line1.graphics.lineTo(50, 800); // begins at x = 50 and y = 800 

С помощью следующего кода, вы будете рисовать линию от верхней части к нижней части Bitmap:

line1.graphics.moveTo(50, 0); 
line1.graphics.lineTo(50, 300); 

Если вы хотите, чтобы линия1 была видимой без изменения ее высоты, вам необходимо изменить высоту растрового изображения (800), изменив второй аргумент вашего метода BitmapData:

var drawBitmap:BitmapData = new BitmapData(300, 800, true, 0x00ffaa); 

Вы должны изменить одновременно высоту вашего прямоугольника:

wrapForBitmap.graphics.drawRect(0, 0, 300, 800); 
+0

Да, я это знаю, но есть способ без изменения высоты растрового изображения до 800? –

+0

@ Стас Пишевский - Я отредактировал свой ответ. – helloflash

+0

@ Стас Пишевский - Это работает? – helloflash

1

Да, конечно. Чем я перерисовываю свой растровый рисунок с помощью моего спрайта

MySprite.graphics.clear(); 
MySprite.graphics.beginBitmapFill(MyBitmap, new Matrix(1, 0, 0, 1, new_XPos, new_YPos), false, false); 
MySprite.graphics.endFill();