2014-05-21 32 views
3

我用Phaser引擎編寫了一款遊戲引擎,但遺憾的是即使使用cocoonjs我也沒有得到任何好的性能。我試圖優化它,但我認爲我不能優化足夠。cocos2d-js中的繪圖切片

所以我想切換到cocos2d-js。我用cocos2d嘗試了一些例子,它效果很好。我想我會得到我期待的表現。我只需要做到兩件事。我試圖在DrawNode類中使用方法,但我無法做到。我是計算機圖形學的新手。

  • 繪製一個切片,就像從this gist
  • 寫作文本一起利用指定的半徑和角度的一個弧的drawSlice方法

更新:我需要通過本機代碼進行昂貴的計算。我有大約18個這種形狀,可以在用戶輸入的情況下,在100毫秒內獨立將半徑設置爲75-200像素。我在Phaser面臨的問題是這個昂貴的計算。

Update2:現在我可以在@ Sebastian的幫助下繪製this。它仍然不完整。

Update3:我用Phaser與幾個黑客取得了不錯的表現。也許我不會需要這個,儘管其他人可能需要它。

片: Slice

文字: curve text

回答

1

該功能並不在cocos2d-HTML5沒有完成。我可以爲您提供的最佳解決方案是此功能I submitted a while ago。這並不理想,但它應該做到這一點。如果你不知道如何處理它,我會在後面的代碼中包裝這個函數(我距離我的家用電腦幾個小時,現在我沒有時間做一個完整的例子):

var drawSolidArc= function(center, radius, degreesFrom, degreesTo, segments){ 
    if(degreesTo<degreesFrom){ 
     var temp = degreesTo; 
     degreesTo = degreesFrom; 
     degreesFrom = temp; 
    } 
    var i; 
    for(i=degreesFrom; i<=degreesTo;i++){ 
     cc.drawingUtil.drawCircle(center, radius, cc.DEGREES_TO_RADIANS(-i+90), segments, true); 
    } 
}; 

而且,這個代碼是V2.2.2,它應該被遷移到使用V2.2.3(或V3)DrawNode。對不完整的答案感到抱歉,但我希望它能讓你朝着正確的方向發展。

至於寫曲的文字,我覺得這是我所知道存在最接近的事:https://github.com/supersuraccoon/CircleLabelTTFDemo-HTML5

+0

感謝您的回覆,我會盡量在幾個小時內您的解決方案。 – nepjua

+0

我只能用你的函數繪製[this](http://i.imgur.com/FqnqpCp.png)。我可以解決一些問題以繪製切片。我想知道最有效的方法來補間那張圖畫。我會改變度數和度數,形狀將重新繪製這些新的變量。改變後我可以立即畫出,但我認爲它不會給我帶來任何好的表現。你可以給我一些關於動態自定義繪圖對象的例子。 – nepjua

+0

我想我得到了這個,我擴展了Node類並創建了一個DrawNode成員對象。在我的Node的draw函數中,我調用了drawNode.draw(ctx)。 – nepjua