当前位置:  编程技术>移动开发
本页文章导读:
    ▪什么是Titanium的“proxy”对象        什么是Titanium的“proxy”对象? 【官方地址】http://developer.appcelerator.com/blog/2012/02/what-is-a-titanium-proxy-object.html如果你经常关注我们的开发Blog,而且阅读了我们基于wiki的文档,你可能会多次.........
    ▪ 怎么彻底卸载Titanium Studio        怎样彻底卸载Titanium Studio? 在Titanium中,文件名是不支持非英文的,一旦我们使用了比如包含汉字的文件名的话,你会发现即使你以后怎么修改,卸载Titanium,也还是build不成功。这里我们.........
    ▪ 去除空格、回车、换行符、制表符       去掉空格、回车、换行符、制表符     public static String replaceBlank(String str) { String a= ""; if (str!=null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = .........

[1]什么是Titanium的“proxy”对象
    来源: 互联网  发布时间: 2014-02-18
什么是Titanium的“proxy”对象?
【官方地址】http://developer.appcelerator.com/blog/2012/02/what-is-a-titanium-proxy-object.html

如果你经常关注我们的开发Blog,而且阅读了我们基于wiki的文档,你可能会多次看到过“proxy对象”的说法。简单来说,proxy是一个特殊的JavaScript对象,用来代替原生(iOS或者Android,在mobile web是不需要这个)代码的相应对象。

//这里的"button"就是一个proxy对象
var button = Ti.UI.createButton({
	title:'push me!',
        height:50,
        width:200
});


如果你想详细的知道什么是proxy?它如何工作的?可以查看Module开发指南,它详细讲解了为iOS或者Android开发你自己Module的整个过程。

任何时候你访问Ti.* JavaScript命名空间中的函数或者属性,或者使用从这个命名空间的函数返回的对象时,这个对象就是某种类型的proxy。

为了更好的实现JavaScript Conext和原生代码的“桥接”,这些proxy对象被赋予了特殊的功能:允许原生代码(Java, C, 或Objective-C)拦截对象的分配以及函数的调用。这种交互的模式允许开发者能使用JavaScript编写原生代码,使Titanium有别于许多其他跨平台工具。

Proxy是特殊的
作为Titanium平台的使用者,理解这些对象的是很有帮助的,至少在Titanium1.X或者可能在Titanium2.X的很长一段时间里,proxy对象不会总是顺从JavaScript的规则。那么让我们来看看一些没有延续JavaScript规则的地方。

嵌套对象
对于普通的JavaScript对象,你可以为对象(只要这些属性对象存在)设置嵌套属性,比如“meaning.of.life = 42;”,但对于Proxy对象来说是不可以的。一个比较有代表性的例子,你会用到Label的“font”属性,比如如下例子中,“l”是一个Proxy对象,它有一个内嵌的属性“font”,然后为它设置 fontSize。当我们试着直接给它设置嵌套属性fontSize的时候,它是不能够运行的,而是必须设置整个font对象给这个值。

var w = Ti.UI.createWindow({
	backgroundColor:'white'
});
 
var l = Ti.UI.createLabel({
	text:'here is a label',
	font: {
		fontFamily:'Trebuchet MS'
	}
});
w.add(l);
 
//运行不了
l.font.fontSize = 24;
 
//可以正常运行
l.font = {
	fontFamily:'Trebuchet MS',
	fontSize: 24
};
 
w.open();


覆盖属性
Proxy对象的另外一个特殊地方是,对于作为proxy对象的公开接口的函数(Titanium预定使用函数和属性)是不能被复写的。以下是一个典型的例子:

var window = Ti.UI.createWindow({
	backgroundColor:'red'
});
 
window.open = function() {
	alert('overriding open!');
};
 
window.open();

当你运行这段代码时,你会发现,“open”是Proxy对象的一个公共接口函数,我们写得代码只是残留着,并不是我们想想的这个函数被覆盖了。

Getters 和 Setters

特殊的函数名有他们特殊的用处。任何以“get”和“set”开头的函数都被委托给原生代码,所以任何你想设置给Proxy的自定义getter和setter都将会被忽略。

var window = Ti.UI.createWindow({
	backgroundColor:'red'
});
 
window.getSomething = function() {
	alert('getter function');
};
 
window.setSomething = function(something) {
	alert('trying to set '+something);
};
 
window.open();
 
//被忽略
window.getSomething();
window.setSomething('foo');


.apply 和.call

一般你可以使用JavaScript的.apply 和.call的来调用函数,因为函数是一个类对象。但是对于Titanium的Proxy对象来说,由于其有着特殊的构造,是不允许这样被调用的。以下代码虽然是合理的,但是运行之后会出错。
var window = Ti.UI.createWindow.call(this,{
	backgroundColor:'red'
});
window.open();


包装Proxy

有时候这种行为比较烦人,因为对于Ti.*命名空间下的对象,我们想使用JavaScript的所有技巧。当我们使用Proxy处理问题时,一般我们都是在普通的JavaScript对象中包装一个Proxy对象,不直接访问原生Proxy。比如下边这个简单的例子,他可以放到Titanium的根目录下。

Resources/WrappedWindow.js

//Proxy wrapper
function WrappedWindow(args) {
	this.proxy = Ti.UI.createWindow(args);
}
 
WrappedWindow.prototype.open = function(args) {
	this.proxy.open(args);
};
 
WrappedWindow.prototype.setBackgroundColor = function(color) {
	//this works because WrappedWindow is just a plain ol' JS object!
	this.proxy.animate({
		backgroundColor:color,
		duration:4000
	});
};
 
module.exports = WrappedWindow;


Resources/app.js

var WrappedWindow = require('WrappedWindow');
 
var w = new WrappedWindow({
	backgroundColor:'white'
});
 
w.open();
w.setBackgroundColor('red');


使用这个技巧,你可以避开Proxy对象的特殊行为,因为直接操作他们是很麻烦的。

总结

Proxy对象是你使用JavaScript编写原生代码的一个桥梁。然而他们有一些特殊的规则适用于他们。需要特别注意的是:

  • 不能设置嵌套属性
  • 不能复写Proxy对象公开API的属性
  • 以“”和“”开发的函数是被拦截的
  • Proxy对象的.call 和 .apply是不能运行的






    
[2] 怎么彻底卸载Titanium Studio
    来源: 互联网  发布时间: 2014-02-18
怎样彻底卸载Titanium Studio?
在Titanium中,文件名是不支持非英文的,一旦我们使用了比如包含汉字的文件名的话,你会发现即使你以后怎么修改,卸载Titanium,也还是build不成功。

这里我们来看看如何彻底的卸载Titanium Studio!

1、首先需要通过添加删除程序来卸载“Titanium Stuido”。

2、Titanium在使用的过程中,在我们的个人目录中建立几个他们运行是需要的文件夹。
  • ・.android
  • ・.titanium
  • ・.deltafy
  • Application Data\Titanium

具体在WindowsXP系统中如下:
C:\Documents and Settings\$user_name$\.android
     adb_usb.ini
     ddms.cfg
     repositories.cfg
     androidwin.cfg
     default.keyset
     avd
          titanium_3_HVGA.avd
          titanium_3_HVGA.ini
     modem-nv-ram-5560

C:\Documents and Settings\$user_name$\.titanium
     titanium_3_HVGA.sdcard
     titanium_3_HVGA.sdcard.lock

C:\Documents and Settings\$user_name$\.deltafy
     deltas

C:\Documents and Settings\$user_name$\Application Data\Titanium
     mobilesdk
     modules
     runtime
     sdk

以上这些目录如果在你卸载Titanium Studio后,还存在的话,需要手动删除它!

这几个目录中的文件已经在上边也列出来了,其中:
  • .android => android 的AVD
  • .titanium => android 的sdcard
  • .deltafy => titanium的sqlite3文件
  • Titanium => titanium的SDK

特别要提到的是.deltafy文件夹,如果你没有运行程序的话,是没有这个文件夹的,一旦你成功的运行了一个应用之后,它下边就会有一个文件"deltas"。这个文件具体内容是:titanium在构建过程用到的所有文件的绝对路径,通过以下图大家看的更清楚!



    
[3] 去除空格、回车、换行符、制表符
    来源: 互联网  发布时间: 2014-02-18
去掉空格、回车、换行符、制表符

 

 

  public static String replaceBlank(String str) {
		
		        String a= "";
		
		        if (str!=null) {
		
		            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		
		            Matcher m = p.matcher(str);
		
		            a= m.replaceAll("");
		
		        }
		
		        return a;
		
		    }
 

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
论坛 iis7站长之家
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3