이를 위해서는 Git과 Node.js가 설치되어 있어야 합니다.
자신의 애플리케이션에 대한 종속성으로 설치하려면 다음을 수행하세요.
npm install scratch-vm
스크래치 VM을 직접 편집하기 위해 개발 환경을 설정하려면 다음 안내를 따르세요.
git clone https://github.com/scratchfoundation/scratch-vm.git
cd scratch-vm
npm install
이를 위해서는 Node.js가 설치되어 있어야 합니다.
편의를 위해 VM에 개발 서버를 포함했습니다. 이는 원격 리소스(예: 스크래치 서버의 SVG)를 로드하는 환경에서 실행할 때 유용할 때가 있습니다. 수정된 VM을 전체 Scratch 3.0 GUI와 함께 사용하려면 지침에 따라 VM을 GUI에 연결하세요.
저장소에서 명령 프롬프트 또는 터미널을 열고 다음을 실행합니다.
npm start
플레이그라운드를 보려면 개발 서버가 실행 중인지 확인하고 http://localhost:8073/playground/로 이동하세요. 다양한 도구와 내부 상태를 보여주는 플레이그라운드로 이동하게 됩니다.
npm run build
< script src =" /path/to/dist/web/scratch-vm.js " > </ script >
< script >
var vm = new window . VirtualMachine ( ) ;
// do things
</ script >
확장된 설정 예시를 보려면 완전히 실행 중인 VM 인스턴스가 포함된 /src/playground 디렉터리를 확인하세요.
var VirtualMachine = require ( 'scratch-vm' ) ;
var vm = new VirtualMachine ( ) ;
// Block events
Scratch . workspace . addChangeListener ( vm . blockListener ) ;
// Run threads
vm . start ( ) ;
가상 머신은 blockListener
통해 스크래치 블록 작업 공간에서 발생하는 이벤트를 수신하여 추상 구문 트리(AST)의 상태를 구성하고 유지합니다. 각 대상(코드 실행 개체, 예: 스프라이트)은 해당 블록에 대한 AST를 유지합니다. 언제든지 vm.runtime.targets[...].blocks
객체를 검사하여 AST의 현재 상태를 볼 수 있습니다.
VM의 블록 표현에는 실행 및 저장에 대한 모든 중요한 정보가 포함되어 있습니다. 다음은 작업공간에서 "키를 눌렀을 때" 스크립트를 나타내는 예입니다.
{
"_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
그러면 현재 구축된 플레이그라운드가 현재 추적 중인 리모컨의 gh-pages 분기로 푸시됩니다. 푸시할 위치를 변경하려면 repo url 인수를 추가하세요.
npm run deploy -- -r < your repo url >
우리는 스크래치를 무료로 제공하고 있으며 이를 그대로 유지하고 싶습니다! 지속적인 엔지니어링, 디자인, 커뮤니티 및 자원 개발 노력을 지원하기 위해 기부하는 것을 고려해 보십시오. 어떤 규모의 기부에도 감사드립니다. 감사합니다!