Sencha Touch Guide
1.一些命令
创建APP
# Make sure the current working directory is the Sencha Touch 2 SDK 例如D:\Program Files\wamp\www\sencha-touch-2.1.1-commercial
cd /path/to/sencha-touch-2-sdk sencha generate app MyApp /path/to/www/myapp
生成模型MODEL
cd /path/to/www/myapp sencha generate model User id:int,name,email
更新
cd /path/to/www/myapp sencha app upgrade /path/to/new_version_of_sdk
2.Demo实例
根据官方的指导手册,使用Sencha Cmd我们可以快速的创建一个App.
我们首先预览一下改进的界面:

Pic-1 首页

pic-2 音乐

pic-3 视频

pic-4 blog

pic-5 联系我们
1)修改 MyApp\app\view目录下的MainView.js 文件
Ext.define('MyApp.view.Main', {
extend: 'Ext.tab.Panel',
xtype: 'main',
requires: [
'Ext.TitleBar',
'Ext.Video',
'Ext.dataview.NestedList',
'Ext.data.proxy.JsonP',
'Ext.form.Panel',
'Ext.Audio',
'Ext.form.FieldSet',
'Ext.field.Email'
],
config: {
xtype: 'tabpanel',
fullscreen: true,
tabBarPosition: 'bottom',
items: [
{
title: '首页',
iconCls: 'home',
scrollable: true,
cls: 'home',
html: [
'<p> </p>',
'<img height=260 src="resources/icons/yu.png" />',
'<h1>欢迎来到【鱼的记忆】</h1>',
'<p>Hi, I\'m Tony, Welcome to my blog, may you will like it.',
'<br/>[1]联系方式: leegtang@126.com</p>',
'<h2>--鱼的记忆</h2>'
].join("")
},
{
title: '音乐',
iconCls: 'volume',
displayField: 'title',
xtype: 'audio',
url : 'resources/audio/adq.mp3'
},
{
title: '视频',
iconCls: 'video',
xtype : 'video',
x : 600,
y : 300,
width : 428,
height : 320,
url : "resources/audio/dby.mp4",
posterUrl: 'resources/audio/dby.png'
},
{
xtype: 'nestedlist',
title: '博客',
iconCls: 'star',
displayField: 'title',
store: {
type: 'tree',
fields: [
'title', 'link', 'author', 'contentSnippet', 'content',
{name: 'leaf', defaultValue: true}
],
root: {
leaf: false
},
proxy: {
type: 'jsonp',
url: 'blog.php',
//url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
reader: {
type: 'json',
rootProperty: 'responseData.feed.entries'
}
}
},
detailCard: {
xtype: 'panel',
scrollable: true,
styleHtmlContent: true
},
listeners: {
itemtap: function(nestedList, list, index, element, post) {
this.getDetailCard().setHtml(post.get('content'));
}
}
},
{
title: '联系我们',
iconCls: 'user',
xtype: 'formpanel',
url: 'contact.php',
layout: 'vbox',
items: [
{
xtype: 'fieldset',
title: '联系我们',
instructions: '(<font color="red">*</font>为必填项)',
height: 285,
items: [
{
xtype: 'textfield',
label: '姓名<font color="red">*</font>',
name: 'name'
},
{
xtype: 'emailfield',
label: 'Email<font color="red">*</font>',
name: 'email'
},
{
xtype: 'textareafield',
label: '内容<font color="red">*</font>',
name: 'message',
height: 90
}
]
},
{
xtype: 'button',
text: '提交',
ui: 'confirm',
// The handler is called when the button is tapped
handler: function() {
// This looks up the items stack above, getting a reference to the first form it see
var form = this.up('formpanel');
// Sends an AJAX request with the form data to the url specified above (contact.php).
// The success callback is called if we get a non-error response from the server
form.submit({
waitMsg: '正在提交...',
success: function() {
// The callback function is run when the user taps the 'ok' button
Ext.Msg.alert('非常感谢', '您的内容已经提交,我们会尽快联系你。', function() {
form.reset();
});
},
failure: function(form,action){
Ext.Msg.alert('内容提交失败', action.errormsg);
}
});
}
}
]
}
]
}
});
2)修改MyApp\resources\css目录下的 app.css,增加一下内容
.home {
text-align: center;
}
.home h1 {
font-weight: bold;
font-size: 1.2em
}
.home p {
color: #666;
font-size: 0.8em;
line-height: 1.6em;
margin: 10px 20px 20px 20px
}
.home img {
margin-top: -10px
}
.home h2 {
color: #999;
font-size: 0.7em
}
.blog p {
color: #555;
padding: 20px 20px 0 20px;
font-size: 1em;
line-height: 1.4em
}
.x-tab .x-button-icon.volume:before,.x-button .x-button-icon.volume:before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
text-align: center;
font-family: "Pictos";
content: "B";
}
.x-tab .x-button-icon.video:before,.x-button .x-button-icon.video:before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
text-align: center;
font-family: "Pictos";
content: "V";
}
3)增加MainView.js中涉及的资源文件
4)添加blog.php
<?php
/**
* Blog feed data
*
*/
/**
* {
responseData: {
feed: {
entries: [
{author: 'Bob', title: 'Great Post', content: 'Really good content...'}
]
}
}
}
*/ /**
* http://localhost/MyApp/blog.php?_dc=1396706826288&node=ext-data-treestore-1-root&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1
*/
header("Content-type:application/json;charset=utf8;");
$jsonp=$_GET['callback'].'({"responseData":{"feed":{"entries":['; for($i=1;$i<21;$i++){
$author=json_encode('leegtang');
$title=json_encode('今天的博文标题'.$i);
$content=json_encode('博文'.$i.'内容');
$contentSnippet=json_encode('博文'.$i.'内容简介');
$link='blogv.php?id='.$i;
$jsonp.='{"author":'.$author.',"title":'.$title.',"content":'.$content.',"link":"'.$link.'","contentSnippet":'.$contentSnippet.'}';
if($i!=20)$jsonp.=',';
} $jsonp.=']}},"responseStatus": 200});';
echo $jsonp;
?>
5)增加contact.php
<?php $flag='false';
$msg='';
if($_POST['name'] == ''){
$msg='请填写姓名';
}else if( $_POST['email'] == '' ){
$msg='请填写Email';
}else if($_POST['message'] == ''){
$msg='请填写内容';
}else{
// 保存反馈信息
// ....
$flag='true'; } echo '{"success":'.$flag.',"errormsg":"'.$msg.'"}';
?>
好了,项目完成。
Sencha Touch Guide的更多相关文章
- sencha touch打包成安装程序
为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...
- 跟我一起玩转Sencha Touch 移动 WebApp 开发(一)
1.目录 移动框架简介,为什么选择Sencha Touch? 环境搭建 创建项目框架,框架文件简介 创建简单Tabpanel案例 自定义图标的方式 WebApp产品测试和发布 HTML5离线缓存 发布 ...
- sencha touch
download http://www.sencha.com/products/touch/thank-you/ Developer Center http://developer.sencha.co ...
- sencha touch 2.3 结合cordova 环境搭建
sencha touch 2.3环境搭建必备工具 sencha touch 2.3 包sencha cmd 4.0以上JAVA JDK 1.7以上(注意JDK和JRE的区别)Ruby 1.9.3或更早 ...
- 【翻译】探究Ext JS 5和Sencha Touch的布局系统
原文:Exploring the Layout System in Ext JS 5 and Sencha Touch 布局系统是Sencha框架中最强大和最有特色的一个部分. 布局要处理应用程序中每 ...
- 跟我一起玩转Sencha Touch 移动 WebApp 开发1
跟我一起玩转Sencha Touch 移动 WebApp 开发(一) 1.目录 移动框架简介,为什么选择Sencha Touch? 环境搭建 创建项目框架,框架文件简介 创建简单Tabpanel案例 ...
- Sencha touch API
Sencha touch API http://docs.sencha.com/touch/2.3.1/#!/guide/getting_started
- 第二步 (仅供参考) sencha touch 使用cmd打包apk
最新版本的cmd可以直接将sencha touch项目打包成本地应用,不过还有很多不足,本文仅供参考 通过sencha app build native命令可以直接将项目打包成本地应用,不过在命令运行 ...
- sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序
由于最近一直忙着android原生的开发,很久没有更新博客了,官方的sencha cmd工具功能非常强大,创建项目,压缩项目,打包安装程序都能轻松实现,这讲我们就给大家介绍下如何使用sencha cm ...
随机推荐
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一.不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运 ...
- Play!framework 项目部署到Tomcat
Play Framework有自带的服务器,也可部署到其他服务器上.这里讲解下如何将Play的项目部署到Tomcat. 1.准备war包 首先进入play目录: 比如我的: cd C:\play-1. ...
- eclipse mybatis Generator
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Log4E
工具地址:http://marketplace.eclipse.org/content/log4e Log4E插件能够帮助你在Java项目中轻松地创建记录器.它可以在以下几个任务中提供帮助:记录器声明 ...
- 关于WinRT中c++和c#相互调用的问题
先说结论(不见得是最终正确的结论,不过google了一晚上也没有查出个所以然来,即便有解决方法我也认为是微软傻x): 首先c#和c++理所应当的不应该在同一个工程中,而只能是同一个工程的两个项目.只能 ...
- cocos2d-x jsb + cocosbuider 适配iphone5 尺寸
最简单的适配iphone5的方案,应该算是直接用一块图片补上多出来的区域了: 1:Iphone5分辨率为 1136* 640 , 需要在cocosbuilder中将ccb修改为对应的尺寸: Docum ...
- 在Android应用程序使用YouTube API来嵌入视频
在Android版YouTube播放器API使您可以将视频播放功能到你的Android应用程序.该API允许您加载和播放YouTube视频(和播放列表),并自定义和控制视频播放体验. 您可以加载或暗示 ...
- 全球5大安全工具Linux发行版本
全球5大安全工具Linux发行版本http://automationqa.com/forum.php?mod=viewthread&tid=2314&fromuid=21
- 通过Html5的postMessage和onMessage方法实现跨域跨文档请求访问
在项目中有应用到不同的子项目,通过不同的二级域名实现相互调用功能.其中一个功能是将播放器作为单独的二级域名的请求接口,其他项目必须根据该二级域名调用播放器.最近需要实现视频播放完毕后的事件触发,调用父 ...
- Unity3D 之武器系统冷却功能的实现方式
先上方法 //如果Fire1按钮被按下(默认为ctrl),每0.5秒实例化一发子弹 public GameObject projectile; public float fireRate = 0.5F ...