Content deleted Content added
Obscure2020 (talk | contribs) Their computer-science theoretical basis IS, not ARE. The verb is applied to the noun "basis," which is a singular noun. Therefore, IS is the correct verb. Also, a list is not a sentence. When you start using bullet points, the lines should NOT end in punctuation. |
m clean up spacing around commas and other punctuation, replaced: ,e → , e |
||
Line 68:
==History==
The web-based Snap''!'' and older desktop-based [https://snap.berkeley.edu/old_site/old-byob.html BYOB] have been both developed by Jens Mönig for [[Microsoft Windows|Windows]], [[OS X]] and [[Linux]]<ref>{{cite web|url=http://scratch.mit.edu/users/Jens|title=Scratch - Imagine, Program, Share|website=scratch.mit.edu|access-date=21 May 2017}}</ref> with design ideas and documentation provided by [[Brian Harvey (lecturer)|Brian Harvey]]<ref>{{cite web|url=https://people.eecs.berkeley.edu/~bh/|title=HomePage for Brian Harvey (bh@cs.Berkeley.EDU)|website=people.eecs.berkeley.edu/~bh/|access-date=19 January 2019}}</ref> from [[University of California, Berkeley]] and have been used to teach "The Beauty and Joy of Computing" introductory course in [[computer science]] (CS) for non-CS-major students.<ref>{{cite web|url=http://inst.eecs.berkeley.edu/~cs10/fa11/|title=UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011|website=inst.eecs.berkeley.edu|access-date=21 May 2017}}</ref> Jens was a member of the [https://scratch.mit.edu/info/credits/ Scratch Team] before creating ''Snap!''.<ref>{{cite web |url=https://forum.snap.berkeley.edu/t/relationship-with-the-scratch-team/1277/2 |title=Relationship With the Scratch Team - Politics - Snap! Forums |website=forum.snap.berkeley.edu |url-status=dead |archive-url=https://web.archive.org/web/20200102174250/https://forum.snap.berkeley.edu/t/relationship-with-the-scratch-team/1277/2 |archive-date=2020-01-02}}
==License==
Line 77:
==Implementation==
Although Snap''!'' is implemented in JavaScript using an [[HTML5]] Canvas [[application programming interface]] (API), it is actually built on top of ''Morphic.js'',<ref name="morphic_js">{{cite web |last1=Mönig |first1=Jens |title=morphic.js |url=https://github.com/jmoenig/morphic.js/blob/master/morphic.txt |website=GitHub |accessdate=7 June 2023}}</ref> a [[Morphic (software)|Morphic]] GUI, which serves as 'middle layer' between Snap! itself and 'bare' JavaScript.
All things visible in Snap''!'' are morphs themselves, i.e. all buttons, sliders, dialog boxes, menus, entry fields, text rendering, blinking cursors etc. are created with morphic.js rather than using HTML DOM elements. Snap! caches the shapes of [[Sprite (computer graphics)|sprite]]s so the sprite doesn't have to be re-drawn onto a new Canvas element every time the mouse moves over its bounding box. It does not cache blocks, however. Instead it manages the insides of C-shaped blocks through the morphic "holes" mechanism.
All user interaction is triggered by events, which are passed on from the root element "the world" to its submorphs. Dropping a morph causes it to become embedded in a new 'owner' ('parent') morph. In Morphic the preferred way to run an animation is to register it with the World by adding it to the World's animation queue. The World steps each registered animation once per display cycle independently of the Morphic stepping mechanism.
|