表单文本框提示

html代码:

1
2
3
4
<form name="test" action="" method="post">
<input type="text" required pattern="^\d{11}$" oninput="out(this)" placeholder="请输入11位数字" maxlength="11">
<button type="submit">Check</button>
</form>

阅读更多

日期格式模板输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Date.prototype.format = function(template){
var fullYear = this.getFullYear();
var o = {
"M+" : this.getMonth() + 1,
"d+" : this.getDate(),
"h+" : this.getHours(),
"m+" : this.getMinutes(),
"s+" : this.getSeconds(),
"q+" : Math.floor((this.getMonth() + 3) / 3),
"S" : this.getMilliseconds(),
"w" : "日一二三四五六".charAt(this.getDay())
}

template = template.replace(/y{4}/, fullYear).replace(/y{2}/,fullYear.toString().substring(2));

for(var k in o){
if(o.hasOwnProperty(k)){
var reg = new RegExp(k);
template = template.replace(reg, match);
}
}

function match(m){
console.log(m)
return m.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length);
}
return template;
}

//日期格式
var dataTemplateArr = [
'yy年M月dd日 hh时mm分ss秒',
'yyyy/MM/dd',
'yyyy-MM-dd',
'yy/MM/dd',
'yy-MM-dd',
'yyyy/MM/dd hh:mm:ss',
'yyyy-MM-dd hh:mm:ss',
'yy/MM/dd hh:mm:ss',
'yy-MM-dd hh:mm:ss',
'hh:mm:ss',
'hh:mm'
];
// example
document.write(new Date().format(dataTemplateArr[0]));
//console.log()-->17年2月09日 15时08分06秒

阅读更多

通过transform实现弹窗的缩放以至于适配手机端

直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
*@param design Number 设计尺寸 默认640
*@param selectors string dom节点
**/
(function(design, selectors){
var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
//缩放比例
var scale = width / design;
var style = '<style type="text/css">\n';
for(var i = 0; i < selectors.length; i++){
style += selectors[i].selector + '{\n'
+ ' -moz-transform-origin: ' + selectors[i].origin + ';\n'
+ ' -webkit-transform-origin: ' + selectors[i].origin + ';\n'
+ ' transform-origin: ' + selectors[i].origin + ';\n'
+ ' -moz-transform: scale(' + scale + ');\n'
+ ' -webkit-transform: scale(' + scale + ');\n'
+ ' transform: scale(' + scale + ');\n'
+ '}\n';
}

style += '</style>\n';

document.open();
document.write(style);
document.close();
})(640, [{"selector": ".popup", "origin": "50% 50% 0"}]);

阅读更多

cocos2d-js 2048游戏开发教程二

接上一个教程继续…

6. 定义手势动作

我们需要通过触摸滑动来操作游戏,所以就需要定义上下左右的手势动作。这就要用到引擎的触摸响应机制,Cocos2d-html5与Cocos2d-x一样,有多点触控 和单点触控。默认情况下是多点触控,要使用单点触控,我们要使用addTargetedDelegate()方法设置代理。
那么如何判断上下左右呢?当然是根据起始触摸点和结束触摸点的坐标变化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
loadListener : function(){
var listener = cc.EventListener.create({
event : cc.EventListener.TOUCH_ONE_BY_ONE,
target : this,
swallowTouches : true,
onTouchBegan : this.onTouchBegan,
onTouchMoved : this.onTouchMoved,
onTouchEnded : this.onTouchEnded
});
cc.eventManager.addListener(listener, this);
},
onTouchBegan: function (touch, event) {
var self = this.target;
var touchPoint = touch.getLocation();
self.firstX = touchPoint.x;
self.firstY = touchPoint.y;
var locationInNode = self.convertToNodeSpace(touchPoint);
var size = self.getContentSize();
var rect = cc.rect(0, 0, size.width, size.height);
if (!cc.rectContainsPoint(rect, locationInNode)) {
return false;
}
// 触摸处理
// self.onTouchDispose();
return true;

},
onTouchMoved : function (touch, event) {
var self = this.target;
var pos = touch.getLocation();
},
onTouchEnded : function (touch, event) {
var self = this.target;
var touchPoint = touch.getLocation();
var offsetX = self.firstX - touchPoint.x;
var offsetY = self.firstY - touchPoint.y;
self.onTouchDispose(offsetX, offsetY);
// console.log(Math.ceil(self.x), Math.ceil(self.y));
},
onTouchDispose : function(offsetX, offsetY){
if(Math.abs(offsetX) > Math.abs(offsetY)){
if(offsetX > 5){
this.doLeft();
this.doCheckGameOver();
this.setScore(this.score);
}else if(offsetX < -5){
this.doRight();
this.doCheckGameOver();
this.setScore(this.score);
}
}else{
if(offsetY > 5){
this.doDown();
this.doCheckGameOver();
this.setScore(this.score);
}else if(offsetY < -5){
this.doUp();
this.doCheckGameOver();
this.setScore(this.score);
}
}
}

阅读更多

cocos2d-js 2048游戏开发教程一

(这是本人第一次教程写作之旅,没有什么乱七八糟的套路,就是为了将自己的技术写出来,让大家一同来学习,得以提高自己的水平。由于水平有限,如在过程中发现错误的或者有更好的方法不吝贵读者的评论。2017 撸起袖子干!联系方式:qq: 785861210. )

阅读更多

IOS与Android平台上问题列表

问题列表

阅读更多

cocos2d-js开发过程笔记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function resourceCallBack(){
cc.game.onStart = function(){
cc.view.adjustViewPort(true);//是否自动添加viewport
if(thisismobile){
cc.view.setDesignResolutionSize(640, 1136, cc.ResolutionPolicy.EXACT_FIT);
}else{
cc.view.setDesignResolutionSize(640, 1136, cc.ResolutionPolicy.SHOW_ALL);
}
cc.view.enableAutoFullScreen(false);//是否自动全屏 最好放置于下行前
cc.view.resizeWithBrowserSize(false);//根据浏览器窗口改变
//load resources
MyLoaderScene.preload(g_resources, function () {
cc.director.runScene(new gameScene());
}, this);
};
cc.game.run("gameCanvas");
}

阅读更多

nodejs笔记

安装node.js
Node –v 查版本是否成功
安装 express @4 npm install –g express-generator
Express –V 大写
进入工作目录
创建项目 express –e nodejs-demo
进入项目目录 下载依赖库 npm install
启动项目 npm start 或者 node ./bin/www
打开浏览器 localhost:3000

阅读更多

前端规范

html 规范

图片

图片统一存放在图片服务器。注意修饰性图片与内容类图片的分类。

图片格式/大小

适当使用 css Sprite理念合并修饰性图片,图片单张体积不能超过150Kb,JPG格式60%品质即可,部分模糊的可以保持在80%。

图片引用

1
2
3
1.图片路径需要绝对路径格式; 
2.所有img元素必须加上alt属性,修饰性图片alt属性内容为空,内容性质图片alt写上相应的内容
3.必须加上width和height属性,值为原来的大小,但不要用它来进行缩放

阅读更多

懒加载

html代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
.dis_none{
display : none;
}
</style>
<body>
<section class='page1'>
<img src="" data-src='./img.png'>
<img src="" data-src='./img.png'>
<img src="" data-src='./img.png'>
</section>
<section class='page2 dis_none'>
<img src="" data-src='./img.png'>
<img src="" data-src='./img.png'>
<img src="" data-src='./img.png'>
</section>
</body>

阅读更多