`

Html5实现iPhone开机界面

 
阅读更多

文章源自:http://blog.csdn.net/yorhomwang/article/details/9205201

由于lufylegend封装得的确不错,本次开发还是用该引擎做的。代码不多,感兴趣的朋友可以直接看一下。

index.html中的代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>iphone</title>
	<script src="./lufylegend-1.7.7.min.js"></script>
	<script src="./js/Main.js"></script>
</head>
<body>
	<div id="mylegend">loading......</div>
</body>
</html>

 Main.js中的代码:

init(50,"mylegend",450,640,main);
LGlobal.setDebug(true);

var loadData = [
	{path:"./js/Shape.js",type:"js"},
	{path:"./js/BootPage.js",type:"js"},
	{name:"wallpaper",path:"./images/wall_paper.jpg"}
];
var datalist = {};

var backLayer,iphoneLayer,screenLayer,buttonLayer;
var iosShape;
var bootPage;

function main(){
	LLoadManage.load(loadData,null,gameInit);
}

function gameInit(result){
	datalist = result;
	//初始化层
	initLayer();
	//加入iphone外壳
	addShape();
	//加入开机界面
	addBack();
}

function initLayer(){
	//背景层
	backLayer = new LSprite();
	addChild(backLayer);
}

function addShape(){
	iosShape = new Shape("IPHONE",400,600);
	iosShape.x = 15;
	iosShape.y = 5;
	backLayer.addChild(iosShape);
}

function addBack(){
	bootPage = new BootPage();
	bootPage.x = 40;
	bootPage.y = 40;
	var wallPaperWidth = iosShape.getScreenWidth();
	var wallPaperHeight = iosShape.getScreenHeight();
	bootPage.addWallPaper(new LBitmapData(datalist["wallpaper"],200,480,wallPaperWidth,wallPaperHeight));
	bootPage.addTime();
	bootPage.addSlider();
	iosShape.addChild(bootPage);
}

 Shape.js里的代码:

/*
* Shape.js
**/
function Shape(type,width,height){
	var s = this;
	base(s,LSprite,[]);
	s.x = 0;
	s.y = 0;
	s.deviceWidth = width;
	s.deviceHeight = height;
	s.type = type;

	//外壳层
	s.shapeLayer = new LSprite();
	s.addChild(s.shapeLayer);
	//Home按钮层
	s.homeButtonLayer = new LSprite();
	s.addChild(s.homeButtonLayer);
	//屏幕层
	s.screenLayer = new LSprite();
	s.addChild(s.screenLayer);
	//显示自身
	s._showSelf();
}
Shape.prototype._showSelf = function(){
	var s = this;
	switch(s.type){
		case "IPHONE":
			//画外壳
			var shadow = new LDropShadowFilter(15,45,"black",20);
			s.shapeLayer.graphics.drawRoundRect(10,"black",[0,0,s.deviceWidth,s.deviceHeight,15],true,"black");
			s.shapeLayer.filters = [shadow];
			//画屏幕
			s.screenLayer.graphics.drawRect(0,"black",[s.deviceWidth/10,s.deviceWidth/10,s.deviceWidth*0.8,s.deviceHeight*0.8],true,"white");
			//画Home按钮
			s.homeButtonLayer.graphics.drawArc(1,"black",[s.deviceWidth/2,s.deviceHeight*0.87 + s.deviceWidth/10,s.deviceWidth/16,0,2*Math.PI],true,"#191818");
			s.homeButtonLayer.graphics.drawRoundRect(3,"white",[s.deviceWidth/2-10,s.deviceHeight*0.87 + s.deviceWidth/10 - 10,20,20,5]);
			break;
	}
};
Shape.prototype.getScreenWidth = function(){
	var s = this;
	return s.deviceWidth*0.8;
};
Shape.prototype.getScreenHeight = function(){
	var s = this;
	return s.deviceHeight*0.8
};

 最后是BootPage.js里的代码:

/*
* BootPage.js
**/
function BootPage(){
	var s = this;
	base(s,LSprite,[]);
	s.x = 0;
	s.y = 0;
	s.timeLayer = new LSprite();
	s.sliderLayer = new LSprite();
}
BootPage.prototype.addWallPaper = function(bitmapdata){
	var s = this;
	//加入背景图片
	s.wallPaper = new LBitmap(bitmapdata);
	s.addChild(s.wallPaper);
};
BootPage.prototype.addTime = function(){
	var s = this;
	
	var shadow = new LDropShadowFilter(1,1,"black",8);
	s.addChild(s.timeLayer);
	s.timeLayer.graphics.drawRect(0,"",[0,0,iosShape.getScreenWidth(),150],true,"black");
	//加入时间文本区
	s.timeLayer.alpha = 0.3;
	s.timeText = new LTextField();
	s.timeText.x = 70;
	s.timeText.y = 20;
	s.timeText.size = 50;
	s.timeText.color = "white";
	s.timeText.weight = "bold";
	s.timeText.filters = [shadow];
	//加入日期文本区
	s.dateText = new LTextField();
	s.dateText.size = 20;
	s.dateText.x = 110;
	s.dateText.y = 100;
	s.dateText.color = "white";
	s.dateText.weight = "bold";
	s.dateText.filters = [shadow];
	
	s.addChild(s.timeText);
	s.addChild(s.dateText);
	//通过时间轴事件更新日期
	s.addEventListener(LEvent.ENTER_FRAME,function(s){
		var date = new Date();
		if(date.getMinutes() < 10){
			if(date.getHours() < 10){
				s.timeText.text = "0" + date.getHours() + ":0" + date.getMinutes();
			}else{
				s.timeText.text = date.getHours() + ":0" + date.getMinutes();
			}
		}else{
			if(date.getHours() < 10){
				s.timeText.text = "0" + date.getHours() + ":" + date.getMinutes();
			}else{
				s.timeText.text = date.getHours() + ":" + date.getMinutes();
			}
		}
		s.dateText.text = date.getMonth() + 1 + "月" + date.getDate() + "日";
	})
};

BootPage.prototype.addSlider = function(bitmapdata){
	var s = this;
	
	s.addChild(s.sliderLayer);
	s.sliderLayer.graphics.drawRect(0,"",[0,iosShape.getScreenHeight()-100,iosShape.getScreenWidth(),100],true,"black");
	s.sliderLayer.alpha = 0.3;
	//加入滑块框层
	var barBorder = new LSprite();
	barBorder.x = 35;
	barBorder.y = iosShape.getScreenHeight()-70;
	s.addChild(barBorder);
	//加入滑块说明文字
	var moveBarCommont = new LTextField();
    moveBarCommont.size = 12;
	moveBarCommont.x = 80;
	moveBarCommont.y = 10;
    moveBarCommont.color = "white";
    moveBarCommont.text = "Slide to unlock.";
	barBorder.addChild(moveBarCommont);
	
	//加入滑块层
	var bar = new LSprite();
	bar.x = 35;
	bar.y = iosShape.getScreenHeight()-70;
	bar.canMoveBar = false;
	//加入鼠标点击和鼠标移动事件
	bar.addEventListener(LMouseEvent.MOUSE_DOWN,function(event,s){
		s.canMoveBar = true;
	});
	bar.addEventListener(LMouseEvent.MOUSE_UP,function(event,s){
		LTweenLite.to(bar,0.5,{
			x:35,
			onComplete:function(s){
				s.canMoveBar = false;
			}
		});
		s.canMoveBar = false;
	});
	s.addChild(bar);
	
	bar.addEventListener(LMouseEvent.MOUSE_OUT,function(event,s){
		LTweenLite.to(bar,0.5,{
			x:35,
			onComplete:function(s){
				s.canMoveBar = false;
			}
		});
		s.canMoveBar = false;
	});
	
	s.addEventListener(LMouseEvent.MOUSE_MOVE,function(event){
		if(bar.canMoveBar == true){
			bar.x = event.offsetX - 70;
			if(bar.x > 215){bar.x = 215;}
			if(bar.x < 35){bar.x = 35;}
		}
	});
	s.addChild(bar);
	
	//画出滑块框
	barBorder.graphics.drawRoundRect(2,"#191818",[0,0,250,40,5],true,"black");
	barBorder.alpha = 0.7;
	//画出滑块
	bar.graphics.drawRoundRect(2,"dimgray",[0,0,70,40,5],true,"lightgray");
	bar.alpha = 0.7;
};

 由于本次是偶自娱自乐,所以代码就不多讲了,只讲一下Shape.js和BootPage.js的用途。Shape.js是用来绘画我们iphone手机 外壳用的类,而BootPage.js是开机界面的类。两者的功能不同,相当于Shape.js用来处理硬件外观,BootPage.js用来处理显示。

其他的就留个大家自己看吧。虽然代码有点长,但是都不带逻辑性。慢慢读就Ok!当然,读不懂的同学可能是没有了解过lufylegend,以下是引擎官方的网站:

http://lufylegend.com/lufylegend
引擎API文档:

http://lufylegend.com/lufylegend/api

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Html5实现iPhone开机界面示例代码

    可以用Html5来仿照苹果操作系统做一个能在Web平台运行的ios,今天就先娱乐一下,先搞一个开机界面,感兴趣的朋友可以参考下哈,希望对大家有所帮助

    Google Android SDK开发范例大全(第3版) 1/5

    3.15 如iPhone拖动相片特效 3.16 自制计算器 3.17 关于(About)程序信息 3.18 程序加载中,请稍候 3.19 全屏幕以按钮重写 3.20 今晚到哪儿打牙祭 3.21 Android变脸 3.22 打勾显示输入的密码 3.23 Android多语系支持 ...

    Google Android SDK开发范例大全(第3版) 4/5

    3.15 如iPhone拖动相片特效 3.16 自制计算器 3.17 关于(About)程序信息 3.18 程序加载中,请稍候 3.19 全屏幕以按钮重写 3.20 今晚到哪儿打牙祭 3.21 Android变脸 3.22 打勾显示输入的密码 3.23 Android多语系支持 ...

    Google Android SDK开发范例大全(第3版) 3/5

    3.15 如iPhone拖动相片特效 3.16 自制计算器 3.17 关于(About)程序信息 3.18 程序加载中,请稍候 3.19 全屏幕以按钮重写 3.20 今晚到哪儿打牙祭 3.21 Android变脸 3.22 打勾显示输入的密码 3.23 Android多语系支持 ...

    《Google Android SDK开发范例大全(第3版)》.pdf

    3.15 如iphone拖动相片特效 54 3.16 自制计算器 56 3.17 关于(about)程序信息 58 3.18 程序加载中,请稍候 61 3.19 全屏幕以按钮重写 63 3.20 今晚到哪儿打牙祭 64 3.21 android变脸 67 3.22 ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全的目录

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google+Android+SDK开发范例大全

    ) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——...

    Google Android sdk 开发范例大全 部分章节代码

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK 开发范例大全01

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK 开发范例大全02

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(完整版)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

Global site tag (gtag.js) - Google Analytics