আপনি যখন কোনও canvas
উপাদানের দিকে টানেন, আপনি কেবল তাত্ক্ষণিক মোডে একটি বিটম্যাপ আঁকছেন ।
উপাদান (আকৃতি, লাইন, চিত্র) যে টানা হয় পিক্সেল তারা ব্যবহার এবং তাদের রঙ ব্যতীত কোন প্রতিনিধিত্ব আছে।
অতএব, কোনও উপাদান (আকৃতি) এ ক্লিক ইভেন্ট পেতে আপনার এইচটিএমএল উপাদানটিতে ক্লিক ইভেন্টগুলি ক্যাপচার করতে হবে এবং কোন উপাদানটি ক্লিক করা হয়েছিল তা নির্ধারণ করতে কিছু গণিত ব্যবহার করতে হবে, তবে আপনি যদি উপাদানগুলির প্রস্থ / উচ্চতা এবং এক্স / ওয়াই অফসেট সংরক্ষণ করে থাকেন ।canvas
canvas
click
আপনার canvas
উপাদানটিতে একটি ইভেন্ট যুক্ত করতে , ব্যবহার করুন ...
canvas.addEventListener('click', function() { }, false);
যা নির্ধারণ করতে উপাদানটি ক্লিক করা হয়েছিল ...
var elem = document.getElementById('myCanvas'),
elemLeft = elem.offsetLeft + elem.clientLeft,
elemTop = elem.offsetTop + elem.clientTop,
context = elem.getContext('2d'),
elements = [];
// Add event listener for `click` events.
elem.addEventListener('click', function(event) {
var x = event.pageX - elemLeft,
y = event.pageY - elemTop;
// Collision detection between clicked offset and element.
elements.forEach(function(element) {
if (y > element.top && y < element.top + element.height
&& x > element.left && x < element.left + element.width) {
alert('clicked an element');
}
});
}, false);
// Add element.
elements.push({
colour: '#05EFFF',
width: 150,
height: 100,
top: 20,
left: 15
});
// Render elements.
elements.forEach(function(element) {
context.fillStyle = element.colour;
context.fillRect(element.left, element.top, element.width, element.height);
});
jsFizz ।
এই কোডটি সংযুক্ত করে একটি click
ইভেন্টটিকে canvas
উপাদানটির সাথে এবং তারপরে element
একটি elements
অ্যারে ধাক্কা দেয় ( আমার কোডে একটি বলে ) একটি অ্যারেতে। আপনি এখানে ইচ্ছামত যোগ করতে পারেন।
অবজেক্টের অ্যারে তৈরি করার উদ্দেশ্য তাই আমরা তাদের বৈশিষ্ট্যগুলি পরে জিজ্ঞাসা করতে পারি। সমস্ত উপাদানগুলিকে অ্যারেতে ঠেলে দেওয়ার পরে আমরা প্রতিটিগুলির বৈশিষ্ট্যের উপর ভিত্তি করে লুপ করব এবং রেন্ডার করব।
যখন click
ঘটনা সূত্রপাত হয়, কোড উপাদানের মাধ্যমে loops এবং নির্ধারণ করে যদি ক্লিকে উপাদানের কোনো শেষ হয়ে গেল elements
অ্যারে। যদি তা হয় তবে এটি অগ্নিসংযোগ করে alert()
, যা অ্যারে আইটেমটি সরিয়ে ফেলার মতো কিছু করার জন্য খুব সহজেই সংশোধন করা যেতে পারে, সেক্ষেত্রে আপনাকে আপডেট করার জন্য একটি পৃথক রেন্ডার ফাংশন প্রয়োজন canvas
।
সম্পূর্ণতার জন্য, কেন আপনার প্রচেষ্টা কার্যকর হয়নি ...
elem.onClick = alert("hello world"); // displays alert without clicking
এটি alert()
এর onClick
সম্পত্তিটির রিটার্ন মান নির্ধারণ করে elem
। এটি অবিলম্বে প্রার্থনা করা হয় alert()
।
elem.onClick = alert('hello world'); // displays alert without clicking
জাভাস্ক্রিপ্টে, '
এবং "
শব্দার্থগতভাবে অভিন্ন, লেক্সার সম্ভবত ['"]
উদ্ধৃতিগুলির জন্য ব্যবহার করে ।
elem.onClick = "alert('hello world!')"; // does nothing, even with clicking
এর onClick
সম্পত্তিতে আপনি একটি স্ট্রিং বরাদ্দ করছেন elem
।
elem.onClick = function() { alert('hello world!'); }; // does nothing
জাভাস্ক্রিপ্ট কেস সংবেদনশীল। onclick
সম্পত্তি ইভেন্ট হ্যান্ডলার সংযোজনের এর সেকেলে পদ্ধতি। এটি কেবলমাত্র একটি ইভেন্টকে সম্পত্তির সাথে সংযুক্ত করার অনুমতি দেয় এবং এইচটিএমএল সিরিয়াল করার সময় ইভেন্টটি হারাতে পারে।
elem.onClick = function() { alert("hello world!"); }; // does nothing
আবার ' === "
,।
onclick
পরিবর্তে ব্যবহার করুনonClick