2013-07-30 59 views
0

每個人,我只是一個初學者,我有問題。我的計劃的想法是,當用戶點擊一個按鈕,生成一個圓,它應該計算每增加一圈就應該是這個樣子:在生成的Sprite對象上繪製文本as3

enter image description here

的數量應該在中心和我應該可以將對象與號碼一起移動,這是我的代碼:

add_s.addEventListener(MouseEvent.CLICK,new_sond); 


function new_sond(event:MouseEvent):void 
{ 
    var btn:Sprite = new Sprite(); 
    btn.graphics.beginFill(0x00FF00, 1); 
    btn.graphics.drawCircle(400, 300, 25); 
    btn.graphics.endFill(); 
    this.addChild(btn); 


} 

//----------------------------Drag And Drop---------------------- 
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownH); 
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpH); 

function mouseDownH(evt:MouseEvent):void { 
    var object = evt.target; 
    object.startDrag(); 
} 

function mouseUpH(evt:MouseEvent):void { 
    var obj = evt.target; 
     obj.stopDrag(); 
} 

如果有人能幫助我,我將非常感激。 如何讓文字在圈子的中心呈現apear,我仍然可以用文字移動它們

+0

,問題是......? –

+2

將TextField對象添加到您的'btn'精靈,並更改其文本。應該做。 – Vesper

回答

3

這是應該的Vesper已經張貼作爲一個答案:)

添加TextField對象添加到您Sprite。由於TextFieldSprite的孩子,因此它將移動到Sprite。所有你需要做的是在圓的中間定位文本:

function new_sond(event:MouseEvent):void 
{ 
    var btn:Sprite = new Sprite(); 
    btn.graphics.beginFill(0x00FF00, 1); 
    btn.graphics.drawCircle(400, 300, 25); 
    btn.graphics.endFill(); 
    var textField = new TextField(); 
    textField.text = "1"; 
    textField.width = textField.textWidth; // default width is 100 
    textField.height = textField.textHeight; 
    textField.x = (25 - textField.textWidth)/2; // center it horizontally 
    textField.y = (25 - textField.textHeight)/2; // center it vertically 
    btn.addChild(textField); 
    this.addChild(btn); 
} 

注意,通過@Joeson黃某的建議,你可以使用一個Shape對象,而不是一個Sprite畫出的圓圈。 ShapeSprite更輕量。但是,由於Shape不會延伸DisplayObjectContainer,所以您不能像Sprite那樣將子對象添加到Shape

@Joeson Hwang的答案建議將Shape和文本添加到Sprite。但是這不會節省任何東西,所以現在就像直接將圖形繪製到Sprite

0

使用btn:Shape(節省大量的系統資源)。然後將Shape和您的文本放入Sprite中。您也可以將Sprite添加到另一個Sprite中。

0

您還可以使用flash.text.engine包:有關創建文本

function new_sond(event:MouseEvent):void 
{ 
    var btn:Sprite = new Sprite(); 
    btn.graphics.beginFill(0x00FF00, 1); 
    btn.graphics.drawCircle(cx, cy, cr); 
    btn.graphics.endFill(); 

    // Font format 
    var fontDescription:FontDescription = new FontDescription("Arial"); 
    var format:ElementFormat = new ElementFormat(fontDescription, 16, 0x000088);   

    // Display text 
    var textElement:TextElement = new TextElement('1', format); 

    var textBlock:TextBlock = new TextBlock(); 
    textBlock.content = textElement; 

    // New display object containing text 
    var textLine:TextLine = textBlock.createTextLine(null, 500); 

    // Centers the text inside the circle 
    textLine.x = cx + (cr - textLine.width)/2; 
    textLine.y = cy + (cr - textLine.height)/2;  

    // Add text into button 
    btn.addChild(textLine); 

    this.addChild(btn); 
} 

更多信息:Creating and displaying textActionScript 3.0 Developer’s Guide