Cela nécessite que Git et Node.js soient installés.
Pour installer en tant que dépendance pour votre propre application :
npm install scratch-vm
Pour configurer un environnement de développement pour éditer scratch-vm vous-même :
git clone https://github.com/scratchfoundation/scratch-vm.git
cd scratch-vm
npm install
Cela nécessite l'installation de Node.js.
Pour plus de commodité, nous avons inclus un serveur de développement avec la VM. Ceci est parfois utile lors de l'exécution dans un environnement qui charge des ressources distantes (par exemple, des SVG depuis le serveur Scratch). Si vous souhaitez utiliser votre VM modifiée avec l'interface graphique complète de Scratch 3.0, suivez les instructions pour lier la VM à l'interface graphique.
Ouvrez une invite de commande ou un terminal dans le référentiel et exécutez :
npm start
Pour afficher le terrain de jeu, assurez-vous que le serveur de développement est en cours d'exécution et accédez à http://localhost:8073/playground/ - vous serez dirigé vers le terrain de jeu, qui présente divers outils et l'état interne.
npm run build
< script src =" /path/to/dist/web/scratch-vm.js " > </ script >
< script >
var vm = new window . VirtualMachine ( ) ;
// do things
</ script >
Pour un exemple de configuration étendue, consultez le répertoire /src/playground, qui comprend une instance de VM entièrement exécutée.
var VirtualMachine = require ( 'scratch-vm' ) ;
var vm = new VirtualMachine ( ) ;
// Block events
Scratch . workspace . addChangeListener ( vm . blockListener ) ;
// Run threads
vm . start ( ) ;
La machine virtuelle construit et maintient l'état d'un arbre de syntaxe abstraite (AST) en écoutant les événements émis par l'espace de travail scratch-blocks via blockListener
. Chaque cible (objet exécutant du code, par exemple un sprite) conserve un AST pour ses blocs. À tout moment, l'état actuel d'un AST peut être consulté en inspectant l'objet vm.runtime.targets[...].blocks
.
La représentation en bloc de la VM contient toutes les informations importantes pour l'exécution et le stockage. Voici un exemple représentant le script « lorsque la touche est enfoncée » sur un espace de travail :
{
"_blocks" : {
"Q]PK~yJ@BTV8Y~FfISeo" : {
"id" : " Q]PK~yJ@BTV8Y~FfISeo " ,
"opcode" : " event_whenkeypressed " ,
"inputs" : {
},
"fields" : {
"KEY_OPTION" : {
"name" : " KEY_OPTION " ,
"value" : " space "
}
},
"next" : null ,
"topLevel" : true ,
"parent" : null ,
"shadow" : false ,
"x" : -69.333333333333 ,
"y" : 174
}
},
"_scripts" : [
" Q]PK~yJ@BTV8Y~FfISeo "
]
}
npm test
npm run coverage
npm run deploy
Cela poussera le terrain de jeu actuellement construit vers la branche gh-pages de la télécommande actuellement suivie. Si vous souhaitez modifier l'endroit où pousser, ajoutez un argument d'URL de dépôt :
npm run deploy -- -r < your repo url >
Nous fournissons Scratch gratuitement et souhaitons que cela continue ainsi ! Veuillez envisager de faire un don pour soutenir nos efforts continus d’ingénierie, de conception, de communauté et de développement des ressources. Les dons de toute taille sont appréciés. Merci!