558 lines
26 KiB
HTML
558 lines
26 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>MotaAction Blockly Demo</title>
|
||
<!-- <script src="../../blockly_compressed.js"></script>
|
||
<script src="../../blocks_compressed.js"></script>
|
||
<script src="../../javascript_compressed.js"></script>
|
||
<script src="../../msg/js/zh-hans.js"></script> -->
|
||
<!-- <script src="../../msg/js/en.js"></script> -->
|
||
|
||
<script src="blockly_compressed.js"></script>
|
||
<script src="blocks_compressed.js"></script>
|
||
<script src="javascript_compressed.js"></script>
|
||
<script src="zh-hans.js"></script>
|
||
<script src="motaActionBlocks.js"></script>
|
||
<style>
|
||
body {
|
||
background-color: #fff;
|
||
font-family: sans-serif;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- =========================================================== -->
|
||
|
||
|
||
<p>
|
||
<button onclick="showXML()">Show XML</button>
|
||
<!-- <button onclick="runCode()">Run JavaScript</button> -->
|
||
<button onclick="runCode()">console.log(obj=code)</button>
|
||
</p>
|
||
|
||
<div id="blocklyDiv" style="height: 480px; width: 940px;"></div>
|
||
|
||
<pre id="codeArea"></pre>
|
||
|
||
<!-- =========================================================== -->
|
||
|
||
<xml id="toolboxxx" style="display: none">
|
||
<category name="类别" expanded="true">
|
||
<category name="events"></category>
|
||
<category name="changefloor"></category>
|
||
</category>
|
||
<sep gap="200"></sep>
|
||
<category name="default">
|
||
<block type="controls_if"></block>
|
||
<block type="logic_compare"></block>
|
||
<block type="controls_repeat_ext"></block>
|
||
<block type="math_number"></block>
|
||
<block type="math_arithmetic"></block>
|
||
<block type="text"></block>
|
||
<block type="text_print"></block>
|
||
</category>
|
||
<category name="new"></category>
|
||
<category name="变量" expanded="true">
|
||
<!-- <category name="status" custom="MY_VARIABLE"></category> -->
|
||
<category name="item"></category>
|
||
<category name="flag">
|
||
<!-- <block type="flagvar"></block> -->
|
||
</category>
|
||
</category>
|
||
<category name="事件例子">
|
||
<block type="math_number" disabled="true">
|
||
<field name="NUM">42</field>
|
||
</block>
|
||
<sep gap="200"></sep>
|
||
<label text="这是一个循环的例子"></label>
|
||
<block type="controls_for">
|
||
<value name="FROM">
|
||
<block type="math_number">
|
||
<field name="NUM">1</field>
|
||
</block>
|
||
</value>
|
||
<value name="TO">
|
||
<block type="math_number">
|
||
<field name="NUM">10</field>
|
||
</block>
|
||
</value>
|
||
<value name="BY">
|
||
<block type="math_number">
|
||
<field name="NUM">1</field>
|
||
</block>
|
||
</value>
|
||
</block>
|
||
|
||
<block type="math_arithmetic">
|
||
<field name="OP">ADD</field>
|
||
<value name="A">
|
||
<shadow type="math_number">
|
||
<field name="NUM">1</field>
|
||
</shadow>
|
||
</value>
|
||
<value name="B">
|
||
<shadow type="math_number">
|
||
<field name="NUM">1</field>
|
||
</shadow>
|
||
</value>
|
||
</block>
|
||
</category>
|
||
<!-- <category name="Variables" colour="330" custom="VARIABLE"></category>
|
||
<category name="Functions" colour="290" custom="PROCEDURE"></category> -->
|
||
</xml>
|
||
|
||
<xml xmlns="http://www.w3.org/1999/xhtml" id="toolbox_source" style="display: none;">
|
||
<block type="math_number">
|
||
<field name="NUM">0</field>
|
||
</block>
|
||
<block type="math_arithmetic">
|
||
<field name="OP">ADD</field>
|
||
<value name="A">
|
||
<shadow type="math_number">
|
||
<field name="NUM">1</field>
|
||
</shadow>
|
||
</value>
|
||
<value name="B">
|
||
<shadow type="math_number">
|
||
<field name="NUM">1</field>
|
||
</shadow>
|
||
</value>
|
||
</block>
|
||
<block type="logic_compare">
|
||
<field name="OP">EQ</field>
|
||
</block>
|
||
<block type="logic_operation">
|
||
<field name="OP">AND</field>
|
||
</block>
|
||
<block type="logic_negate"></block>
|
||
<block type="evalstring_e">
|
||
<field name="EvalString">EvalString</field>
|
||
</block>
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">status</field>
|
||
<field name="EvalString">hp</field>
|
||
</block>
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">item</field>
|
||
<field name="EvalString">yellowKey</field>
|
||
</block>
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">flag</field>
|
||
<field name="EvalString">abc</field>
|
||
</block>
|
||
<block type="event_m">
|
||
<statement name="actionList">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
</block>
|
||
<block type="actionlist"></block>
|
||
<block type="text_s_1">
|
||
<field name="Evalstring">欢迎使用事件编辑器</field>
|
||
</block>
|
||
<block type="text_s_2">
|
||
<field name="EvalString">小妖精</field>
|
||
<field name="IdString">fairy</field>
|
||
<field name="Evalstring_1">欢迎使用事件编辑器</field>
|
||
</block>
|
||
<block type="tip_s">
|
||
<field name="EvalString">这段话将在左上角以气泡形式显示</field>
|
||
</block>
|
||
<block type="setvalue_s">
|
||
<value name="EvalString">
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">status</field>
|
||
<field name="EvalString">hp</field>
|
||
</block>
|
||
</value>
|
||
<value name="EvalString_1">
|
||
<block type="math_arithmetic">
|
||
<field name="OP">ADD</field>
|
||
<value name="A">
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">status</field>
|
||
<field name="EvalString">hp</field>
|
||
</block>
|
||
</value>
|
||
<value name="B">
|
||
<shadow type="math_number">
|
||
<field name="NUM">100</field>
|
||
</shadow>
|
||
</value>
|
||
</block>
|
||
</value>
|
||
</block>
|
||
<block type="show_s">
|
||
<field name="INT">0</field>
|
||
<field name="INT_1">0</field>
|
||
<field name="IdString"></field>
|
||
<field name="INT_2"></field>
|
||
</block>
|
||
<block type="hide_s">
|
||
<field name="INT"></field>
|
||
<field name="INT_1"></field>
|
||
<field name="IdString"></field>
|
||
<field name="INT_2"></field>
|
||
</block>
|
||
<block type="trigger_s">
|
||
<field name="INT">0</field>
|
||
<field name="INT_1">0</field>
|
||
</block>
|
||
<block type="revisit_s"></block>
|
||
<block type="exit_s"></block>
|
||
<block type="update_s"></block>
|
||
<block type="sleep_s">
|
||
<field name="INT">500</field>
|
||
</block>
|
||
<block type="battle_s">
|
||
<field name="IdString">greenSlime</field>
|
||
</block>
|
||
<block type="opendoor_s">
|
||
<field name="INT">0</field>
|
||
<field name="INT_1">0</field>
|
||
<field name="IdString"></field>
|
||
</block>
|
||
<block type="changefloor_s">
|
||
<field name="IdString">MT1</field>
|
||
<field name="INT">0</field>
|
||
<field name="INT_1">0</field>
|
||
<field name="EvalString"></field>
|
||
<field name="INT_2"></field>
|
||
</block>
|
||
<block type="changepos_s_1">
|
||
<field name="INT">0</field>
|
||
<field name="INT_2">0</field>
|
||
<field name="EvalString"></field>
|
||
</block>
|
||
<block type="changepos_s_2">
|
||
<field name="EvalString">up</field>
|
||
</block>
|
||
<block type="openshop_s">
|
||
<field name="IdString">shop1</field>
|
||
</block>
|
||
<block type="disableshop_s">
|
||
<field name="IdString">shop1</field>
|
||
</block>
|
||
<block type="setfg_s_1">
|
||
<field name="INT">255</field>
|
||
<field name="INT_1">255</field>
|
||
<field name="INT_2">255</field>
|
||
<field name="EvalString">1</field>
|
||
<field name="INT_3"></field>
|
||
</block>
|
||
<block type="setfg_s_2">
|
||
<field name="INT"></field>
|
||
</block>
|
||
<block type="move_s">
|
||
<field name="INT"></field>
|
||
<field name="INT_1"></field>
|
||
<field name="INT_2"></field>
|
||
<field name="EvalString">TRUE</field>
|
||
<field name="EvalString_1">上右3下2左上左2</field>
|
||
</block>
|
||
<block type="movehero_s">
|
||
<field name="INT"></field>
|
||
<field name="EvalString">上右3下2左上左2</field>
|
||
</block>
|
||
<block type="playbgm_s">
|
||
<field name="EvalString">bgm.mp3</field>
|
||
</block>
|
||
<block type="pausebgm_s"></block>
|
||
<block type="resumebgm_s"></block>
|
||
<block type="playsound_s">
|
||
<field name="EvalString">item.ogg</field>
|
||
</block>
|
||
<block type="win_s">
|
||
<field name="EvalString"></field>
|
||
</block>
|
||
<block type="lose_s">
|
||
<field name="EvalString"></field>
|
||
</block>
|
||
<block type="if_s">
|
||
<value name="EvalString">
|
||
<block type="logic_compare">
|
||
<field name="OP">GT</field>
|
||
<value name="A">
|
||
<block type="evalstring_all_e">
|
||
<field name="IdString">status</field>
|
||
<field name="EvalString">hp</field>
|
||
</block>
|
||
</value>
|
||
<value name="B">
|
||
<shadow type="math_number">
|
||
<field name="NUM">100</field>
|
||
</shadow>
|
||
</value>
|
||
</block>
|
||
</value>
|
||
<statement name="actionList">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
<statement name="actionList_1">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
</block>
|
||
<block type="choices_s">
|
||
<field name="EvalString">提示文字:选择一种钥匙</field>
|
||
<statement name="choicesContextList">
|
||
<block type="choicescontext">
|
||
<field name="EvalString">提示文字:黄钥匙</field>
|
||
<statement name="actionList">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
<next>
|
||
<block type="choicescontext">
|
||
<field name="EvalString">提示文字:蓝钥匙</field>
|
||
<statement name="actionList">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
<next>
|
||
<block type="choicescontext">
|
||
<field name="EvalString">提示文字:红钥匙</field>
|
||
<statement name="actionList">
|
||
<block type="actionlist"></block>
|
||
</statement>
|
||
</block>
|
||
</next>
|
||
</block>
|
||
</next>
|
||
</block>
|
||
</statement>
|
||
</block>
|
||
<block type="function_s">
|
||
<field name="EvalString">alert(core.getStatus("atk"));</field>
|
||
</block>
|
||
</xml>
|
||
|
||
<xml id="toolbox" style="display: none"><category name="未分类"></category></xml>
|
||
|
||
<script>
|
||
//不允许缺省的标记
|
||
/*
|
||
INT_CHECK = '999843861743683';
|
||
IdString_CHECK = 'this_id_must_be_inputted';
|
||
EvalString_CHECK = 'this_value_must_be_inputted';
|
||
*/
|
||
|
||
var moveStepParser = moveStepParser_2ac833aa_9115_48fc_b816_08cc229bb4d0;
|
||
|
||
var motaActionBlocks = motaActionBlocks_4a3632a9_8716_48b3_bf55_4ebbc4ff040c;
|
||
|
||
|
||
/* var category_new = (function(){
|
||
for(var node of document.getElementById('toolbox').children) {
|
||
if(node.getAttribute('name')=='new') return node;
|
||
}
|
||
})(); */
|
||
var category_new = document.getElementById('toolbox').children[0];
|
||
for(var blockNode of document.getElementById('toolbox_source').children){
|
||
category_new.appendChild(Blockly.Xml.textToDom(Blockly.Xml.domToText(blockNode)));
|
||
var sepNode=document.createElement('sep');
|
||
sepNode.setAttribute('gap',5);
|
||
category_new.appendChild(sepNode);
|
||
//category_new.innerHTML+='<sep gap="5"></sep>';
|
||
}
|
||
|
||
|
||
motaActionBlocks.forEach(function(v){
|
||
/*
|
||
var blockNode=document.createElement('block');
|
||
blockNode.setAttribute('type',v.type);
|
||
category_new.appendChild(blockNode);
|
||
|
||
//category_new.innerHTML+='<block type="'+v.type+'"></block>';
|
||
var sepNode=document.createElement('sep');
|
||
sepNode.setAttribute('gap',5);
|
||
category_new.appendChild(sepNode);
|
||
//category_new.innerHTML+='<sep gap="5"></sep>';
|
||
*/
|
||
|
||
var blockFunc;
|
||
|
||
if(v.hasOwnProperty('initFunc')){
|
||
blockFunc = v['initFunc'];
|
||
if (!(blockFunc instanceof Function)){
|
||
eval('blockFunc = '+v['initFunc']);
|
||
}
|
||
} else {
|
||
blockFunc = function() {this.jsonInit(v);}
|
||
}
|
||
Blockly.Blocks[v.type] = {
|
||
init: blockFunc
|
||
};
|
||
|
||
if(v.hasOwnProperty('generFunc')){
|
||
blockFunc = v['generFunc'];
|
||
if (!(blockFunc instanceof Function)){
|
||
eval('blockFunc = '+v['generFunc']);
|
||
}
|
||
Blockly.JavaScript[v.type] = blockFunc;
|
||
}
|
||
|
||
});
|
||
|
||
|
||
|
||
/*
|
||
b=[]
|
||
for(var ii in Blockly.JavaScript){if(typeof(Blockly.JavaScript[ii])==typeof(0)){
|
||
b.push([ii,Blockly.JavaScript[ii]]);
|
||
}}
|
||
b.sort(function(a,b){return a[1]-b[1]})
|
||
|
||
Blockly.JavaScript.ORDER_ATOMIC = 0; // 0 "" ...
|
||
Blockly.JavaScript.ORDER_NEW = 1.1; // new
|
||
Blockly.JavaScript.ORDER_MEMBER = 1.2; // . []
|
||
Blockly.JavaScript.ORDER_FUNCTION_CALL = 2; // ()
|
||
Blockly.JavaScript.ORDER_INCREMENT = 3; // ++
|
||
Blockly.JavaScript.ORDER_DECREMENT = 3; // --
|
||
Blockly.JavaScript.ORDER_BITWISE_NOT = 4.1; // ~
|
||
Blockly.JavaScript.ORDER_UNARY_PLUS = 4.2; // +
|
||
Blockly.JavaScript.ORDER_UNARY_NEGATION = 4.3; // -
|
||
Blockly.JavaScript.ORDER_LOGICAL_NOT = 4.4; // !
|
||
Blockly.JavaScript.ORDER_TYPEOF = 4.5; // typeof
|
||
Blockly.JavaScript.ORDER_VOID = 4.6; // void
|
||
Blockly.JavaScript.ORDER_DELETE = 4.7; // delete
|
||
Blockly.JavaScript.ORDER_DIVISION = 5.1; // /
|
||
Blockly.JavaScript.ORDER_MULTIPLICATION = 5.2; // *
|
||
Blockly.JavaScript.ORDER_MODULUS = 5.3; // %
|
||
Blockly.JavaScript.ORDER_SUBTRACTION = 6.1; // -
|
||
Blockly.JavaScript.ORDER_ADDITION = 6.2; // +
|
||
Blockly.JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>>
|
||
Blockly.JavaScript.ORDER_RELATIONAL = 8; // < <= > >=
|
||
Blockly.JavaScript.ORDER_IN = 8; // in
|
||
Blockly.JavaScript.ORDER_INSTANCEOF = 8; // instanceof
|
||
Blockly.JavaScript.ORDER_EQUALITY = 9; // == != === !==
|
||
Blockly.JavaScript.ORDER_BITWISE_AND = 10; // &
|
||
Blockly.JavaScript.ORDER_BITWISE_XOR = 11; // ^
|
||
Blockly.JavaScript.ORDER_BITWISE_OR = 12; // |
|
||
Blockly.JavaScript.ORDER_LOGICAL_AND = 13; // &&
|
||
Blockly.JavaScript.ORDER_LOGICAL_OR = 14; // ||
|
||
Blockly.JavaScript.ORDER_CONDITIONAL = 15; // ?:
|
||
Blockly.JavaScript.ORDER_ASSIGNMENT = 16; // = += -= *= /= %= <<= >>= ...
|
||
Blockly.JavaScript.ORDER_COMMA = 17; // ,
|
||
Blockly.JavaScript.ORDER_NONE = 99; // (...)
|
||
*/
|
||
|
||
|
||
//===init===
|
||
|
||
var demoWorkspace = Blockly.inject('blocklyDiv',{
|
||
media: 'media/',
|
||
toolbox: document.getElementById('toolbox'),
|
||
zoom:{
|
||
controls: true,
|
||
wheel: true,//false
|
||
startScale: 1.0,
|
||
maxScale: 3,
|
||
minScale: 0.3,
|
||
scaleSpeed: 1.08
|
||
},
|
||
trashcan: false,
|
||
});
|
||
|
||
//var xml_init = `<xml><block type="event_m" id="ZjQTmcPqlbmB4rWwtHFb" deletable="false" xxmovable="false"><statement name="actionList"><block type="actionlist" id="EqXfr9escNaQbktsBeeR"></block></statement></block></xml>`
|
||
var xml_init = '<xml xmlns="http://www.w3.org/1999/xhtml"><variables></variables><block type="event_m" id="ZjQTmcPqlbmB4rWwtHFb" ><statement name="actionList"><block type="actionlist" id="EqXfr9escNaQbktsBeeR"><statement name="ACTIONS"><block type="text_s_1" id="3.34tovt~URp|A^JLW`-"><field name="Evalstring">实现了文档中 choices: 给用户提供选项 中的复杂事件</field><next><block type="if_s" id="mB{gA~yKm5CmnjboTc)@"><value name="EvalString"><block type="logic_compare" id="Av`[}J)p1a*~f[x%k/iC"><field name="OP">EQ</field><value name="A"><block type="evalstring_all_e" id="L9PP2VY*=G2}u~[XH^~8"><field name="IdString">flag</field><field name="EvalString">women</field></block></value><value name="B"><shadow type="math_number" id="K(e-BEb3lq4p_Uq3a4fP"><field name="NUM">0</field></shadow></value></block></value><statement name="actionList"><block type="actionlist" id="n4IT]Xp(ep!b5Z;A7i!)"><statement name="ACTIONS"><block type="text_s_2" id="Fj~J}^k-ybh%hCTc!HzJ"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">这是个很复杂的例子,它将教会你如何使用if 语句进行条件判断,以及 choices 提供选项来供用户进行选择。</field><next><block type="text_s_2" id="tp$q~?4^N.CkBrW.)m=:"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">第一次访问我将显示这段文字;从第二次开始将会向你出售钥匙。\n钥匙价格将随着访问次数递增。\n当合计出售了七把钥匙后,将送你一把大黄门钥匙,并消失不再出现。</field><next><block type="text_s_2" id="#GN{01Kr#=U]IrEpF81F"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">这部分的逻辑比较长,请细心看样板的写法,是很容易看懂并理解的。</field></block></next></block></next></block></statement></block></statement><statement name="actionList_1"><block type="actionlist" id="zNiAq:34?E~VA]]_.*z?"><statement name="ACTIONS"><block type="if_s" id="q45FD9cEAXzv+6K1Q+As"><value name="EvalString"><block type="logic_compare" id="s(8a`p#Br9D42#:.(Ajp"><field name="OP">EQ</field><value name="A"><block type="evalstring_all_e" id="wY1%gHYZlbTR%w!j=.L;"><field name="IdString">flag</field><field name="EvalString">women</field></block></value><value name="B"><shadow type="math_number" id="=8W59@z1c8z3mg*sF%Yv"><field name="NUM">8</field></shadow></value></block></value><statement name="actionList"><block type="actionlist" id="NPPgOQR,ZNWZ]+qTcYo."><statement name="ACTIONS"><block type="text_s_2" id="7gm0#-f#SSZkhb@}`Vi#"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">你购买的钥匙已经够多了,再继续卖给你的话我会有危险的。</field><next><block type="text_s_2" id="6(z!Sd.3gKP!G3|nYRcq"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">看在你贡献给我这么多钱的份上,送你一把大黄门钥匙吧,希望你能好好用它。</field><next><block type="setvalue_s" id=";=ePDQeTA,kwEh$Ra^X_"><value name="EvalString"><block type="evalstring_all_e" id="z6.,x%^#p/C/Qk,gRjW#"><field name="IdString">item</field><field name="EvalString">bigKey</field></block></value><value name="EvalString_1"><block type="math_arithmetic" id=";etEds+-9.R3D)_h2m!b"><field name="OP">ADD</field><value name="A"><block type="evalstring_all_e" id="X30zJUgVZ^j@,4VzRY+U"><field name="IdString">item</field><field name="EvalString">bigKey</field></block></value><value name="B"><shadow type="math_number" id="8|9c~,axhUiAiXkoDe5L"><field name="NUM">1</field></shadow></value></block></value><next><block type="text_s_2" id="#SD_,q#qW}P_$FVas4e,"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">我先走了,拜拜~</field><next><block type="hide_s" id=")7zo%}*LQeNTH5/(dX:,"><field name="INT"></field><field name="INT_1"></field><field name="IdString"></field><field name="INT_2">500</field></block></next></block></next></block></next></block></next></block></statement></block></statement><statement name="actionList_1"><block type="actionlist" id="Al0uQGP.@b8JT5*AkGt("><statement name="ACTIONS"><block type="choices_s" id="7;M82mnQZq-[SxPg|Q}4"><field name="EvalString">\t[老人,woman]少年,你需要钥匙吗?\n我这里有大把的!</field><statement name="choicesContextList"><block type="choicescontext" id="3KXrI#DBm{X|YrW=yNzr"><field name="EvalString">黄钥匙(${9+flag:woman_times}金币)</field><statement name="actionList"><block type="actionlist" id="W_o#WBfK_M[M$~4NcuY/"><statement name="ACTIONS"><block type="if_s" id="1WMD~nib3*_IF,XbQt18"><value name="EvalString"><block type="logic_compare" id="^S@~Fb^s*:!MA293S-2R"><field name="OP">GT</field><value name="A"><block type="evalstring_all_e" id="aa*eD]u,rpCT9rx-gy9@"><field name="IdString">status</field><field name="EvalString">money</field></block></value><value name="B"><shadow type="math_number" id="gNe0fzQ3r+8KN{;/3nru"><field name="NUM">100</field></shadow><block type="math_arithmetic" id="/5p1%-Fn+hMrrC+=npRQ"><field name="OP">ADD</field><value name="A"><block type="math_number" id="397+rc2h0:_1dGJUDe4N"><field name="NUM">9</field></block></value><value name="B"><shadow type="math_number" id="(MwwB`J#QLyIza@kwV6r"><field name="NUM">1</field></shadow><block type="evalstring_all_e" id="c^yw+7ul=|(t#SO|RE]="><field name="IdString">flag</field><field name="EvalString">woman_times</field></block></value></block></value></block></value><statement name="actionList"><block type="actionlist" id="/t}GM:Vt#HCbvNXA+y)E"><statement name="ACTIONS"><block type="setvalue_s" id="W8^$5^:x,0FbL1?*)7wl"><value name="EvalString"><block type="evalstring_all_e" id="0g[76$.9md-_UjOf90q}"><field name="IdString">status</field><field name="EvalString">money</field></block></value><value name="EvalString_1"><block type="math_arithmetic" id="BkagWN$EMdwf34~*ir=x"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="])W~iS3`H%9+Zj?-6G1X"><field name="NUM">1</field></shadow><block type="evalstring_all_e" id="s2h~Mc^k6gMjxy--w`6U"><field name="IdString">status</field><field name="EvalString">money</field></block></value><value name="B"><shadow type="math_number" id="[1m|A:2a3JT2+nX=kw8l"><field name="NUM">1</field></shadow><block type="math_arithmetic" id="@JLsKU2nRpS5^3D(}iID"><field name="OP">ADD</field><value name="A"><block type="math_number" id="pAqfF:veJ!VY@%M2o#Qh"><field name="NUM">9</field></block></value><value name="B"><shadow type="math_number" id="(MwwB`J#QLyIza@kwV6r"><field name="NUM">1</field></shadow><block type="evalstring_all_e" id="d~sb)f/4u^z:T*)_DYdD"><field name="IdString">flag</field><field name="EvalString">woman_times</field></block></value></block></value></block></value><next><block type="setvalue_s" id="t^!`ARoxxX{@%K0)dhU$"><value name="EvalString"><block type="evalstring_all_e" id="L%3fu1GeNRp[v5h8GFPf"><field name="IdString">item</field><field name="EvalString">yellowKey</field></block></value><value name="EvalString_1"><block type="math_arithmetic" id="LQf)@%~$k?frXt4w_#HP"><field name="OP">ADD</field><value name="A"><block type="evalstring_all_e" id="DJO76`0##,kv$7R|dxnG"><field name="IdString">item</field><field name="EvalString">yellowKey</field></block></value><value name="B"><shadow type="math_number" id="CSB3_2t%3m.90nl9t0/%"><field name="NUM">1</field></shadow></value></block></value></block></next></block></statement></block></statement><statement name="actionList_1"><block type="actionlist" id="1q=-j__Z8XrTdijQk3;2"><statement name="ACTIONS"><block type="text_s_2" id="Uwy9+c1h-C];+9@A9Pze"><field name="EvalString">老人</field><field name="IdString">woman</field><field name="Evalstring_1">你的金钱不足!</field><next><block type="revisit_s" id="^TdL2L]c[MLyE9NRlWT|"></block></next></block></statement></block></statement></block></statement></block></statement><next><block type="choicescontext" id="%Jw4/]WLl2;G~i6Id-*t"><field name="EvalString">蓝钥匙(${18+2*flag:woman_times}金币)</field><statement name="actionList"><block type="actionlist" id="oR!q:eXqk3{=VaU?CmcJ"></block></statement><next><block type="choicescontext" id="l4:tywnG2C.3+Dg%-Zf~"><field name="EvalString">红钥匙(${36+4*flag:woman_times}金币)</field><statement name="actionList"><block type="actionlist" id="Sy98T6MjM!+Wjgr2u;,H"></block></statement></block></next></block></next></block></statement></block></statement></block></statement></block></statement></block></statement><next><block type="setvalue_s" id="y+r[Q2]ri_tOpABI(*fh"><value name="EvalString"><block type="evalstring_all_e" id="TwNVtG,j[^jU.i)t5*@_"><field name="IdString">flag</field><field name="EvalString">woman_times</field></block></value><value name="EvalString_1"><block type="math_arithmetic" id="%k^q!D%y5yy%@B#)ji#5"><field name="OP">ADD</field><value name="A"><block type="evalstring_all_e" id="bzhCPn`Fy!h.Jj|dmq:K"><field name="IdString">flag</field><field name="EvalString">woman_times</field></block></value><value name="B"><shadow type="math_number" id="%Sl.Z`]iE]y{JAs2Q-}F"><field name="NUM">1</field></shadow></value></block></value><next><block type="revisit_s" id="n]{f{W-?wDAz0@Eo9y3v"></block></next></block></next></block></next></block></statement></block></statement></block></xml>';
|
||
var xml = Blockly.Xml.textToDom(xml_init);
|
||
Blockly.Xml.domToWorkspace(xml, demoWorkspace);
|
||
//demoWorkspace.getBlockById("ZjQTmcPqlbmB4rWwtHFb").setDeletable(false);//设置为不可删除
|
||
setTimeout(function(){
|
||
//demoWorkspace.getBlockById("ZjQTmcPqlbmB4rWwtHFb").dispose();//删除
|
||
}, 1000*1000);
|
||
|
||
|
||
//=== listen
|
||
|
||
function myUpdateFunction(event) {
|
||
gevent=event;
|
||
console.log(event);
|
||
/*
|
||
https://developers.google.com/blockly/guides/configure/web/events
|
||
file:///E:/workspace/blockly/blockly-master/demos/[mytest/Events%20%C2%A0_%C2%A0%20Blockly%20%C2%A0_%C2%A0%20Google%20Developers.mhtml
|
||
|
||
type string One of Blockly.Events.CREATE, Blockly.Events.DELETE, Blockly.Events.CHANGE, Blockly.Events.MOVE, Blockly.Events.UI.
|
||
workspaceId string UUID of workspace. The workspace can be found with Blockly.Workspace.getById(event.workspaceId)
|
||
blockId string UUID of block. The block can be found with workspace.getBlockById(event.blockId)
|
||
group string UUID of group. Some events are part of an indivisible group, such as inserting a statement in a stack.
|
||
|
||
demoWorkspace.getBlockById(event.blockId).type=="customvar"
|
||
|
||
*/
|
||
try {
|
||
var code = Blockly.JavaScript.workspaceToCode(demoWorkspace);
|
||
document.getElementById('codeArea').innerText = code;
|
||
} catch (error) {
|
||
document.getElementById('codeArea').innerText = String(error);
|
||
console.log(error);
|
||
}
|
||
|
||
}
|
||
demoWorkspace.addChangeListener(myUpdateFunction);
|
||
|
||
demoWorkspace.addChangeListener(Blockly.Events.disableOrphans);//自动禁用任何未连接到根块的块
|
||
|
||
/*
|
||
var MY_VARIABLE_callback = function (workspace) {
|
||
var varList = ['status:atk','status:money','status:hp'];
|
||
var xmlList = [];
|
||
if (Blockly.Blocks['customvar']) {
|
||
for (var i = 0; i < varList.length; i++) {
|
||
var blockText = '<xml>' +
|
||
'<block type="customvar">' +
|
||
'<field name="VARNAME">' + varList[i] + '</field>' +
|
||
'</block>' +
|
||
'</xml>';
|
||
var block = Blockly.Xml.textToDom(blockText).firstChild;
|
||
xmlList.push(block);
|
||
}
|
||
}
|
||
return xmlList;
|
||
}
|
||
demoWorkspace.registerToolboxCategoryCallback('MY_VARIABLE', MY_VARIABLE_callback);
|
||
*/
|
||
|
||
</script>
|
||
|
||
<script>
|
||
|
||
function showXML() {
|
||
/* // Generate JavaScript code and display it.
|
||
Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
|
||
var code = Blockly.JavaScript.workspaceToCode(demoWorkspace);
|
||
alert(code); */
|
||
var xml = Blockly.Xml.workspaceToDom(demoWorkspace);
|
||
var xml_text = Blockly.Xml.domToText(xml);
|
||
console.log(xml_text);
|
||
console.log(xml);
|
||
}
|
||
|
||
function runCode() {
|
||
// Generate JavaScript code and run it.
|
||
window.LoopTrap = 1000;
|
||
Blockly.JavaScript.INFINITE_LOOP_TRAP =
|
||
'if (--window.LoopTrap == 0) throw "Infinite loop.";\n';
|
||
var code = Blockly.JavaScript.workspaceToCode(demoWorkspace);
|
||
Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
|
||
try {
|
||
eval('obj=' + code.split('\n').join(''));
|
||
console.log(obj);
|
||
} catch (e) {
|
||
alert(e);
|
||
}
|
||
}
|
||
|
||
</script>
|
||
|
||
<script>
|
||
/*
|
||
var xml = Blockly.Xml.workspaceToDom(demoWorkspace);
|
||
var xml_text = Blockly.Xml.domToText(xml);
|
||
//------
|
||
var xml = Blockly.Xml.textToDom(xml_text);
|
||
Blockly.Xml.domToWorkspace(xml, demoWorkspace);
|
||
*/
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|