scratch-vm源碼分析-開(kāi)篇

VirtualMachine

constructor

runtime
setService('runtime')
editingTarget
_dragTarget
extensionManager
block listener
flyout block listener
monitor block listener
variable block listener


method

start: start runtime
greenFlag: runtime.greenFlag, start all threads
stopAll: runtime.stopAll, stop all threads
setTurboMode: runtime.turboMode, turbo mode定硝,加速模式辈双,循環(huán)不導(dǎo)致重繪
setCompatibilityMode: runtime兼容模式金吗,兼容2.0,30TPS
clear: runtime.clear. 清除project data
getPlaygroundData: 獲取editingTarget所在的thread里的data
postIOData: runtime.ioDevice['device_name'].postData则北,向runtime中的設(shè)備發(fā)送數(shù)據(jù)
loadProject: 直接調(diào)用fromJSON
loadProjectLocal: 從本地文件中加載3.0項(xiàng)目
downloadProjectId: 通過(guò)projectId,從storage中下載項(xiàng)目(storage封裝了本地和網(wǎng)絡(luò)加載巡通,并緩存)
saveProjectSb3: 導(dǎo)出3.0項(xiàng)目,zip的blob流
toJSON: 導(dǎo)出project.json
fromJSON: 從json中膛虫,加載項(xiàng)目(可加載2.0項(xiàng)目),
* 判斷2.0還是3.0的項(xiàng)目躏吊,3.0的項(xiàng)目包含meta字段氛改,2.0的項(xiàng)目有自己的特定格式schema.json。
* 調(diào)用各自的deserializer比伏,反序列化project.json
* 解析出所有的targets胜卤,調(diào)用installTargets安裝

installTargets: 安裝targets,targets可能來(lái)自與extension,如果是赁项,則先加載所有的extensions瑰艘,通過(guò)promise.all是鬼,等擴(kuò)展安裝之后,再安裝所有targets

addCostume: 增加一個(gè)costume
duplicateCostume: 復(fù)制costume
renameCostume: 重命名costume
deleteCostume: 刪除costume
getCostumeSvg: 獲取costume svg格式
updateSvg:
duplicateSound: 復(fù)制sound
addSound:
renameSound
deleteSound
getSoundBuffer: 從audio engine獲取一個(gè)sound buffer
addBackdrop:
addSprite2: 反序列化2.0的一個(gè)sprite紫新,并加載到當(dāng)前project
renameSprite
deleteSprite
duplicateSprite

attachAudioEngine: 關(guān)聯(lián)audio engine均蜜,gui項(xiàng)目中(gui.jsx)調(diào)用
attachRenderer: 關(guān)聯(lián)渲染器, gui項(xiàng)目中(stage.jsx)調(diào)用
attachStorage: 關(guān)聯(lián)存儲(chǔ)管理器, gui項(xiàng)目中(reducers/vm.js)調(diào)用

setLocale:多語(yǔ)言支持
setEditingTarget
shareBlocksToTarget: 當(dāng)從一個(gè)sprite拖拽到另一個(gè)sprite時(shí)調(diào)用
refreshWorkspace: 強(qiáng)制刷新
getTargetIdForDrawableId: 通過(guò)renderer的drawableid,反向獲取targetid
startDrag: 設(shè)置某target進(jìn)入drag mode(this. _dragTarget=target), gui項(xiàng)目中(stage.jsx)調(diào)用
stopDrag: 設(shè)置某target離開(kāi)drag mode(this. _dragTarget=null), gui項(xiàng)目中(stage.jsx)調(diào)用
postSpriteInfo: 向editing target or dragging target 發(fā)送sprite信息


event listener

blockListener:
flyoutBlockListener
monitorBlockListener
variableListener

emitTargetsUpdate:
emitWorkspaceUpdate

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芒率,一起剝皮案震驚了整個(gè)濱河市囤耳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偶芍,老刑警劉巖充择,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匪蟀,居然都是意外死亡椎麦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)材彪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)观挎,“玉大人,你說(shuō)我怎么就攤上這事段化∴医荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵显熏,是天一觀的道長(zhǎng)雄嚣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)喘蟆,這世上最難降的妖魔是什么缓升? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮蕴轨,結(jié)果婚禮上仔沿,老公的妹妹穿的比我還像新娘。我一直安慰自己尺棋,他們只是感情好封锉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著膘螟,像睡著了一般成福。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荆残,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天奴艾,我揣著相機(jī)與錄音,去河邊找鬼内斯。 笑死蕴潦,一個(gè)胖子當(dāng)著我的面吹牛像啼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潭苞,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忽冻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了此疹?” 一聲冷哼從身側(cè)響起僧诚,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝗碎,沒(méi)想到半個(gè)月后湖笨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦骑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年慈省,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眠菇。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡边败,死狀恐怖偎血,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饭入,我是刑警寧澤所坯,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站琅催,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谜叹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搬葬。 院中可真熱鬧荷腊,春花似錦、人聲如沸急凰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抡锈。三九已至疾忍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間床三,已是汗流浹背一罩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撇簿,地道東北人聂渊。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓差购,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汉嗽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欲逃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一、動(dòng)機(jī) 入IT這行快兩年了诊胞,實(shí)實(shí)在在的小菜鳥(niǎo)暖夭,沒(méi)有積累,沒(méi)有沉淀撵孤,是那種風(fēng)能刮走的淺薄迈着,可人不能這么混下去啊,一...
    w1992wishes閱讀 267評(píng)論 0 0
  • 背景: 一同事提到某客戶要求修改產(chǎn)品程序中的一段文字邪码,正常情況下這是很簡(jiǎn)單的事情裕菠,不需要我這業(yè)余人員參與,但問(wèn)題在...
    山東大蔥哥閱讀 1,367評(píng)論 6 25
  • 第一塊:『“下午好啊~”“下午好下午好…嗯……”“昨天打的賭闭专,今天該實(shí)現(xiàn)了吧~”“什么…啊…對(duì)對(duì)…喏…”“那么今天...
    李回閱讀 490評(píng)論 0 0
  • 在前面混元論里邊講混化運(yùn)動(dòng)曾經(jīng)講過(guò)混元?dú)獾倪\(yùn)動(dòng)奴潘。混元?dú)獾倪\(yùn)動(dòng)主要是開(kāi)合影钉、出入画髓、 聚散、化這七種形式平委。也就是說(shuō)奈虾,整個(gè)...
    石竹閱讀 893評(píng)論 0 3