2013-11-23 7 views
20

पर चयन करने योग्य नहीं है, मैंने ऑब्जेक्ट को प्रोग्रामेटिक रूप से स्थानांतरित करने और सफलता प्राप्त करने का प्रयास किया है, लेकिन ऑब्जेक्ट प्रोग्रामेटिक तरीके से स्थानांतरित होने के बाद, ऑब्जेक्ट को वर्तमान स्थिति का चयन करके ऑब्जेक्ट का चयन करने में सक्षम नहीं है , फिर भी ऑब्जेक्ट अपनी पुरानी स्थिति से चयन योग्य है मैंने canvas.calcOffset(); के साथ अभी भी काम नहीं किया है।ऑब्जेक्ट के बाद फैब्रिकज प्रोग्रामेटिक रूप से इसकी नई स्थिति

मैं कैसे अपनी मौजूदा स्थिति में वस्तु चयन कर सकते हैं कोड मैं के रूप में इस्तेमाल किया है

इस प्रकार जावास्क्रिप्ट

var canvas=new fabric.Canvas('canvas'); 
canvas.add(new fabric.Rect({      
        left:100, 
        top: 100, 
        width: 75, 
        height: 50, 
        fill: 'white', 
        stroke: 'black', 
        strokeWidth: 3, 
        padding: 10, 
        selectable: true 
      })); 


function changePosition() 
{ 
    canvas.item(0).set({left:300}); 
    canvas.renderAll(); 
    canvas.calcOffset(); 
} 

एचटीएमएल

<div> 
<canvas id="canvas" width="400" height="400" style="border:1px solid red"/> 
</div> 
<input type="button" onclick="changePosition()" value="Change Possition"/> 

Jsfiddle

कदम त्रुटि

  1. पुन: पेश करने बटन पर क्लिक करें बदलें स्थिति
  2. इसकी वर्तमान स्थिति पर आयत का चयन करके देखें, और plave के लिए कर्सर को स्थानांतरित जहां किसी चीज़ पहले से वहाँ आप करेंगे था ऑब्जेक्ट
+15

'canvas.item (0) .setCoords()' – kangax

+1

@ कंगैक्स आपको बहुत धन्यवाद। ऐसा लगता है कि यह बग प्रतीत होता है क्योंकि यदि इसे स्थानांतरित किया जाता है तो इसे अपने समन्वय को अपडेट किया जाना चाहिए। –

+0

@ कंगैक्स मैं सहयोगी श्वेत बोर्ड बनाने की कोशिश कर रहा हूं, मैं लाइन को आकर्षित करना चाहता हूं, पूर्व: जब शिक्षक रेखा खींचता है तो सभी छात्रों को व्हाइटबोर्ड ड्राइंग को अपडेट किया जाना चाहिए, मैं यह कैसे कर सकता हूं? –

उत्तर

29

का चयन करने में सक्षम हो, यदि आप ऑब्जेक्ट की स्थिति प्रोग्रामेटिक रूप से बदल रहे हैं तो आपको setCoords() विधि को एक बार आग लगाना होगा। यह आपकी ऑब्जेक्ट के कोर्ड्स को नई स्थिति में सेट करेगा।

+0

पर धन्यवाद @innodel का जवाब बहुत लंबे समय से कंगैक्स ने दिया है, कृपया मेरे प्रश्न के नीचे टिप्पणी देखें। –

संबंधित मुद्दे