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

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

Explorer ,
Jul 16, 2020 Jul 16, 2020

Copy link to clipboard

Copied

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. 

Views

394

Translate

Translate

Report

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
...

Votes

Translate

Translate
Community Expert ,
Jul 16, 2020 Jul 16, 2020

Copy link to clipboard

Copied

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

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

It worked!

 

draggable rectangledraggable rectangle

 

This is perfect, so many ideas!

Thank you!

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

Amazing! You're welcome!

 

And thanks for the preview!

 

 

Regards,

JC

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

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.

Votes

Translate

Translate

Report

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