最近在学习win8 metro app的开发,今天刚刚学了一个小的例子,分享一下

  开始之前你需要准备。。。

  1、开发win8应用需要具备Windows 8 和 Microsoft Visual Studio Express 2012 for Windows 8

  下载 Windows 8

  2、安装window8之后,转至 开发者的下载内容 ,查找下载工具和 SDK 标题,然后单击“立即下载”按钮

  3、你需要开发者许可证才能开始创建 Windows 应用商店应用。 获取开发者许可证。

  在 Visual Studio 中创建新项目,我们来创建名为 HelloWorld 的新应用。以下是操作方法:

  启动 Visual Studio Express 2012 for Windows 8。

  在“文件”菜单上,选择“新建项目”。会出现“新建项目”对话框。可以在对话框的左侧窗格中选择要显示模板的类型。

  在左侧窗格中,依次展开“已安装”、“模板”和 JavaScript,然后选择“Windows 应用商店”模板类型。对话框的中心窗格会显示一列适用于 JavaScript 的项目模板。

  

  在中心窗格中,选择 Blank App 模板。

  在 Name 文本框中,输入 "HelloWorld"。

  单击“确定”可创建项目。Visual Studio 创建项目并在“解决方案资源管理器”中显示该项目。

  

  尽管 Blank App 为最基本的模板,但该模板仍包含少量文件:

  清单文件 (package.appxmanifest)介绍了应用(它的名称、介绍、磁贴、开始页面、初始屏幕等等)并列出了应用包含的文件。

  要在开始屏幕中显示的一组大的和小的徽标图像(logo.png 和 smalllogo.png)。

  表示应用位于 Windows 应用商店的图像 (storelogo.png)。

  显示应用启动时间的初始屏幕 (splashscreen.png)。

  Windows JavaScript 库的 CSS 和代码文件(位于 References 文件夹中)。

  开始页面 (default.html) 和附带的 JavaScript 文件 (default.js),这些文件在应用启动时运行。

  这些文件是使用 JavaScript 的所有 Windows 应用商店应用必不可少的文件。在 Visual Studio 中创建的所有项目都包含这些文件。

  现在我们就创建了一个简单的应用,如果你想看它的外观,按 F5 可构建、部署并启动应用。首先会出现默认的初始屏幕。

  

  这就是初始屏幕

  若要关闭应用,请从屏幕的顶部边缘向底部边缘滑动或按 Alt-F4。(有的笔记本要按alt+fn+f4)关闭应用

  接下来我们修改default.htm页面,这是默认生成的

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8" />
5 <title>HelloWorld</title>
6
7 <!-- WinJS references -->
8 <link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
9 <script src="//Microsoft.WinJS.1.0/js/base.js"></script>
10 <script src="//Microsoft.WinJS.1.0/js/ui.js"></script>
11
12 <!-- HelloWorld references -->
13 <link href="/css/default.css" rel="stylesheet" />
14 <script src="/js/default.js"></script>
15 </head>
16 <body>
17 <p>Content goes here</p>
18 </body>
19 </html>

  接下来向 default.html 文件中添加一些新的内容。正如你向任何其他 HTML 文件中添加内容一样

  1、使用以下内容替代 body 元素中的现有内容:显示 "Hello, world!" 的首级标题、询问用户名的一些文本、用于接受用户名的 input 元素、button 以及 div 元素。 向 input、button 和 div 分配 ID。

1 <body>
2 <div style="width:100%; height:100%; ">
3 <h1>Hello World!</h1>
4 <p>What's your name?</p>
5 <input id="inputName" type="text" /><button id="btnHello">Say hello</button>
6 <div id="OutputMsg">
7 </div>
8 </div>
9 </body>

  我们启动应用程序看看效果吧

  

  现在点击按钮是没有任何反应的,因为我们没有给它注册事件,接下来要做的就是给按钮添加事件,我们向 default.js 文件添加事件处理程序代码。

  我们打开default.js文件看看是些什么东东

  在我们开始添加自己的代码之前,我们来看一下该文件中代码的头几行和最后几行:

1 (function () {
2 "use strict";
3
4 // Omitted code
5
6 })();

  这是自我执行匿名函数

  代码的下一行为 JavaScript 代码打开了严格模式。严格模式为代码提供了额外的错误检查。例如,它防止你使用隐式声明的变量或为只读属性分配值。

  查看 default.js 中代码的剩余部分。它处理了应用的 activated 和 checkpoint 事件。我们以后会深入了解这些事件的详细信息。现在,只要了解启动应用时会触发 activated 事件。

  我们来为 button 定义事件处理程序

  function buttonClickHandler(){

  }

  在事件处理程序内,从“inputName控件内检索用户名,并使用该用户名创建问候语”,首先判断用户名是否输入,没有弹出提示框,有则输出问候语

 1 function buttonClickHandler()
2 {
3 var username = document.getElementById("inputName").value;
4 if (username == "") {
5 new Windows.UI.Popups.MessageDialog("Please input your name !", "Tip").showAsync();
6 return false;
7 }
8 else {
9 var greeting = "Hello, " + username + "! Nice to meet you";
10 document.getElementById("OutputMsg").innerText = greeting;
11 }
12 }

  现在,你只需向该按钮注册该事件处理程序。注册事件处理程序的较好时机是在激活应用之时。幸运的是,Visual Studio 为我们在 default.js 文件中生成了一些代码,可处理应用的激活:app.onactivated 事件处理程序

 1 app.onactivated = function (args) {
2 if (args.detail.kind === activation.ActivationKind.launch) {
3 if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
4 // TODO: 此应用程序刚刚启动。在此处初始化
5 //您的应用程序。
6 } else {
7 // TODO: 此应用程序已从挂起状态重新激活。
8 // 在此处恢复应用程序状态。
9 }
10 args.setPromise(WinJS.UI.processAll());
11
12 var helloButton = document.getElementById("btnHello");
13
14 helloButton.addEventListener("click", buttonClickHandler, false);
15 }
16 };

  以下是更新的 default.js 文件的完整代码:

 1 (function () {
2 "use strict";
3
4 WinJS.Binding.optimizeBindingReferences = true;
5
6 var app = WinJS.Application;
7 var activation = Windows.ApplicationModel.Activation;
8
9 app.onactivated = function (args) {
10 if (args.detail.kind === activation.ActivationKind.launch) {
11 if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
12 // TODO: 此应用程序刚刚启动。在此处初始化
13 //您的应用程序。
14 } else {
15 // TODO: 此应用程序已从挂起状态重新激活。
16 // 在此处恢复应用程序状态。
17 }
18 args.setPromise(WinJS.UI.processAll());
19
20 var helloButton = document.getElementById("btnHello");
21
22 helloButton.addEventListener("click", buttonClickHandler, false);
23 }
24 };
25
26 app.oncheckpoint = function (args) {
27 // TODO: 即将挂起此应用程序。在此处保存
28 //需要在挂起中保留的任何状态。您可以使用
29 // WinJS.Application.sessionState 对象,该对象将在
30 //挂起中自动保存和恢复。如果您需要在
31 //挂起应用程序之前完成异步操作,请调用
32 // args.setPromise()。
33 };
34
35 function buttonClickHandler()
36 {
37 var username = document.getElementById("inputName").value;
38 if (username == "") {
39 new Windows.UI.Popups.MessageDialog("Please input your name !", "Tip").showAsync();
40 return false;
41 }
42 else {
43 var greeting = "Hello, " + username + "! Nice to meet you";
44 document.getElementById("OutputMsg").innerText = greeting;
45 }
46 }
47
48 app.start();
49 })();

  运行一下我们的程序吧

  

  执行成功了,我们再给按钮添加一些样式吧

  打开default.css文件,添加如下样式

 1 body {
2 }
3
4 .buttonstyle {
5 margin-left:6px;
6 background-color:chocolate;
7 }
8
9
10 @media screen and (-ms-view-state: fullscreen-landscape) {
11 }
12
13 @media screen and (-ms-view-state: filled) {
14 }
15
16 @media screen and (-ms-view-state: snapped) {
17 }
18
19 @media screen and (-ms-view-state: fullscreen-portrait) {
20 }

  只有.buttonStyle是我们自己添加的哦,其他是默认的

  那么怎么给按钮添加上呢,我们来到default.js文件

 1 app.onactivated = function (args) {
2 if (args.detail.kind === activation.ActivationKind.launch) {
3 if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
4 // TODO: 此应用程序刚刚启动。在此处初始化
5 //您的应用程序。
6 } else {
7 // TODO: 此应用程序已从挂起状态重新激活。
8 // 在此处恢复应用程序状态。
9 }
10 args.setPromise(WinJS.UI.processAll());
11
12 var helloButton = document.getElementById("btnHello");
13 helloButton.className = "buttonstyle";
14 helloButton.addEventListener("click", buttonClickHandler, false);
15 }
16 };

  helloButton.className="buttonstyle"; 添加上这一句就可以了,自己运行一下看看吧

  本文来自小慧only的博客,原文地址:http://www.cnblogs.com/zhaohuionly/archive/2012/11/24/2785980.html

使用JavaScript+Html创建win8应用(一)的更多相关文章

  1. 使用JavaScript+Html创建win8应用(二)

    向我们的应用中添加JavaScript 的 Windows 库控件,首先我们接着上一个demo把一个评分控件添加进来 与 HTML 控件不同的是,适用于 JavaScript 的 Windows 库控 ...

  2. JavaScript中创建类,赋值给ajax中的data参数

    缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...

  3. JavaScript中创建字典对象(dictionary)实例

    这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...

  4. 简单使用JSON,JavaScript中创建 JSON 对象(一)

    JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...

  5. JavaScript Cookies,创建,获取cookies value

    什么是cookie? cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie ...

  6. JavaScript中创建数组的方式!

    JavaScript中创建数组的方式! 利用数组字面量 // 1 直接量 console.log(Array.prototype); var arr = [1, 2, 4, 87432]; // 注意 ...

  7. Javascript对象创建

    一.概述 虽然对象字面量可以用来创建对象,但在创建多个类似的对象时,不够优雅,不符合DRY原则. 二.创建对象 有以下几种模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.组合构造函数和原型模 ...

  8. javascript动态创建script标签,加载完成后调用回调

    代码如下: var head = document.getElementsByTagName('head')[0]; var script = document.createElement('scri ...

  9. JavaScript基础——创建函数

    JavaScript的最重要的一个部分是制作其他代码可以重用的代码.要做到这一点,你可以把代码组织成执行特定任务的函数.函数是结合在一个单一的块中,并给予一个名称的一系列代码语句.然后,你就可以通过引 ...

随机推荐

  1. Unieap3.5Java端通过SQL语句直接查询DataStore

    通过sql查询dataStore 例子见 /mcss/src/com/neusoft/mcss/base/todo/dao/WorkTodoDaoImpl.java getWorksTodo() ID ...

  2. css3为图片添加鼠标移入放大效果

    只需要为添加效果的图片定义一个伪类 img.zoom-img:hover { -webkit-transform: scale(1.15); -webkit-transition-timing-fun ...

  3. Android IOS WebRTC 音视频开发总结(五四)-- WebRTC标准之父谈WebRTC

    本文主要是整理自国内首届WebRTC大会上对Daniel的一些专访,转载必须说明出处,欢迎关注微信公众号blacker,更多说明详见www.rtc.help 说明:以下内容主要整理自InfoQ的专访, ...

  4. 实现Java JTable的应用案例

    代码如下 import Java.awt.Component; import java.awt.Dimension; import java.awt.FontMetrics; import javax ...

  5. php-resque学习笔记二(配置)

    1:前提 系统:CentOS PHP版本:PHP7     安装目录:/usr/local/php php-resque          安装目录:/home/software/php-resque ...

  6. HTML自动换行的问题

    有时文本文字已经超过所在的区域,但是文字还是不自动换行 可以用强制换行 强制不换行div{ white-space:nowrap;}自动换行div{ word-wrap:break-word; wor ...

  7. wamp+zendstudio12+xDebugger环境搭建

    1.网上找到Wampserver,下载即可,一路安装即可,安装好后打开浏览器输入http://localhost即可看到有没有安装成功 比如我的是这样的,就说嘛wampserver安装成功了 wamp ...

  8. 添加Microsoft SQL JDBC driver 到 Maven

    主要步骤如下: 1. 本地下载sqljdbc4.jar 2. 解压到本地文件夹中,并找到sqljdbc4.jar路径 3. 打开命令窗口,打开至工程目录,执行以下语句(前提:先配置好maven环境变量 ...

  9. 2013/8/28 JS+HTML 三级省市区联动

    var mp = ["安徽","北京","福建","甘肃","广东","广西", ...

  10. PHP file_get_contents于curl性能效率比较

    说明大部分内容整理来源于网络,期待你的补充.及不当之处的纠正: 1)fopen/file_get_contents 每次请求远程URL中的数据都会重新做DNS查询,并不对DNS信息进行缓存.但是CUR ...