mit-cml / appinventor-sources

MIT App Inventor Public Open Source
http://appinventor.mit.edu/appinventor-sources/
Apache License 2.0
1.49k stars 2.07k forks source link

Discuss cloning components a la Scratch #2278

Open ewpatton opened 4 years ago

ewpatton commented 4 years ago

Describe the desired feature

It's a relatively common request by users to dynamically create components. Scratch has a clone feature for sprites. What might a similar feature look like for App Inventor

Give an example of how this feature would be used

Students might use this feature to dynamically change what information is on the screen. It's also common for them to build games so having a dynamic number of goodies and baddies would be useful.

Why doesn't the current App Inventor system address this use case?

There are some extensions that clone objects, but App Inventor requires all components to be known at design/compile time.

Why is this feature beneficial to App Inventor's educational mission?

Among other general uses, it might also be interesting to use the ability to create many objects to discuss challenges around resource (memory) management.

See also: #1695 Ref: https://en.scratch-wiki.info/wiki/Cloning

halatmit commented 4 years ago

+1

On Wed, Aug 12, 2020, 11:42 AM Evan W. Patton notifications@github.com wrote:

Describe the desired feature

It's a relatively common request by users to dynamically create components. Scratch has a clone feature for sprites. What might a similar feature look like for App Inventor

Give an example of how this feature would be used

Students might use this feature to dynamically change what information is on the screen. It's also common for them to build games so having a dynamic number of goodies and baddies would be useful.

Why doesn't the current App Inventor system address this use case?

There are some extensions that clone objects, but App Inventor requires all components to be known at design/compile time.

Why is this feature beneficial to App Inventor's educational mission?

Among other general uses, it might also be interesting to use the ability to create many objects to discuss challenges around resource (memory) management.

See also: #1695 https://github.com/mit-cml/appinventor-sources/issues/1695 Ref: https://en.scratch-wiki.info/wiki/Cloning

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mit-cml/appinventor-sources/issues/2278, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGAXNZPOQRDSKURYNVLX33SAKZ7NANCNFSM4P44PKIA .

pavi2410 commented 4 years ago

Is this meant for cloning sprites in Canvas component or any component?

ewpatton commented 4 years ago

Sprites would be the easiest to start with since their positioning information is already user-editable in the blocks. For other components, we'd have to think about issues such as where the components appear in the parent, should they be allowed to have a different parent than the original, etc.

RedstoneBlocks commented 4 years ago

A workaround is using Canvas component and drawing stuff to it, which can be done dynamically. You can also get gesture events such as dragging, taping, and flinging. It wont preform as well, and it takes 10 times longer to write, and has 10 times more bugs, but it can be done.