Browse Source

7月底演示版本调整

master
wally 4 years ago
commit
28de64ba2b
  1. 24
      .gitignore
  2. BIN
      images/pullRadish_v1.6_atlas_1.png
  3. 203
      images/pullRadish_v1.6_atlas_2.json
  4. 155
      images/pullRadish_v1.json
  5. 32
      index.html
  6. 478
      index.js
  7. 15
      message.js
  8. BIN
      pullRadish-v1.6.fla
  9. 870
      pullRadish-v1.6.js
  10. 148
      socket.js
  11. BIN
      sounds/amazing.mp3
  12. BIN
      sounds/bgmMusic.mp3
  13. BIN
      sounds/excitationMusic.mp3
  14. BIN
      sounds/unbelievable.mp3

24
.gitignore

@ -0,0 +1,24 @@
# Build and Release Folders
bin-debug/
bin-release/
[Oo]bj/
[Bb]in/
# Other files and folders
.settings/
node_modules/
.idea
.vscode
pullRadish-v1.6.html
.DS_Store
# Executables
*.swf
*.air
*.ipa
*.apk
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder.

BIN
images/pullRadish_v1.6_atlas_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

203
images/pullRadish_v1.6_atlas_2.json

@ -0,0 +1,203 @@
{"frames": {
"B1":
{
"frame": {"x":1795,"y":410,"w":29,"h":29},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":29,"h":29},
"sourceSize": {"w":29,"h":29}
},
"B2":
{
"frame": {"x":1987,"y":165,"w":53,"h":53},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":53,"h":53},
"sourceSize": {"w":53,"h":53}
},
"B3":
{
"frame": {"x":1618,"y":410,"w":88,"h":89},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":89},
"sourceSize": {"w":88,"h":89}
},
"B4":
{
"frame": {"x":1695,"y":501,"w":73,"h":67},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":73,"h":67},
"sourceSize": {"w":73,"h":67}
},
"B5":
{
"frame": {"x":1708,"y":410,"w":85,"h":89},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":89},
"sourceSize": {"w":85,"h":89}
},
"B6":
{
"frame": {"x":1933,"y":418,"w":91,"h":97},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":91,"h":97},
"sourceSize": {"w":91,"h":97}
},
"B7":
{
"frame": {"x":1428,"y":410,"w":93,"h":92},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":93,"h":92},
"sourceSize": {"w":93,"h":92}
},
"B8":
{
"frame": {"x":1523,"y":410,"w":93,"h":92},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":93,"h":92},
"sourceSize": {"w":93,"h":92}
},
"LB1":
{
"frame": {"x":1830,"y":323,"w":101,"h":126},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":101,"h":126},
"sourceSize": {"w":101,"h":126}
},
"bg_grassland":
{
"frame": {"x":0,"y":475,"w":1024,"h":350},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":1024,"h":350},
"sourceSize": {"w":1024,"h":350}
},
"bg_ground":
{
"frame": {"x":0,"y":0,"w":1024,"h":473},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":1024,"h":473},
"sourceSize": {"w":1024,"h":473}
},
"hole1":
{
"frame": {"x":1770,"y":523,"w":108,"h":31},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":108,"h":31},
"sourceSize": {"w":108,"h":31}
},
"hole2":
{
"frame": {"x":1428,"y":504,"w":112,"h":30},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":112,"h":30},
"sourceSize": {"w":112,"h":30}
},
"rabit1":
{
"frame": {"x":1900,"y":165,"w":85,"h":156},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":156},
"sourceSize": {"w":85,"h":156}
},
"rabit2":
{
"frame": {"x":1900,"y":0,"w":120,"h":163},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":120,"h":163},
"sourceSize": {"w":120,"h":163}
},
"radish":
{
"frame": {"x":1933,"y":323,"w":104,"h":93},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":104,"h":93},
"sourceSize": {"w":104,"h":93}
},
"任务完成":
{
"frame": {"x":1463,"y":0,"w":435,"h":307},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":435,"h":307},
"sourceSize": {"w":435,"h":307}
},
"倒计时":
{
"frame": {"x":1026,"y":0,"w":435,"h":307},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":435,"h":307},
"sourceSize": {"w":435,"h":307}
},
"再来一次":
{
"frame": {"x":1026,"y":410,"w":400,"h":99},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":400,"h":99},
"sourceSize": {"w":400,"h":99}
},
"分数":
{
"frame": {"x":1882,"y":517,"w":124,"h":46},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":124,"h":46},
"sourceSize": {"w":124,"h":46}
},
"开始按钮":
{
"frame": {"x":1026,"y":309,"w":400,"h":99},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":400,"h":99},
"sourceSize": {"w":400,"h":99}
},
"开始训练":
{
"frame": {"x":1428,"y":309,"w":400,"h":99},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":400,"h":99},
"sourceSize": {"w":400,"h":99}
},
"计时":
{
"frame": {"x":1795,"y":451,"w":85,"h":70},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":70},
"sourceSize": {"w":85,"h":70}
},
"返回按钮":
{
"frame": {"x":1618,"y":501,"w":75,"h":75},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":75,"h":75},
"sourceSize": {"w":75,"h":75}
}},
"meta": {
"app": "Adobe Animate",
"version": "21.0.0.35450",
"image": "pullRadish_v1.6_atlas_2.png",
"format": "undefined",
"size": {"w":2048,"h":1024},
"scale": "1"
}
}

155
images/pullRadish_v1.json

@ -0,0 +1,155 @@
{"frames": {
"B1":
{
"frame": {"x":984,"y":918,"w":29,"h":29},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":29,"h":29},
"sourceSize": {"w":29,"h":29}
},
"B2":
{
"frame": {"x":746,"y":921,"w":53,"h":53},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":53,"h":53},
"sourceSize": {"w":53,"h":53}
},
"B3":
{
"frame": {"x":822,"y":827,"w":88,"h":89},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":89},
"sourceSize": {"w":88,"h":89}
},
"B4":
{
"frame": {"x":909,"y":918,"w":73,"h":67},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":73,"h":67},
"sourceSize": {"w":73,"h":67}
},
"B5":
{
"frame": {"x":912,"y":827,"w":85,"h":89},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":89},
"sourceSize": {"w":85,"h":89}
},
"B6":
{
"frame": {"x":539,"y":827,"w":91,"h":97},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":91,"h":97},
"sourceSize": {"w":91,"h":97}
},
"B7":
{
"frame": {"x":632,"y":827,"w":93,"h":92},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":93,"h":92},
"sourceSize": {"w":93,"h":92}
},
"B8":
{
"frame": {"x":727,"y":827,"w":93,"h":92},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":93,"h":92},
"sourceSize": {"w":93,"h":92}
},
"LB1":
{
"frame": {"x":330,"y":827,"w":101,"h":126},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":101,"h":126},
"sourceSize": {"w":101,"h":126}
},
"bg_grassland":
{
"frame": {"x":0,"y":475,"w":1024,"h":350},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":1024,"h":350},
"sourceSize": {"w":1024,"h":350}
},
"bg_ground":
{
"frame": {"x":0,"y":0,"w":1024,"h":473},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":1024,"h":473},
"sourceSize": {"w":1024,"h":473}
},
"hole1":
{
"frame": {"x":433,"y":926,"w":108,"h":31},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":108,"h":31},
"sourceSize": {"w":108,"h":31}
},
"hole2":
{
"frame": {"x":632,"y":921,"w":112,"h":30},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":112,"h":30},
"sourceSize": {"w":112,"h":30}
},
"rabit1":
{
"frame": {"x":122,"y":827,"w":85,"h":156},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":156},
"sourceSize": {"w":85,"h":156}
},
"rabit2":
{
"frame": {"x":0,"y":827,"w":120,"h":163},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":120,"h":163},
"sourceSize": {"w":120,"h":163}
},
"radish":
{
"frame": {"x":433,"y":827,"w":104,"h":93},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":104,"h":93},
"sourceSize": {"w":104,"h":93}
},
"sun":
{
"frame": {"x":209,"y":827,"w":119,"h":110},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":119,"h":110},
"sourceSize": {"w":119,"h":110}
},
"time":
{
"frame": {"x":822,"y":918,"w":85,"h":85},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":85,"h":85},
"sourceSize": {"w":85,"h":85}
}},
"meta": {
"app": "Adobe Animate",
"version": "20.5.1.31044",
"image": "pullRadish_v1.6_atlas_1.png",
"format": "undefined",
"size": {"w":1024,"h":1024},
"scale": "1"
}
}

32
index.html

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="authoring-tool" content="Adobe_Animate_CC">
<title>pullRadish-v1.6</title>
<!-- write your code here -->
<style>
html, body { background-color: transparent }
#animation_container {
position:absolute;
margin:auto;
left:0;right:0;
top:0;bottom:0;
}
</style>
<script src="https://code.createjs.com/1.0.0/createjs.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/web-socket-js/1.0.0/web_socket.min.js"></script>
<script src="pullRadish-v1.6.js?1622677857927"></script>
<script src="socket.js"></script>
<script src="message.js"></script>
<script src="index.js"></script>
<!-- write your code here -->
</head>
<body onload="init();" style="margin:0px;">
<div id="animation_container" style="background-color:rgba(255, 255, 255, 1.00); width:1024px; height:768px">
<canvas id="canvas" width="1024" height="768" style="position: absolute; display: block; background-color:rgba(255, 255, 255, 1.00);"></canvas>
<div id="dom_overlay_container" style="pointer-events:none; overflow:hidden; width:1024px; height:768px; position: absolute; left: 0px; top: 0px; display: block;">
</div>
</div>
</body>
</html>

478
index.js

@ -0,0 +1,478 @@
var canvas, stage, exportRoot, anim_container, dom_overlay_container, fnStartAnimation;
const obj = {
lib: null,
holes: [], // 洞洞的实例集合
radishes: [], // 萝卜的集合
rabbit: null, // 兔子对象
timeBg: null, // 倒计时背景对象
timeText: null, // 倒计时文本对象
totalTime: 60, // 总时长 s
scoreText: null, // 得分文本对象
totalScore: 0, // 总分 满分100分 每拔一个萝卜+5分
pulledRadishNum: 0, // 已经拔了的萝卜的数量
timerId: null, // 倒计时计时器的id
btnBegin: null, // 开始游戏的按钮
btnAgain: null, // 再玩一次的按钮
bgModalBegin: null, // 开始倒计时面板
countTimer: null, // 开始游戏的倒计时的 计时器id
count: 5, // 开始游戏时的倒计时
music: {
bgm: null, // 背景音乐
excitation: null, // 拔出一个萝卜的激励声音
amazing: null,
unbelievable: null, //
},
gameStart: false, // 游戏时候开始
lock: false, // 锁 拔的过程中不能出发下一次拔的动作
};
function init() {
initMessage();
canvas = document.getElementById("canvas");
anim_container = document.getElementById("animation_container");
dom_overlay_container = document.getElementById("dom_overlay_container");
var comp = AdobeAn.getComposition("94CA090E719F4688AE0D01901C9EA0D7");
var lib = comp.getLibrary();
var loader = new createjs.LoadQueue(false);
loader.addEventListener("fileload", function (evt) {
handleFileLoad(evt, comp)
});
loader.addEventListener("complete", function (evt) {
handleComplete(evt, comp)
});
var lib = comp.getLibrary();
loader.loadManifest(lib.properties.manifest);
}
function handleFileLoad(evt, comp) {
var images = comp.getImages();
if (evt && (evt.item.type == "image")) {
images[evt.item.id] = evt.result;
}
}
function handleComplete(evt, comp) {
//This function is always called, irrespective of the content. You can use the variable "stage" after it is created in token create_stage.
var lib = comp.getLibrary();
var ss = comp.getSpriteSheet();
var queue = evt.target;
var ssMetadata = lib.ssMetadata;
for (i = 0; i < ssMetadata.length; i++) {
ss[ssMetadata[i].name] = new createjs.SpriteSheet({
"images": [queue.getResult(ssMetadata[i].name)],
"frames": ssMetadata[i].frames
})
}
exportRoot = new lib.pullRadishv16();
stage = new lib.Stage(canvas);
//Registers the "tick" event listener.
fnStartAnimation = function () {
stage.addChild(exportRoot);
obj.lib = lib;
initStage(lib);
createjs.Ticker.framerate = lib.properties.fps;
createjs.Ticker.addEventListener("tick", stage);
}
//Code to support hidpi screens and responsive scaling.
AdobeAn.makeResponsive(true, 'both', true, 1, [canvas, anim_container, dom_overlay_container]);
AdobeAn.compositionLoaded(lib.properties.id);
fnStartAnimation();
}
// 初始绘制舞台相关元素
function initStage(lib) {
initSound();
initRadishes(lib);
initRabbit(lib);
initHoles(lib);
initTime(lib);
initScore(lib);
initBeginBtn();
initBackBtn();
// test();
}
// 初始化音频资源
function initSound() {
createjs.Sound.alternateExtensions = ["mp3"];
const sounds = [
{ src: './sounds/bgmMusic.mp3', id: 'bgm'},
{ src: './sounds/excitationMusic.mp3', id: 'excitation'},
{ src: './sounds/amazing.mp3', id: 'amazing'},
{ src: './sounds/unbelievable.mp3', id: 'unbelievable'},
];
createjs.Sound.addEventListener('fileload', function (event) {
obj.music[event.id] = createjs.Sound.createInstance(event.id);
});
createjs.Sound.registerSounds(sounds, './');
}
// 初始化开始按钮
function initBeginBtn() {
obj.btnBegin = new obj.lib.btnBegin();
obj.btnBegin.x = obj.lib.properties.width / 2;
obj.btnBegin.y = obj.lib.properties.height / 2;
// 点了以后开始游戏
obj.btnBegin.addEventListener('click', function() {
send()
}, false);
stage.addChild(obj.btnBegin);
}
// 初始 开始倒计时面板
function initBeginCount() {
obj.music.bgm && obj.music.bgm.play({ loop: -1, volume: 0.3 }); // 播放背景音乐
obj.bgModalBegin = new obj.lib.bgModalBegin();
obj.bgModalBegin.x = obj.lib.properties.width / 2;
obj.bgModalBegin.y = obj.lib.properties.height / 2;
stage.addChild(obj.bgModalBegin); // 显示开始游戏的倒计时面板
stage.removeChild(obj.btnBegin); // 移除开始游戏的按钮
const startTime = +gameInfo.startTime;
const endCountTime = startTime + obj.count * 1000;
obj.count = Math.floor((endCountTime - Date.now()) / 1000);
changeBeginTime(obj.count); // 开始开始游戏的 倒计时
obj.countTimer = setInterval(function() {
obj.count = Math.floor((endCountTime - Date.now()) / 1000)
stage.removeChild(obj.beginTimeText);
changeBeginTime(obj.count);
}, 1000);
}
// 修改开始倒计时
function changeBeginTime(time) {
if (time === 0) {
console.log(time);
// 发送倒计时结束的消息
clearInterval(obj.countTimer);
stage.removeChild(obj.beginTimeText);
stage.removeChild(obj.bgModalBegin);
sendEndCountRequest();
return;
}
const text = new createjs.Text(time, "bold 100px Arial", "#87431c");
text.x = obj.lib.properties.width / 2;
text.y = obj.lib.properties.height / 2 + 20;
text.textAlign = 'center';
text.textBaseline = "alphabetic";
obj.beginTimeText = text;
stage.addChild(text);
}
// 收到倒计时结束的消息
function onCountdownMessage() {
obj.gameStart = true;
interval();
}
/**
* 初始绘制holes 洞洞
* @param {object} lib
*/
function initHoles(lib) {
const deltaX = 185; // 列偏移
const deltaY = 132; // 行偏移
const initX = 108; // 第一个坑X
const initY = 290; // 第一个坑Y
for (let j = 0; j < 4; j++) {
for (let i = 0; i < 5; i++) {
const holeInstance = new lib.hole();
holeInstance.x = initX + deltaX * i;
holeInstance.y = initY + deltaY * j;
obj.holes.push(holeInstance);
stage.addChild(holeInstance);
}
}
}
/**
* 初始绘制radishes 萝卜
* @param {object} lib
*/
function initRadishes(lib) {
const deltaX = 185; // 列偏移
const deltaY = 132; // 行偏移
const initX = 150; // 第一个坑X
const initY = 260; // 第一个坑Y
for (let j = 0; j < 4; j++) {
for (let i = 0; i < 5; i++) {
const radishInstance = new lib.radish_1();
radishInstance.x = initX + deltaX * i;
radishInstance.y = initY + deltaY * j;
obj.radishes.push(radishInstance);
stage.addChild(radishInstance);
}
}
}
/**
* 初始绘制兔子
* @param {object} lib
*/
function initRabbit(lib) {
const initX = 100;
const initY = 250;
const deltaX = 185;
const deltaY = 132;
const rabbitInstance = new lib.rabbitCell();
rabbitInstance.x = initX + deltaX * (obj.pulledRadishNum % 5);
rabbitInstance.y = initY + deltaY * Math.floor(obj.pulledRadishNum / 5);
obj.rabbit = rabbitInstance;
stage.addChild(rabbitInstance);
}
/**
* 初始绘制倒计时
* @param {object} lib
*/
function initTime(lib) {
const initX = 920;
const initY = 80;
const instance = new lib.timeBg();
instance.x = initX;
instance.y = initY;
obj.timeBg = instance;
stage.addChild(instance);
changeTime(obj.totalTime);
}
/**
* 修改倒计时
* @param {number} totalTime 游戏剩余秒数
*/
function changeTime(totalTime) {
const text = new createjs.Text(totalTime, "bold 40px Arial", "#823d16");
text.x = 922;
text.y = 100;
text.textAlign = 'center';
text.textBaseline = "alphabetic";
obj.timeText = text;
stage.addChild(text);
}
/**
* 修改得分
* @param {number} score 得分
*/
function changeScore(score) {
const text = new createjs.Text(score, "bold 32px Arial", "#FFF");
text.x = obj.lib.properties.width / 2 + 50;
text.y = 97;
text.textAlign = 'center';
text.textBaseline = "alphabetic";
obj.scoreText = text;
stage.addChild(text);
}
/**
* 初始绘制得分
* @param {object} lib
*/
function initScore(lib) {
const initX = obj.lib.properties.width / 2;
const initY = 80;
const instance = new lib.scoreBg();
instance.x = initX;
instance.y = initY;
instance.scaleX = 1.5;
instance.scaleY = 1.5;
obj.timeBg = instance;
stage.addChild(instance);
changeScore(obj.totalScore);
}
// 测试
function test() {
document.addEventListener('click', handlePull, false);
}
// 一次拔萝卜的动作
// 测试函数
// 1. 萝卜动画
// 2. 兔子动画
// 3. 动画结束后 洞洞变状态
// 4. 分数+5
// 5. 兔子跑到下一个洞洞附近
// 时间到游戏结束
// 拔完了20个萝卜游戏结束
function handlePull() {
if (obj.lock || !obj.gameStart) return;
obj.lock = true;
if (obj.totalTime <= 0 || obj.pulledRadishNum >= 20) return;
// 1. 设置萝卜的动画及状态
obj.radishes[obj.pulledRadishNum].gotoAndPlay('radish_start');
// 2. 兔子的动画
obj.rabbit.gotoAndPlay('rabbit_start');
// 3. 延时修改洞洞的状态
// 没找到动画的回调 目前只能用延时来处理
setTimeout(function () {
// obj.holes[obj.pulledRadishNum].gotoAndPlay('hole_active');
if (obj.pulledRadishNum >= 20) {
// 游戏结束
gameOver();
return
}
obj.rabbit && stage.removeChild(obj.rabbit);
initRabbit(obj.lib);
for (let i = 0; i < obj.pulledRadishNum; i++) {
obj.holes[i].gotoAndStop('hole_active');
obj.radishes[i].gotoAndStop('radish_bomb_end');
}
obj.lock = false;
}, 1250);
}
// 收到了计分的消息
function onScoreMessage(score, times) {
console.log('score, times',score, times)
obj.totalScore = score;
obj.pulledRadishNum = times;
playExcitationMusic(); // 播放激励音乐
obj.scoreText && stage.removeChild(obj.scoreText); // 清除原有的分数
changeScore(obj.totalScore); // 显示新的分数
}
// 播放激励音乐
function playExcitationMusic() {
switch (obj.pulledRadishNum % 5) {
case 0:
obj.music.unbelievable.play();
break;
case 3:
case 4:
obj.music.amazing.play();
break;
default:
obj.music.excitation.play();
break;
}
}
// 游戏结束
function gameOver() {
console.log('game over', obj);
obj.rabbit && stage.removeChild(obj.rabbit);
obj.timerId && clearInterval(obj.timerId);
obj.timerId = null;
sendEndRequest(); // 发送结束http请求
showEndModal();
}
// 发送倒计时结束http请求
function sendEndCountRequest() {
const data = { "param": { "id": gameInfo.patientId, "recordId": gameInfo.recordId } }
fetch('//www.tall.wiki/gateway/recovery/patient/countdown', {
method: 'POST',
mode: 'cors',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(response => {
if (response && response.code === 200) {
// 结束成功
} else {
alert('网络异常, 请检查网络刷新重试');
console.error(response.msg);
}
})
.catch(error => console.error('Error:', error));
}
// 发送结束http请求
function sendEndRequest() {
/**
gameId: "1"
patientId: "1"
recordId: "1400659869853421568"
*/
const data = { "param": { "id": gameInfo.recordId, "patientId": gameInfo.patientId, "score": obj.totalScore } };
fetch('//www.tall.wiki/gateway/recovery/patient/end', {
method: 'POST',
mode: 'cors',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(response => {
if (response && response.code === 200) {
// 结束成功
} else {
console.error(response.msg);
}
})
.catch(error => console.error('Error:', error));
}
// 处理倒计时
function interval() {
if (obj.timerId) return;
const endTime = +gameInfo.startTime + 10 * 1000 + +gameInfo.duration;
obj.timerId = setInterval(function () {
if (obj.totalTime === 0) {
gameOver();
return;
}
obj.totalTime = Math.floor((endTime - Date.now()) / 1000);
obj.timeText && stage.removeChild(obj.timeText);
changeTime(obj.totalTime);
}, 1000);
}
// 显示结束游戏面板 及得分
function showEndModal() {
obj.endModal = new obj.lib.bgModalEnd();
obj.endModal.x = obj.lib.properties.width / 2;
obj.endModal.y = obj.lib.properties.height / 2
stage.addChild(obj.endModal);
const text = new createjs.Text(obj.totalScore, "bold 100px Arial", "#793b18");
text.x = obj.lib.properties.width / 2;
text.y = obj.lib.properties.height / 2 + 70;
text.textAlign = 'center';
text.textBaseline = "alphabetic";
obj.endText = text;
stage.addChild(text);
showAgainBtn();
}
// 显示再玩一次的按钮
function showAgainBtn() {
const btnAgain = new obj.lib.btnAgain();
btnAgain.x = obj.lib.properties.width / 2;
btnAgain.y = obj.lib.properties.height / 2 + 150;
obj.btnAgain = btnAgain;
obj.btnAgain.addEventListener('click', function() {
location.reload();
}, false);
stage.addChild(btnAgain);
}
// 初始化返回按钮/退出游戏按钮
function initBackBtn() {
obj.btnBack = new obj.lib.btnBack();
obj.btnBack.x = 40;
obj.btnBack.y = 80;
obj.btnBack.scaleX = 1.3;
obj.btnBack.scaleY = 1.3;
stage.addChild(obj.btnBack);
}

15
message.js

@ -0,0 +1,15 @@
function initMessage() {
window.parent.postMessage('created', '*');
window.addEventListener('message', function (event) {
try {
const data = JSON.parse(event.data);
// 消息格式: {type: 'data', data: { ... }}
if (data.type === 'data') {
console.log('game message: -->', data.data);
window.parentData = data.data;
}
} catch (error) {
// console.error(error);
}
})
}

BIN
pullRadish-v1.6.fla

Binary file not shown.

870
pullRadish-v1.6.js

@ -0,0 +1,870 @@
(function (cjs, an) {
var p; // shortcut to reference prototypes
var lib={};var ss={};var img={};
lib.ssMetadata = [
{name:"pullRadish_v1.6_atlas_1", frames: [[1026,309,400,99],[1428,309,400,99],[1882,517,124,46],[1026,0,435,307],[1795,410,29,29],[1987,165,53,53],[1618,410,88,89],[1695,501,73,67],[1708,410,85,89],[1933,418,91,97],[1428,410,93,92],[1523,410,93,92],[0,475,1024,350],[0,0,1024,473],[1770,523,108,31],[1428,504,112,30],[1830,323,101,126],[1900,165,85,156],[1900,0,120,163],[1933,323,104,93],[1463,0,435,307],[1026,410,400,99],[1795,451,85,70],[1618,501,75,75]]}
];
(lib.AnMovieClip = function(){
this.actionFrames = [];
this.ignorePause = false;
this.gotoAndPlay = function(positionOrLabel){
cjs.MovieClip.prototype.gotoAndPlay.call(this,positionOrLabel);
}
this.play = function(){
cjs.MovieClip.prototype.play.call(this);
}
this.gotoAndStop = function(positionOrLabel){
cjs.MovieClip.prototype.gotoAndStop.call(this,positionOrLabel);
}
this.stop = function(){
cjs.MovieClip.prototype.stop.call(this);
}
}).prototype = p = new cjs.MovieClip();
// symbols:
(lib.开始按钮 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(0);
}).prototype = p = new cjs.Sprite();
(lib.开始训练 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(1);
}).prototype = p = new cjs.Sprite();
(lib.分数 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(2);
}).prototype = p = new cjs.Sprite();
(lib.倒计时 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(3);
}).prototype = p = new cjs.Sprite();
(lib.B1 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(4);
}).prototype = p = new cjs.Sprite();
(lib.B2 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(5);
}).prototype = p = new cjs.Sprite();
(lib.B3 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(6);
}).prototype = p = new cjs.Sprite();
(lib.B4 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(7);
}).prototype = p = new cjs.Sprite();
(lib.B5 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(8);
}).prototype = p = new cjs.Sprite();
(lib.B6 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(9);
}).prototype = p = new cjs.Sprite();
(lib.B7 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(10);
}).prototype = p = new cjs.Sprite();
(lib.B8 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(11);
}).prototype = p = new cjs.Sprite();
(lib.bg_grassland = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(12);
}).prototype = p = new cjs.Sprite();
(lib.bg_ground = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(13);
}).prototype = p = new cjs.Sprite();
(lib.hole1 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(14);
}).prototype = p = new cjs.Sprite();
(lib.hole2 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(15);
}).prototype = p = new cjs.Sprite();
(lib.LB1 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(16);
}).prototype = p = new cjs.Sprite();
(lib.rabit1 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(17);
}).prototype = p = new cjs.Sprite();
(lib.rabit2 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(18);
}).prototype = p = new cjs.Sprite();
(lib.radish = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(19);
}).prototype = p = new cjs.Sprite();
(lib.任务完成 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(20);
}).prototype = p = new cjs.Sprite();
(lib.再来一次 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(21);
}).prototype = p = new cjs.Sprite();
(lib.计时 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(22);
}).prototype = p = new cjs.Sprite();
(lib.返回按钮 = function() {
this.initialize(ss["pullRadish_v1.6_atlas_1"]);
this.gotoAndStop(23);
}).prototype = p = new cjs.Sprite();
// helper functions:
function mc_symbol_clone() {
var clone = this._cloneProps(new this.constructor(this.mode, this.startPosition, this.loop, this.reversed));
clone.gotoAndStop(this.currentFrame);
clone.paused = this.paused;
clone.framerate = this.framerate;
return clone;
}
function getMCSymbolPrototype(symbol, nominalBounds, frameBounds) {
var prototype = cjs.extend(symbol, cjs.MovieClip);
prototype.clone = mc_symbol_clone;
prototype.nominalBounds = nominalBounds;
prototype.frameBounds = frameBounds;
return prototype;
}
(lib.timeBg = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
this.isSingleFrame = false;
// timeline functions:
this.frame_0 = function() {
if(this.isSingleFrame) {
return;
}
if(this.totalFrames == 1) {
this.isSingleFrame = true;
}
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(1));
// timeBg
this.instance = new lib.计时();
this.instance.setTransform(-60,-49,1.4118,1.4121);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.timeBg, new cjs.Rectangle(-60,-49,120,98.9), null);
(lib.scoreBg = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
this.isSingleFrame = false;
// timeline functions:
this.frame_0 = function() {
if(this.isSingleFrame) {
return;
}
if(this.totalFrames == 1) {
this.isSingleFrame = true;
}
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(1));
// scoreBg
this.instance = new lib.分数();
this.instance.setTransform(-62,-23);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.scoreBg, new cjs.Rectangle(-62,-23,124,46), null);
(lib.LB1_1 = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.LB1();
this.instance.setTransform(-50.5,-63);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.LB1_1, new cjs.Rectangle(-50.5,-63,101,126), null);
(lib.hole = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {hole_normal:0,hole_active:1};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// timeline functions:
this.frame_0 = function() {
this.stop();
}
this.frame_1 = function() {
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(1).call(this.frame_1).wait(1));
// Hole
this.instance = new lib.hole1();
this.instance_1 = new lib.hole2();
this.instance_1.setTransform(0,1);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance}]}).to({state:[{t:this.instance_1}]},1).wait(1));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(0,0,112,31);
(lib.补间3 = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.radish();
this.instance.setTransform(-52,-46.5);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-52,-46.5,104,93);
(lib.补间1 = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.rabit2();
this.instance.setTransform(-60,-81.5);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-60,-81.5,120,163);
(lib.bgModalEnd = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.任务完成();
this.instance.setTransform(-218,-154);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.bgModalEnd, new cjs.Rectangle(-218,-154,435,307), null);
(lib.btnBack = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.返回按钮();
this.instance.setTransform(0,-38);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.btnBack, new cjs.Rectangle(0,-38,75,75), null);
(lib.btnBegin = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.开始按钮();
this.instance.setTransform(-180,-50,0.9,1);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.btnBegin, new cjs.Rectangle(-180,-50,360,99), null);
(lib.bomb = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {bomb_start:0,bomb_end:8};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// timeline functions:
this.frame_8 = function() {
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).wait(8).call(this.frame_8).wait(1));
// bomb
this.instance = new lib.B1();
this.instance.setTransform(-15,-15);
this.instance_1 = new lib.B2();
this.instance_1.setTransform(-27,-27);
this.instance_2 = new lib.B3();
this.instance_2.setTransform(-44,-45);
this.instance_3 = new lib.B4();
this.instance_3.setTransform(-37,-34);
this.instance_4 = new lib.B5();
this.instance_4.setTransform(-43,-45);
this.instance_5 = new lib.B6();
this.instance_5.setTransform(-46,-49);
this.instance_6 = new lib.B7();
this.instance_6.setTransform(-47,-46);
this.instance_7 = new lib.B8();
this.instance_7.setTransform(-47,-46);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance}]}).to({state:[{t:this.instance_1}]},1).to({state:[{t:this.instance_2}]},1).to({state:[{t:this.instance_3}]},1).to({state:[{t:this.instance_4}]},1).to({state:[{t:this.instance_5}]},1).to({state:[{t:this.instance_6}]},1).to({state:[{t:this.instance_7}]},1).to({state:[]},1).wait(1));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-47,-49,93,97);
(lib.btnBeginTrain = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.开始训练();
this.instance.setTransform(-180,-50,0.9,1.0101);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.btnBeginTrain, new cjs.Rectangle(-180,-50,360,100), null);
(lib.bgModalBegin = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.倒计时();
this.instance.setTransform(-218,-154);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.bgModalBegin, new cjs.Rectangle(-218,-154,435,307), null);
(lib.btnAgain = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.再来一次();
this.instance.setTransform(-125,-35,0.625,0.707);
this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));
this._renderFirstFrame();
}).prototype = getMCSymbolPrototype(lib.btnAgain, new cjs.Rectangle(-125,-35,250,70), null);
(lib.radish_1 = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {radish_normal:0,radish_start:1,radish_fly_start:10,radish_bomb_start:12,"radish_fly_start":17,"radish_bomb_start":22,"radish_bomb_start":28,radish_bomb_end:36};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// timeline functions:
this.frame_0 = function() {
this.stop();
}
this.frame_36 = function() {
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(36).call(this.frame_36).wait(1));
// radish
this.instance = new lib.radish();
this.instance.setTransform(-52,-47);
this.instance_1 = new lib.补间3("synched",0);
this.instance_1.setTransform(0,-0.5);
this.instance_1._off = true;
this.instance_2 = new lib.LB1_1();
this.instance_2.setTransform(-1.55,-0.1,0.9306,0.9303,0,0,0,-0.1,-0.1);
this.instance_2.alpha = 0.5313;
this.instance_2._off = true;
this.instance_3 = new lib.B1();
this.instance_3.setTransform(-92,-89);
this.instance_3._off = true;
this.instance_4 = new lib.B2();
this.instance_4.setTransform(-104,-101);
this.instance_4._off = true;
this.instance_5 = new lib.B3();
this.instance_5.setTransform(-121,-119);
this.instance_5._off = true;
this.instance_6 = new lib.B4();
this.instance_6.setTransform(-114,-108);
this.instance_6._off = true;
this.instance_7 = new lib.B5();
this.instance_7.setTransform(-120,-119);
this.instance_7._off = true;
this.instance_8 = new lib.B6();
this.instance_8.setTransform(-123,-123);
this.instance_8._off = true;
this.instance_9 = new lib.B7();
this.instance_9.setTransform(-124,-120);
this.instance_9._off = true;
this.instance_10 = new lib.B8();
this.instance_10.setTransform(-124,-123);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance}]}).to({state:[{t:this.instance_1}]},1).to({state:[{t:this.instance_1}]},11).to({state:[{t:this.instance_1}]},11).to({state:[{t:this.instance_2}]},1).to({state:[{t:this.instance_2}]},3).to({state:[{t:this.instance_3}]},1).to({state:[{t:this.instance_4}]},1).to({state:[{t:this.instance_5}]},1).to({state:[{t:this.instance_6}]},1).to({state:[{t:this.instance_7}]},1).to({state:[{t:this.instance_8}]},1).to({state:[{t:this.instance_9}]},1).to({state:[{t:this.instance_10}]},1).to({state:[]},1).wait(1));
this.timeline.addTween(cjs.Tween.get(this.instance_1).wait(1).to({_off:false},0).to({scaleX:0.8654,scaleY:0.8651,y:-0.45},11).to({scaleX:1,scaleY:1,y:-0.5},11).to({_off:true,regX:-0.1,regY:-0.1,scaleX:0.9306,scaleY:0.9303,x:-1.55,y:-0.1,alpha:0.5313,mode:"independent"},1).wait(13));
this.timeline.addTween(cjs.Tween.get(this.instance_2).wait(23).to({_off:false},1).to({regX:0.1,scaleX:0.594,scaleY:0.594,rotation:-14.9986,x:-77.5,y:-75.05},3).to({_off:true,regX:0,regY:0,scaleX:1,scaleY:1,rotation:0,x:-92,y:-89,alpha:1},1).wait(9));
this.timeline.addTween(cjs.Tween.get(this.instance_3).wait(27).to({_off:false},1).to({_off:true,x:-104,y:-101},1).wait(8));
this.timeline.addTween(cjs.Tween.get(this.instance_4).wait(28).to({_off:false},1).to({_off:true,x:-121,y:-119},1).wait(7));
this.timeline.addTween(cjs.Tween.get(this.instance_5).wait(29).to({_off:false},1).to({_off:true,x:-114,y:-108},1).wait(6));
this.timeline.addTween(cjs.Tween.get(this.instance_6).wait(30).to({_off:false},1).to({_off:true,x:-120,y:-119},1).wait(5));
this.timeline.addTween(cjs.Tween.get(this.instance_7).wait(31).to({_off:false},1).to({_off:true,x:-123,y:-123},1).wait(4));
this.timeline.addTween(cjs.Tween.get(this.instance_8).wait(32).to({_off:false},1).to({_off:true,x:-124,y:-120},1).wait(3));
this.timeline.addTween(cjs.Tween.get(this.instance_9).wait(33).to({_off:false},1).to({_off:true,y:-123},1).wait(2));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-124,-123,176,181.6);
(lib.rabbitCell = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = true; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {rabbit_normal:0,rabbit_start:1,rabbit_end:31};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// timeline functions:
this.frame_0 = function() {
this.stop();
}
this.frame_31 = function() {
this.stop();
}
// actions tween:
this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(31).call(this.frame_31).wait(1));
// rabit
this.instance = new lib.rabit1();
this.instance.setTransform(-43,-78);
this.instance_1 = new lib.补间1("synched",0);
this.instance_1._off = true;
this.instance_2 = new lib.B2();
this.instance_2.setTransform(-27,-27);
this.instance_2._off = true;
this.instance_3 = new lib.B3();
this.instance_3.setTransform(-44,-45);
this.instance_3._off = true;
this.instance_4 = new lib.B4();
this.instance_4.setTransform(-37,-34);
this.instance_4._off = true;
this.instance_5 = new lib.B5();
this.instance_5.setTransform(-43,-45);
this.instance_5._off = true;
this.instance_6 = new lib.B6();
this.instance_6.setTransform(-46,-49);
this.instance_6._off = true;
this.instance_7 = new lib.B7();
this.instance_7.setTransform(-47,-46);
this.instance_7._off = true;
this.instance_8 = new lib.B8();
this.instance_8.setTransform(-47,-46);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance}]}).to({state:[{t:this.instance_1}]},1).to({state:[{t:this.instance_1}]},11).to({state:[{t:this.instance_1}]},11).to({state:[{t:this.instance_2}]},1).to({state:[{t:this.instance_3}]},1).to({state:[{t:this.instance_4}]},1).to({state:[{t:this.instance_5}]},1).to({state:[{t:this.instance_6}]},1).to({state:[{t:this.instance_7}]},1).to({state:[{t:this.instance_8}]},1).to({state:[]},1).wait(1));
this.timeline.addTween(cjs.Tween.get(this.instance_1).wait(1).to({_off:false},0).to({scaleX:0.9167,scaleY:0.9166},11).to({scaleX:1,scaleY:1},11).to({_off:true,x:-27,y:-27},1).wait(8));
this.timeline.addTween(cjs.Tween.get(this.instance_2).wait(23).to({_off:false},1).to({_off:true,x:-44,y:-45},1).wait(7));
this.timeline.addTween(cjs.Tween.get(this.instance_3).wait(24).to({_off:false},1).to({_off:true,x:-37,y:-34},1).wait(6));
this.timeline.addTween(cjs.Tween.get(this.instance_4).wait(25).to({_off:false},1).to({_off:true,x:-43,y:-45},1).wait(5));
this.timeline.addTween(cjs.Tween.get(this.instance_5).wait(26).to({_off:false},1).to({_off:true,x:-46,y:-49},1).wait(4));
this.timeline.addTween(cjs.Tween.get(this.instance_6).wait(27).to({_off:false},1).to({_off:true,x:-47,y:-46},1).wait(3));
this.timeline.addTween(cjs.Tween.get(this.instance_7).wait(28).to({_off:false},1).to({_off:true},1).wait(2));
this._renderFirstFrame();
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-60,-81.5,120,163);
// stage content:
(lib.pullRadishv16 = function(mode,startPosition,loop,reversed) {
if (loop == null) { loop = false; }
if (reversed == null) { reversed = false; }
var props = new Object();
props.mode = mode;
props.startPosition = startPosition;
props.labels = {bgm:0};
props.loop = loop;
props.reversed = reversed;
cjs.MovieClip.apply(this,[props]);
// 图层_1
this.instance = new lib.bg_ground();
this.instance.setTransform(0.5,214,1,1.1733);
this.instance_1 = new lib.bg_grassland();
this.instance_1.setTransform(0.5,-73);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));
this._renderFirstFrame();
}).prototype = p = new lib.AnMovieClip();
p.nominalBounds = new cjs.Rectangle(512.5,311,512,458);
// library properties:
lib.properties = {
id: '94CA090E719F4688AE0D01901C9EA0D7',
width: 1024,
height: 768,
fps: 24,
color: "#F5F5F5",
opacity: 0.00,
manifest: [
{src:"images/pullRadish_v1.6_atlas_1.png", id:"pullRadish_v1.6_atlas_1"},
{src:"sounds/excitationMusic.mp3", id:"excitationMusic"}
],
preloads: []
};
// bootstrap callback support:
(lib.Stage = function(canvas) {
createjs.Stage.call(this, canvas);
}).prototype = p = new createjs.Stage();
p.setAutoPlay = function(autoPlay) {
this.tickEnabled = autoPlay;
}
p.play = function() { this.tickEnabled = true; this.getChildAt(0).gotoAndPlay(this.getTimelinePosition()) }
p.stop = function(ms) { if(ms) this.seek(ms); this.tickEnabled = false; }
p.seek = function(ms) { this.tickEnabled = true; this.getChildAt(0).gotoAndStop(lib.properties.fps * ms / 1000); }
p.getDuration = function() { return this.getChildAt(0).totalFrames / lib.properties.fps * 1000; }
p.getTimelinePosition = function() { return this.getChildAt(0).currentFrame / lib.properties.fps * 1000; }
an.bootcompsLoaded = an.bootcompsLoaded || [];
if(!an.bootstrapListeners) {
an.bootstrapListeners=[];
}
an.bootstrapCallback=function(fnCallback) {
an.bootstrapListeners.push(fnCallback);
if(an.bootcompsLoaded.length > 0) {
for(var i=0; i<an.bootcompsLoaded.length; ++i) {
fnCallback(an.bootcompsLoaded[i]);
}
}
};
an.compositions = an.compositions || {};
an.compositions['94CA090E719F4688AE0D01901C9EA0D7'] = {
getStage: function() { return exportRoot.stage; },
getLibrary: function() { return lib; },
getSpriteSheet: function() { return ss; },
getImages: function() { return img; }
};
an.compositionLoaded = function(id) {
an.bootcompsLoaded.push(id);
for(var j=0; j<an.bootstrapListeners.length; j++) {
an.bootstrapListeners[j](id);
}
}
an.getComposition = function(id) {
return an.compositions[id];
}
an.makeResponsive = function(isResp, respDim, isScale, scaleType, domContainers) {
var lastW, lastH, lastS=1;
window.addEventListener('resize', resizeCanvas);
resizeCanvas();
function resizeCanvas() {
var w = lib.properties.width, h = lib.properties.height;
var iw = window.innerWidth, ih=window.innerHeight;
var pRatio = window.devicePixelRatio || 1, xRatio=iw/w, yRatio=ih/h, sRatio=1;
if(isResp) {
if((respDim=='width'&&lastW==iw) || (respDim=='height'&&lastH==ih)) {
sRatio = lastS;
}
else if(!isScale) {
if(iw<w || ih<h)
sRatio = Math.min(xRatio, yRatio);
}
else if(scaleType==1) {
sRatio = Math.min(xRatio, yRatio);
}
else if(scaleType==2) {
sRatio = Math.max(xRatio, yRatio);
}
}
domContainers[0].width = w * pRatio * sRatio;
domContainers[0].height = h * pRatio * sRatio;
domContainers.forEach(function(container) {
container.style.width = w * sRatio + 'px';
container.style.height = h * sRatio + 'px';
});
stage.scaleX = pRatio*sRatio;
stage.scaleY = pRatio*sRatio;
lastW = iw; lastH = ih; lastS = sRatio;
stage.tickOnUpdate = false;
stage.update();
stage.tickOnUpdate = true;
}
}
an.handleSoundStreamOnTick = function(event) {
if(!event.paused){
var stageChild = stage.getChildAt(0);
if(!stageChild.paused || stageChild.ignorePause){
stageChild.syncStreamSounds();
}
}
}
})(createjs = createjs||{}, AdobeAn = AdobeAn||{});
var createjs, AdobeAn;

148
socket.js

@ -0,0 +1,148 @@
let connected = false; // socket 是否连接
let socket = null; // websocket 实例
let lockSocket = false;
let socketMsgQueue = []; // socket消息队列
let prevTimestamp = 0; // 上次收到消息的时间戳
let sendHeartTimer = null; // 💓的timer计时器
let ws = null;
initSocket();
function initSocket() {
if (lockSocket) return;
lockSocket = true;
ws = new WebSocket('wss://www.tall.wiki/websocket/recovery/recovery/ws');
ws.onopen = onOpen;
ws.onmessage = onMessage;
ws.onclose = onClose;
lockSocket = false;
}
// ws 打开
function onOpen(event) {
connected = true;
prevTimestamp = Date.now();
auth(); // 认证
for (let i = 0; i < socketMsgQueue.length; i += 1) {
send(socketMsgQueue[i]);
}
socketMsgQueue = [];
}
// ws收到消息
function onMessage(res) {
try {
prevTimestamp = Date.now();
// console.warn('message: ', res, new Date().toLocaleString());
if (res && res.data && JSON.parse(res.data)) {
const resData = JSON.parse(res.data);
const { messageSet, ackId } = resData;
// 处理消息体对象
messageSet.forEach(item => handleMessagesData(item));
// console.log('ackId', ackId);
// 有ackId 发送ack
ackId && send({ type: 'Ack', data: { ackId } });
}
} catch (error) {
console.error(error);
}
}
/**
* 处理收到的消息内容
* @param {object} item 单个消息体对象
*/
function handleMessagesData(item) {
const data = JSON.parse(item.data);
switch (data.type) {
case 'ChannelStatus': // 认证消息
handleAuthMessage(data);
break;
case 'feedback': // 收到拔萝卜的动作反馈
console.log('score', data.data.score)
data.data && data.data.result === 1 && handlePull(data.data.times);
onScoreMessage(data.data.score, data.data.times);
break;
case 'startDrill': // 开始训练游戏
console.log(data.data);
window.gameInfo = data.data;
initBeginCount();
break;
case 'countdown':
onCountdownMessage();
break;
case 'score':
onScoreMessage(data.data.score, data.data.times);
break;
default:
break;
}
}
// ws 关闭
function onClose(event) {
connected = false;
if (sendHeartTimer) clearInterval(sendHeartTimer);
// console.warn('close:', connected, new Date().toLocaleString());
if (!event || event.code !== 1005) {
socket.close();
}
setTimeout(() => {
// connected 在这里的作用是:
// 在发生重连 但是还没连上之前 不要再次重连
initSocket();
}, 300);
}
/**
* 发送消息
* @param data
*/
function send(data) {
if (connected) {
if (ws.readyState === 1) {
ws.send(JSON.stringify({ toDomain: 'Server', data: JSON.stringify(data) }));
}
} else {
socketMsgQueue.push(data);
}
}
// 认证消息
function auth() {
// TODO: userId拿父框架传递过来的
const data = { type: 'Auth', data: { userId: '1399952569681448962' } };
send(data);
}
// 心跳检测
function sendHeart() {
if (sendHeartTimer) clearInterval(sendHeartTimer);
sendHeartTimer = setInterval(() => {
if (Date.now() - prevTimestamp >= 15000) {
send({ type: 'Ping' });
if (Date.now() - prevTimestamp > 20000) {
// console.warn('手动断开');
ws.close();
}
}
}, 5000);
}
/**
* 处理auth认证返回的ChannelStatus消息
* @param {object} data 消息内容对象
*/
function handleAuthMessage(data) {
if (data.data.authed) {
// 认证成功
sendHeart();
} else {
console.error('消息系统认证失败');
// 清除掉本地无用的token
ws = null;
}
}

BIN
sounds/amazing.mp3

Binary file not shown.

BIN
sounds/bgmMusic.mp3

Binary file not shown.

BIN
sounds/excitationMusic.mp3

Binary file not shown.

BIN
sounds/unbelievable.mp3

Binary file not shown.
Loading…
Cancel
Save