Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

How do you make a draggable object? (in html5 canvas)

Explorer ,
Jul 16, 2020 Jul 16, 2020

Nothing fancy. 

 

Can someone please help me make a rectangle that a user can click on and move it around.

And it stays where the user moved it after they stop moving it. 

 

That's it. 

 

Reading other tutorials, this appears to require either learning spanish, or getting a degree in computer science. 

I've just spent 4 hours trying to figure this out, and I am about to give up. 

875
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jul 16, 2020 Jul 16, 2020

Hi.

 

Supposing:

- It's HTML5 Canvas;

- The Transformation Point of the rec is at the center;

- The rec is in the main timeline...

 

... this code should do the job:

var root = this;
var rec = root.rec;

createjs.Touch.enable(stage);

rec.on("mousedown", function(e)
{
	e.currentTarget.offsetX = stage.mouseX / stage.scaleX - e.currentTarget.x;
	e.currentTarget.offsetY = stage.mouseY / stage.scaleY - e.currentTarget.y;
});

rec.on("pressmove", function(e)
{
	e.currentTarget.x = stage.mouseX / stag
...
Translate
Community Expert ,
Jul 16, 2020 Jul 16, 2020

Hi.

 

Supposing:

- It's HTML5 Canvas;

- The Transformation Point of the rec is at the center;

- The rec is in the main timeline...

 

... this code should do the job:

var root = this;
var rec = root.rec;

createjs.Touch.enable(stage);

rec.on("mousedown", function(e)
{
	e.currentTarget.offsetX = stage.mouseX / stage.scaleX - e.currentTarget.x;
	e.currentTarget.offsetY = stage.mouseY / stage.scaleY - e.currentTarget.y;
});

rec.on("pressmove", function(e)
{
	e.currentTarget.x = stage.mouseX / stage.scaleX - e.currentTarget.offsetX;
	e.currentTarget.y = stage.mouseY / stage.scaleY - e.currentTarget.offsetY;
});

 

Please let us know.

 

Regards,

JC

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 16, 2020 Jul 16, 2020

It worked!

 

draggable rectangledraggable rectangle

 

This is perfect, so many ideas!

Thank you!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 16, 2020 Jul 16, 2020

Amazing! You're welcome!

 

And thanks for the preview!

 

 

Regards,

JC

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 05, 2020 Sep 05, 2020
LATEST


Hello,
This code works very well but why doesn't the touch function work?
I made a copy and paste and it doesn't work on a tablet.
I'm a beginner and I don't understand how createjs.Touch.enable(stage) works;

Thank you for all your answers.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines