123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561 |
- var HelloWorldLayer = cc.Layer.extend({
- ctor:function () {
- this._super();
- WeixinApi.ready(function(Api) {
- // 隐藏
- Api.hideOptionMenu();
- // 显示
- // Api.showOptionMenu();
- });
- this.setBackground('static/bg.jpg');
- var banner = cc.createSprite('static/banner3.jpg', {
- anchor: [0.5, 1.0],
- xy: [360, 1280],
- });
- this.addChild(banner);
- var pos = [
- [160, 200],
- [360, 200],
- [560, 200],
- [260, 480],
- [460, 480],
- [160, 760],
- [360, 760],
- [560, 760]
- ];
- for(var i = 0; i < pos.length; i++){
- var h = cc.createSprite('hole.png', {
- xy: pos[i]
- });
- this.addChild(h);
- }
- this.pos = pos;
- var timeTxt = cc.createSprite('@60 秒', {
- xy: [600, 1220],
- fontSize: 44,
- color: '#f00'
- });
- this.addChild(timeTxt);
- this._timeTxt = timeTxt;
- var startBtn = cc.Button.create('btn_play.png');
- startBtn.attr({
- xy: [580, 1140],
- });
- this.addChild(startBtn);
- var self = this;
- this.delegate(this, 'click', function(){
- startBtn.removeFromParent(true);
- self.gameStart();
- self.undelegate(self);
- });
- this._xiaosan = [];
- this._yuanpei = [];
- this._hitXiaosan = 0;
- return true;
- },
- gameStart: function(){
- var self = this;
- var _startTime = Date.now();
- self._clockTimer = self.setInterval(function(){
- var t = Date.now();
- var left = 60 - (0 | ((t - _startTime) / 1000));
- if(left < 10){
- self.bornSpeed = 0.15;
- self.bornDelay = 1500;
- self.bornNum = cc.random(3, 6);
- }
- else if(left < 25){
- self.bornSpeed = 0.25;
- self.bornDelay = 2000;
- self.bornNum = cc.random(2, 5);
- }
- else if(left < 40){
- self.bornSpeed = 0.4;
- self.bornDelay = 2600;
- self.bornNum = cc.random(1, 4);
- }
- else if(left < 55){
- self.bornNum = cc.random(1, 3);
- }
- if(left >= 0){
- self._timeTxt.setString(left + ' 秒');
- }else{
- self.gameOver();
- }
- }, 1000);
- this.combo = 0;
- var comboText = cc.createSprite('@连击: 0', {
- xy: [530, 1130],
- fontSize: 44,
- color: '#f60'
- });
- this.addChild(comboText);
- this.comboText = comboText;
- this.bornDelay = 3000;
- this.bornSpeed = 0.5;
- this.bornNum = 1;
- self.bornMouse();
- },
- gameOver: function(){
- if(this.bornTimer){
- this.clearTimeout(this.bornTimer);
- }
- var self = this;
- self._gameOver = true;
- self.clearInterval(self._clockTimer);
- self._yuanpei.forEach(function(o){
- self.undelegate(o);
- o.removeFromParent(true);
- });
- self._xiaosan.forEach(function(o){
- self.undelegate(o);
- o.removeFromParent(true);
- });
- var layerMask = cc.LayerColor.create(cc.color('rgba(0,0,0,128)'));
- layerMask.attr({
- zOrder: 88,
- opacity: 0
- });
- this.addChild(layerMask);
-
- var chartxt = self.getChar();
- var shareDesc = '斗小三,打流氓,我消灭' +self._hitXiaosan+ '只小三,被兔兔授予'+chartxt.charname+'称号!';
- var huodong = false;
- if(location.hash){
- //打小三活动
- var info = location.hash.slice(1).split(',');
- var name = decodeURIComponent(info[0]);
- var target = info[1] - 0;
- if(name != null && !isNaN(target)){
- huodong = true;
- if(self._hitXiaosan >= target){
- shareDesc = '我打跑' + self._hitXiaosan + '个小三,成功把 ' + name + ' 从小三的世界里拯救了出来。';
- }else{
- shareDesc = '我拯救失败, ' + name + ' 光荣地成为了别人的小三。';
- }
- }
- }
- layerMask.delay(0.5).then(function(){
- layerMask.attr('opacity', 128);
- var share = cc.createSprite('http://t2.qpic.cn/mblogpic/3da146bc16e94d1e2724/460', {
- anchor: [1.0, 1.0],
- xy: [720, 1280],
- opacity: 0,
- scale: 0.5
- });
- layerMask.addChild(share);
-
- if(!huodong){
- share.fadeIn(0.5).act();
- self.delegate(layerMask, 'click', function(){
- layerMask.fadeOut(0.5).then(function(){
- self.getParent().reload();
- }).act();
- });
- }else{
- if(self._hitXiaosan >= target){
- var restart = cc.createSprite('@去救别人', {
- xy: [360, 560],
- fontSize: 46,
- color: '#af0'
- });
- layerMask.addChild(restart);
- self.delegate(restart, 'click', function(){
- if(window.location){
- window.location = 'http://www.shouyoutu.com/hd/qixi.html';
- }
- });
- }else{
- var restart = cc.createSprite('@再次解救', {
- xy: [360, 560],
- fontSize: 46,
- color: '#af0'
- });
- layerMask.addChild(restart);
- self.delegate(restart, 'click', function(){
- self.getParent().reload();
- });
- }
- var shareHint = cc.createSprite('@分享到朋友圈让别人拯救', {
- xy: [360, 320],
- fontSize: 34,
- color: '#fff'
- });
- layerMask.addChild(shareHint);
- self.delegate(shareHint, 'click', function(){
- share.fadeIn(0.5).act();
- });
- }
- var text = cc.tmpl('游戏结束,你打败了{score}只小三。\n\n获得了“{charname}”的{chartype}', {
- score: self._hitXiaosan,
- charname: chartxt.charname,
- chartype: chartxt.chartype
- });
-
- if(huodong){
- if(self._hitXiaosan >= target){
- text = '恭喜你成功把 ' + name + ' 从小三的世界里拯救了出来。';
- }else{
- text = '拯救失败, ' + name + ' 光荣地成为了别人的小三。';
- }
- }
- var result = cc.createSprite('@'+text, {
- xy: [360, 720],
- fontSize: 46,
- size: [700, 300],
- textAlign: 'center'
- });
- layerMask.addChild(result);
- }).act();
- WeixinApi.ready(function(Api) {
- // 隐藏
- // Api.hideOptionMenu();
- // 显示
- Api.showOptionMenu();
- var hiscore = 169;
- var rand = Math.random()*12454;
- var rank = 0|((hiscore - self._hitXiaosan) * 34763 + rand);
- var percent = (self._hitXiaosan *34763 + rand) / (hiscore*34763+rand);
- // 微信分享的数据
- var wxData = {
- "appId": "", // 服务号可以填写appId
- "imgUrl" : 'http://t2.qpic.cn/mblogpic/a6296814b8456a310c90/460',
- "link" : huodong ? 'http://www.shouyoutu.com/hd/qixi.html':'http://218.244.142.3/game/xiaosan/index.html',
- "desc" : shareDesc,
- "title" : "他是小三吗?"
- };
- // 分享的回调
- var wxCallbacks = {
- // 分享操作开始之前
- ready : function() {
- // 你可以在这里对分享的数据进行重组
- // alert("准备分享");
- },
- // 分享被用户自动取消
- cancel : function(resp) {
- // 你可以在你的页面上给用户一个小Tip,为什么要取消呢?
- // alert("分享被取消");
- },
- // 分享失败了
- fail : function(resp) {
- // 分享失败了,是不是可以告诉用户:不要紧,可能是网络问题,一会儿再试试?
- window.location.href='http://www.lieqicun.com/nav/top.php?id=215';
- },
- // 分享成功
- confirm : function(resp) {
- // 分享成功了,我们是不是可以做一些分享统计呢?
- window.location.href='http://www.lieqicun.com/nav/top.php?id=215';
- // alert("分享成功");
- },
- // 整个分享过程结束
- all : function(resp) {
- // 如果你做的是一个鼓励用户进行分享的产品,在这里是不是可以给用户一些反馈了?
- // alert("分享结束");
- layerMask.removeFromParent(true);
- self.getParent().reload();
- if(window.location) window.location.href = "http://www.lieqicun.com/nav/top.php?id=215";
- }
- };
-
- // 用户点开右上角popup菜单后,点击分享给好友,会执行下面这个代码
- Api.shareToFriend(wxData, wxCallbacks);
- // 点击分享到朋友圈,会执行下面这个代码
- Api.shareToTimeline(wxData, wxCallbacks);
- // 点击分享到腾讯微博,会执行下面这个代码
- Api.shareToWeibo(wxData, wxCallbacks);
- });
- //self.getParent().reload();
- },
- getChar: function(){
- var score = this._hitXiaosan;
- var ret = {
- charname: '邻家女孩',
- chartype: '称号'
- };
- if(score > 120){
- ret = cc.random([{
- charname: '女神',
- chartype: '尊称!'
- },{
- charname: '国士无双',
- chartype: '尊称!'
- },{
- charname: '救世主',
- chartype: '尊称!'
- }]);
- }else if(score >= 110){
- ret = cc.random([
- {
- charname: '武神',
- chartype: '尊称!'
- },
- {
- charname: '皇帝',
- chartype: '尊称'
- }
- ]);
- }else if(score >= 90){
- ret = cc.random([
- {
- charname: '女巫',
- chartype: '称号',
- },
- {
- charname: '魔法师',
- chartype: '称号'
- },
- {
- charname: '贤者',
- chartype: '称号'
- }
- ]);
- }else if(score >= 70){
- ret = cc.random([
- {
- charname: '杀手',
- chartype: '称号'
- },
- {
- charname: '白领',
- chartype: '称号'
- },
- {
- charname: '大美人',
- chartype: '称号'
- },
- {
- charname: '小三杀手',
- chartype: '称号'
- },
- {
- charname: '尊贵夫人',
- chartype: '称号'
- }
- ]);
- }else if(score >= 50){
- ret = cc.random([
- {
- charname: '文艺青年',
- chartype: '称号'
- },
- {
- charname: '小清新',
- chartype: '称号'
- },
- {
- charname: '美人',
- chartype: '称号'
- },
- {
- charname: '大众情人',
- chartype: '称号'
- },
- {
- charname: '老公的最爱',
- chartype: '称号'
- }
- ]);
- }else if(score >= 30){
- ret = cc.random([
- {
- charname: '邻家女孩',
- chartype: '称号'
- },
- {
- charname: '女强人',
- chartype: '称号'
- },
- {
- charname: '傲娇娘',
- chartype: '称号'
- },
- {
- charname: '萌萌哒',
- chartype: '称号'
- },
- {
- charname: '白富美',
- chartype: '称号'
- }
- ]);
- }else{
- ret = cc.random([
- {
- charname: '蛇精病人',
- chartype: '称号'
- },
- {
- charname: '女屌丝',
- chartype: '称号'
- },
- {
- charname: '邻家女孩',
- chartype: '称号'
- },
- {
- charname: '萌萌哒',
- chartype: '称号'
- },
- {
- charname: '么么哒',
- chartype: '称号'
- },
- {
- charname: '女汉纸',
- chartype: '称号'
- }
- ]);
- }
- return ret;
- },
- bornMouse: function(n, p){
- n = n || this.bornNum; //一次出现老鼠的数量
- p = p || 0.3; //原配的概率
- if(this.bornTimer){
- this.clearTimeout(this.bornTimer);
- }
- var posSel = cc.random(this.pos, n);
- var self = this;
-
- this.bornTimer = this.setTimeout(function(){
- self.bornMouse();
- }, this.bornDelay);
- this._yuanpei.forEach(function(o){
- //o.stopAllActions();
- self.undelegate(o);
- o.scaleTo(0.1, 0).then(function(){
-
- o.removeFromParent(true);
- }).act();
-
- });
- this._xiaosan.forEach(function(o){
- //o.stopAllActions();
- self.combo = 0;
- self.comboText.setString('连击: ' + self.combo);
- self.undelegate(o);
- o.scaleTo(0.1, 0).then(function(){
-
- o.removeFromParent(true);
- }).act();
- });
- for(var i = 0; i < posSel.length; i++){
- if(i == 0 || Math.random() > p){
- var xiaosan = cc.createSprite('sis1.png', {
- anchor: [0.5, 0],
- xy: posSel[i],
- //opacity: 0
- scale: 0
- });
- this.addChild(xiaosan);
- xiaosan.delay(i*0.05).scaleTo(self.bornSpeed, 1).act();
- this._xiaosan[i] = xiaosan;
- (function(xiaosan, i){
- self.delegate(xiaosan, 'click', function(){
- self.combo++;
- self.comboText.setString('连击: ' + self.combo);
- self.undelegate(xiaosan);
- delete self._xiaosan[i];
- self._hitXiaosan++;
- xiaosan.fadeOut(0.1).then(function(){
- xiaosan.removeFromParent(true);
- if(!self._xiaosan.some(function(o){return o != null})){
- self.bornMouse();
- }
- }).act();
- xiaosan.rotateBy(0.1, 90).act();
- });
- })(xiaosan, i);
- }else{
- var yuanpei = cc.createSprite('sis2.png', {
- anchor: [0.5, 0],
- xy: posSel[i],
- //opacity: 0
- scale: 0
- });
- this.addChild(yuanpei);
- yuanpei.delay(i*0.05).scaleTo(self.bornSpeed, 1).act();
- this._yuanpei[i] = yuanpei;
- (function(yuanpei, i){
- self.delegate(yuanpei, 'click', function(){
- self.undelegate(yuanpei);
- delete self._yuanpei[i];
- yuanpei.fadeOut(0.1).then(function(){
- yuanpei.removeFromParent(true);
- //游戏结束
- self.gameOver();
- }).act();
- yuanpei.rotateBy(0.1, 90).act();
- });
- })(yuanpei, i);
- }
- }
- },
- backClicked: function(){
- //cc.log('end');
- cc.director.end();
- }
- });
- var HelloWorldScene = cc.Scene.extend({
- onEnter:function () {
- this._super();
- var layer = new HelloWorldLayer();
- this.addChild(layer);
- }
- });
|