Commit f7592cc1 authored by Tt's avatar Tt

空格文字支持

parent ca481740
No preview for this file type
This diff is collapsed.
...@@ -3,6 +3,8 @@ import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent_hy04_pinc ...@@ -3,6 +3,8 @@ import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent_hy04_pinc
import pg from "./pg_hy04_pinci"; import pg from "./pg_hy04_pinci";
import ImgVoice from "../common/script/ImgVoice_hy04_pinci"; import ImgVoice from "../common/script/ImgVoice_hy04_pinci";
import Candy from "./hy01_candy_hy04_pinci"; import Candy from "./hy01_candy_hy04_pinci";
// 空格问题
// 尺寸大小问题
const { ccclass, property } = cc._decorator; const { ccclass, property } = cc._decorator;
enum WORD_TYPE { enum WORD_TYPE {
...@@ -12,20 +14,25 @@ enum WORD_TYPE { ...@@ -12,20 +14,25 @@ enum WORD_TYPE {
@ccclass @ccclass
export default class SceneComponent extends MyCocosSceneComponent { export default class SceneComponent extends MyCocosSceneComponent {
addPreloadImage() { addPreloadImage() {
// TODO 根据自己的配置预加载图片资源 // // TODO 根据自己的配置预加载图片资源
this._imageResList.push({ url: this.data.pic_url }); // this._imageResList.push({ url: this.data.pic_url });
this._imageResList.push({ url: this.data.pic_url_2 }); // this._imageResList.push({ url: this.data.pic_url_2 });
} }
addPreloadAudio() { addPreloadAudio() {
// TODO 根据自己的配置预加载音频资源 // TODO 根据自己的配置预加载音频资源
let data = this.data; let audios = [];
let arr = []; function checkAudio(obj) {
arr.push(data.npcAudio); for (let idx in obj) {
data.questions.forEach(question => { if (typeof obj[idx] == "object") {
arr.push(question.audio) checkAudio(obj[idx]);
}) } else if (typeof obj[idx] == "string") {
this._audioResList = this._animaResList.concat(arr); if (obj[idx].indexOf(".mp3") > -1) audios.push(obj[idx]);
}
}
}
checkAudio(this.data)
this._audioResList = audios;
} }
addPreloadAnima() { addPreloadAnima() {
...@@ -121,10 +128,21 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -121,10 +128,21 @@ export default class SceneComponent extends MyCocosSceneComponent {
this.showWord(); this.showWord();
} }
gameOver() { gameOver() {
pg.event.once('layer_ending_touch_replay', () => { this.onDestroy();
this.replay(); const middleLayer = cc.find('middleLayer');
}) if (!middleLayer) return;
pg.event.emit('layer_ending_show', { coin: this.wordDataList.length * 3 }) const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (!middleLayerComponent) return;
const { index, length } = middleLayerComponent.getPageInfo(); // 返回 length:有多少页; index: 当前第几页(从0开始)
if (index == length - 1) {
middleLayerComponent.goNextCross(); // 跳转到下一关卡
} else {
middleLayerComponent.goNextPage(); // 跳转到下一页
}
// pg.event.once('layer_ending_touch_replay', () => {
// this.replay();
// })
// pg.event.emit('layer_ending_show', { coin: this.wordDataList.length * 3 })
} }
private wordBgList: Array<cc.Node>; private wordBgList: Array<cc.Node>;
...@@ -184,6 +202,7 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -184,6 +202,7 @@ export default class SceneComponent extends MyCocosSceneComponent {
initQuestion() { initQuestion() {
this.layer_question = pg.view.find(this, 'layer_question'); this.layer_question = pg.view.find(this, 'layer_question');
let img = pg.view.find(this.layer_question, 'img'); let img = pg.view.find(this.layer_question, 'img');
img.active = true;
pg.view.setNetImg(img, this.CurrentWord.img, { w: 230, h: 230 }) pg.view.setNetImg(img, this.CurrentWord.img, { w: 230, h: 230 })
let img_voice = pg.view.find(this.layer_question, 'img_voice'); let img_voice = pg.view.find(this.layer_question, 'img_voice');
...@@ -218,16 +237,26 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -218,16 +237,26 @@ export default class SceneComponent extends MyCocosSceneComponent {
initWordBg() { initWordBg() {
let ansArr = this.CurrentWord.answerArr; let ansArr = this.CurrentWord.answerArr;
let count = -1; let count = -1;
// 长度大于一需要做拆分
let scale = 1;
// let allWord = "";
// ansArr.forEach(ar => {
// allWord += ar.text
// })
// if (allWord.length > 1) {
// scale = 1 - (allWord.length - 1) * 0.1;
// }
ansArr.forEach((ansObj, i) => { ansArr.forEach((ansObj, i) => {
let ans = ansObj.text; let ans = ansObj.text;
let group = ansObj.group; let group = ansObj.group;
// 长度大于一需要做拆分 // 长度大于一需要做拆分
let ansStrArr = ans.split(''); let ansStrArr = ans.split('');
ansStrArr.forEach((str, m) => { ansStrArr.forEach((str, m) => {
count++; count++;
let child = this.getWordBgNodeByStr(str); let child = this.getWordBgNodeByStr(str, scale);
child.data = { count: count, group: group, index: m } child.data = { count: count, group: group, index: m, value: str }
this.successGroupIds[`${i}`] = false; this.successGroupIds[`${i}`] = !str.trim();
let pos = this.getWordBgPosByAns(ansArr.map(ans => ans.text), [str], child.data) let pos = this.getWordBgPosByAns(ansArr.map(ans => ans.text), [str], child.data)
child.x = pos.x; child.x = pos.x;
child.y = pos.y; child.y = pos.y;
...@@ -238,10 +267,23 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -238,10 +267,23 @@ export default class SceneComponent extends MyCocosSceneComponent {
} }
initWord() { initWord() {
let ansArr = this.CurrentWord.answerRand; let ansArr = this.CurrentWord.answerRand;
ansArr = ansArr.filter(ans => !!ans.text.trim());
let itemPrefab = pg.view.find(this.layer_word, 'item'); let itemPrefab = pg.view.find(this.layer_word, 'item');
let count = -1; let count = -1;
// 长度大于一需要做拆分
let scale = 1;
// let allWord = "";
// ansArr.forEach(ar => {
// allWord += ar.text
// })
// if (allWord.length > 5) {
// scale = 1 - (allWord.length - 5) * 0.1;
// }
ansArr.forEach((ansObj) => { ansArr.forEach((ansObj) => {
let ans = ansObj.text; let ans = ansObj.text;
ans = ans.trim();
let group = ansObj.group; let group = ansObj.group;
let ansStrArr = ans.split(''); let ansStrArr = ans.split('');
// 利用单一节点存储多字母 // 利用单一节点存储多字母
...@@ -257,13 +299,11 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -257,13 +299,11 @@ export default class SceneComponent extends MyCocosSceneComponent {
itemClone.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this); itemClone.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
itemClone.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this); itemClone.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
itemClone.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this); itemClone.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
// 长度大于一需要做拆分
let arr = []; let arr = [];
ansStrArr.forEach((str, m) => { ansStrArr.forEach((str, m) => {
count++; count++;
let child = this.getWordNodeByStr(str); let child = this.getWordNodeByStr(str, scale);
child.data = { group: group, index: m, count: count }; child.data = { group: group, index: m, count: count, value: str };
let pos = this.getWordPosByAns(ansArr.map(ans => ans.text), [str], child.data); let pos = this.getWordPosByAns(ansArr.map(ans => ans.text), [str], child.data);
child.x = pos.x; child.x = pos.x;
child.y = pos.y; child.y = pos.y;
...@@ -357,35 +397,43 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -357,35 +397,43 @@ export default class SceneComponent extends MyCocosSceneComponent {
} }
getWordNodeWidth(type, str) { getWordNodeWidth(type, str) {
str = str.trim();
// if (!str) return 0;
const reg = /^[A-Z]+$/; const reg = /^[A-Z]+$/;
const lower = str.toLowerCase() const lower = str.toLowerCase()
if (type === WORD_TYPE.TOUCH) { if (type === WORD_TYPE.TOUCH) {
let prefabNode = reg.test(str) ? pg.view.find(this.upper_word, `${lower}2`) : pg.view.find(this.lower_word, `${lower}`) let prefabNode = reg.test(str) ? pg.view.find(this.upper_word, `${lower}2`) : pg.view.find(this.lower_word, `${lower}1`)
return prefabNode.width + 20; return prefabNode.width + 20;
} else { } else {
let prefabNode = reg.test(str) ? pg.view.find(this.upper_shadow, `${lower}2_di`) : pg.view.find(this.lower_shadow, `${lower}_di`); let prefabNode = reg.test(str) ? pg.view.find(this.upper_shadow, `${lower}2_di`) : pg.view.find(this.lower_shadow, `${lower}_di`);
return prefabNode.width + 30; return prefabNode.width + 30;
} }
} }
getWordNodeByStr(str) { getWordNodeByStr(str, scale) {
str = str.trim();
const reg = /^[A-Z]+$/; const reg = /^[A-Z]+$/;
const lower = str.toLowerCase() const lower = str.toLowerCase()
let wordNode = pg.view.find(this.layer_word, 'word'); let wordNode = pg.view.find(this.layer_word, 'word');
let item = pg.view.clone(wordNode); let item = pg.view.clone(wordNode);
let prefabNode = reg.test(str) ? pg.view.find(this.upper_word, `${lower}2`) : pg.view.find(this.lower_word, `${lower}`) let prefabNode = reg.test(str) ? pg.view.find(this.upper_word, `${lower}2`) : pg.view.find(this.lower_word, `${lower}1`)
let child = pg.view.clone(prefabNode) let child = pg.view.clone(prefabNode)
child.x = 0; child.x = 0;
child.y = 0; child.y = 0;
child.width *= scale;
child.height *= scale;
child.active = true; child.active = true;
let width = this.getItemWordWidth(WORD_TYPE.TOUCH, [str]) let width = this.getItemWordWidth(WORD_TYPE.TOUCH, [str])
item.x = 0; item.x = 0;
item.y = 0; item.y = 0;
item.width = width; item.width = width;
item.width *= scale;
item.height *= scale;
item.active = true; item.active = true;
item.getChildByName("icon").addChild(child); item.getChildByName("icon").addChild(child);
return item; return item;
} }
getWordBgNodeByStr(str) { getWordBgNodeByStr(str, scale) {
str = str.trim();
const reg = /^[A-Z]+$/; const reg = /^[A-Z]+$/;
const lower = str.toLowerCase() const lower = str.toLowerCase()
let prefabNode = reg.test(str) ? pg.view.find(this.upper_shadow, `${lower}2_di`) : pg.view.find(this.lower_shadow, `${lower}_di`); let prefabNode = reg.test(str) ? pg.view.find(this.upper_shadow, `${lower}2_di`) : pg.view.find(this.lower_shadow, `${lower}_di`);
...@@ -394,6 +442,8 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -394,6 +442,8 @@ export default class SceneComponent extends MyCocosSceneComponent {
child.active = true child.active = true
child.x = 0; child.x = 0;
child.y = 0; child.y = 0;
child.width *= scale;
child.height *= scale;
return child; return child;
} }
getWordBgByGroup(group) { getWordBgByGroup(group) {
...@@ -457,8 +507,19 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -457,8 +507,19 @@ export default class SceneComponent extends MyCocosSceneComponent {
this.currentItem = null; this.currentItem = null;
// 跟字母区域进行碰撞检测 // 跟字母区域进行碰撞检测
let groupId = this.collider(node); let groupId = this.collider(node);
let colliderList = this.getWordBgByGroup(groupId);
let colliderStr = '';
if (colliderList) {
colliderList.forEach(nd => {
colliderStr += nd.data.value;
})
}
let str = "";
node.data.forEach(nd => {
str += nd.data.value;
})
// 获取当前待碰撞区域 // 获取当前待碰撞区域
if ((groupId || groupId == 0) && node.data[0].data.group == groupId) { if ((groupId || groupId == 0) && !this.successGroupIds[`${groupId}`] && (node.data[0].data.group == groupId || str == colliderStr)) {
console.log(groupId) console.log(groupId)
// 正确了 需要处理效果 // 正确了 需要处理效果
pg.audio.playLocalAudio(pg.view.find(this.res_audio, "right")) pg.audio.playLocalAudio(pg.view.find(this.res_audio, "right"))
......
...@@ -10,28 +10,28 @@ export const defaultData = ...@@ -10,28 +10,28 @@ export const defaultData =
"questionAudio": "", "questionAudio": "",
"duration": 120, "duration": 120,
"type": "img", "type": "img",
"image": "http://staging-teach.cdn.ireadabc.com/e184e067fc931d55fce93c9937a26c51.png", "image": "",//http://staging-teach.cdn.ireadabc.com/e184e067fc931d55fce93c9937a26c51.png
"audio": "", "audio": "",
"text": "", "text": "",
"right": false, "right": false,
"letterList": [ "letterList": [
{ {
"text": "m" "text": "g"
}, },
{ {
"text": "o" "text": "et"
}, },
{ {
"text": "n" "text": " "
}, },
{ {
"text": "k" "text": "s"
}, },
{ {
"text": "e" "text": "tu"
}, },
{ {
"text": "y" "text": "ck"
} }
] ]
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment