2016-11-12 3 views
1

円のSymbolDefinitionを作成し、new SymbolItem(definition)を使用してキャンバスに配置します。定義を作成するために使用された円オブジェクトは、デフォルトの用紙設定のため、デフォルト位置(0,0)、デフォルトの色、追加情報はありませんでした。PaperJS SymbolItemsヒット結果検索後にプロパティを失う

シンボルをインスタンス化して特定の位置に配置すると(たとえば(20,30)など)、名前やデータプロパティなどの補足情報も追加されます。

円をクリックして、project#hitResultAllを使用してそのアイテムのコールバック検索を行った場合、ヒット結果に含まれるアイテムは上記の情報を保持しなくなります。実際には、定義を作成するために使用された元の円オブジェクトのようです。その位置は実際は(0,0)であり、名前はなく、dataプロパティは空です。

ここにはjsFiddle with an example(出力を表示するためのオープンな開発コンソール)があります。

リンクが機能しない場合は、ここでのサンプルコードは、次のとおりです。

var canvas = paper.createCanvas(100, 100); 
document.getElementById("canvasDiv").appendChild(canvas); 
paper.setup(canvas); 

var circle = paper.Path.Circle([0,0], 10); 
circle.fillColor = 'red'; 

var definition = new paper.SymbolDefinition(circle); 

var tool = new paper.Tool(); 
tool.onMouseUp = function(event){ 
    var hitResult = paper.project.hitTestAll(event.point); 
    if(hitResult.length > 0){ 
    var result = hitResult[0]; 
    var item = result.item; 
    console.log("Item name should be 'Bob', but is actually " + item.name); 
    // Output is: Item name should be 'Bob', but is actually null 
    } 
}; 

var actualCircle = new paper.SymbolItem(definition); 
actualCircle.position = [20,30]; 
actualCircle.name = 'Bob'; 
console.log("Symbol Item was created with the name " + actualCircle.name); 
// Output is: Symbol Item was created with the name Bob 

なぜこれが起こっている誰もが知っていて、どのように私はそれを解決して行くことができますか?

答えて

1

これは、paperJSヒットテストコードのバグであることが判明しました。 Lehniのおかげで、これは解決されました。この投稿の時点では、新しいリリースはまだ展開されていませんが、0.10.2を超えるバージョンを使用している限り、安全でなければなりません。

あなたがLehniによると、古いバージョンで立ち往生している場合:

あなたがhitTestを(使用する場合)の代わりにhitTestAllの()、それが期待される結果を返します。