当前位置:  编程技术>移动开发
本页文章导读:
    ▪opengl学习札记系列三        opengl学习笔记系列三 z轴同时垂直于x轴和y轴,它代表一条从屏幕的中心朝向读者的直线。3D笛卡尔坐标系在后面也被我们称作逻辑坐标系。坐标裁剪计算机的窗口是按照像素为单位进行量度.........
    ▪ 在Titanium里兑现多语言        在Titanium里实现多语言 虽然Titanium里已有实现多语言的API可以非常方便地实现多语言国际化的功能,但其有一定的局限性,即不能在app里随时更换不同的语言,一定要直接更改整个手机里.........
    ▪ 苹果bug-获取键盘有内存泄露有关问题       苹果bug--获取键盘有内存泄露问题 memory leaks in open_handle_to_dylib_path and UIKeyboardInputManagerClassForInputMode   If you're developing an iPhone app that uses UITextField objects and you're rigorous enough to check for memory lea.........

[1]opengl学习札记系列三
    来源: 互联网  发布时间: 2014-02-18
opengl学习笔记系列三


z轴同时垂直于x轴和y轴,它代表一条从屏幕的中心朝向读者的直线。3D笛卡尔坐标系在后面也被我们称作逻辑坐标系。

坐标裁剪

计算机的窗口是按照像素为单位进行量度的。你要在窗口中绘制你的物体,就需要告诉OpenGL如何把逻辑坐标系翻译成屏幕坐标系。

通过指定占据窗口的笛卡尔空间的区域来完成这个任务,这个区域被成为裁剪区域。

换句话说,笛卡尔空间(逻辑坐标)是无限大的,而我们的窗口(屏幕)大小是一定的,或者是800*600,或者是1024*768,我们不可能,也没必要将笛卡尔空间全部的显示在屏幕上,因此,只需要在逻辑坐标中指定出一个裁剪区域,只在屏幕上显示这个区域就可以了。

在二维空间中,裁剪区域就是窗口内最大和最小的x、y值。下图显示了两种常见的裁剪区域





左边这种是坐标原点在窗口左下方,y向上增量,x向右增量。右边这种是原点在窗口中央。

视口:把逻辑坐标映射到窗口坐标

裁剪区域的尺寸很少能刚好和窗口的尺寸相匹配,因此,逻辑坐标必须要通过某种方式映射到屏幕像素坐标。这种映射通过一种叫“视口”viewport的设置来完成。

视口就是窗口内部用于绘制裁剪区域的客户区域。

换句话说,我的窗口,不一定全部用来画我指定的裁剪区域,我可以只使用这个窗口的一部分大小来绘制我的裁剪区域。当然,一般来说视口是被指定成整个窗口大小。

下图显示的就是视口被指定为整个窗口大小。裁剪区域的大小是150*100,窗口的大小是300*200,所以逻辑坐标的1格单位与物理坐标(像素)的2格单位相匹配。






下图是视口小于窗口的情况,我们只使用的窗口的一角来绘制裁剪区域。




当然,你也可以把视口设置成大于窗口的尺寸,这样,窗口只能绘制出裁剪区域的一部分,物体就好像被放大了一样。

投影

不管你在屏幕上看到的物体多么的具有立体感,屏幕实际上只是二维的。那么,OpenGL是如何做到这点的呢,答案就是“三角法与简单的矩阵操作”(所谓“简单”只是老外的幽默)。如果想要真正的搞懂这块内容,大学的线性代数可能会对你有帮助,当然,如果你是数学专业的话。

1、正投影

就是不管远近,所有实际大小相同的物体,在屏幕上也会有相同的大小。如果你会3D MAX的话,MAX的User视图、TOP视图、LEFT视图、RIGHT视图、FRONT视图等等都是正投影的典范。

如果你还不能理解的话,打开《传奇》游戏(或类似的2D游戏),它的场景姑且就可以叫做“正投影”。

2、透视投影

简单的说就是近大远小,3D MAX的perspective视图就是此类,或者你打开《魔兽世界》看看……

转自http://hi.baidu.com/%B6%A8%B7%E7%B2%A82005/blog/item/2522edee78867d21adafd552.html

    
[2] 在Titanium里兑现多语言
    来源: 互联网  发布时间: 2014-02-18
在Titanium里实现多语言
虽然Titanium里已有实现多语言的API可以非常方便地实现多语言国际化的功能,但其有一定的局限性,即不能在app里随时更换不同的语言,一定要直接更改整个手机里的语言设置才可生效,具体使用可以查看官方教程。

我这里介绍的方法就可以解决直接在app里随时更换语言的问题,实现起来也很简单,原来其实与官方的差不多,也是要通过读取不同的xml语言文件来显示相关语言。OK,废话少说,直接上代码吧:
function L(text){

    var langFile = Ti.App.Properties.getString('lang');
    var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,'languages/' + langFile + '.xml');
    var xmltext = file.read().text;
    var xmldata = Ti.XML.parseString(xmltext);
    var data = xmldata.documentElement.getElementsByTagName(text);

    Ti.API.info('lang:'+ JSON.stringify(data.item(0).text));

    if(data != null)
        return data.item(0).text;

    return "";
}


以上一个简单的function就可以实现我们想要的效果了,呵呵,接下来让我慢慢解释一下吧。首先第一句
Ti.App.Properties.getString(‘lang’);
就是从当前app session里获取语言设置,当然这个可放到数据库里保存起来也行,否则关了应用下次再开就没了。第二句
var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,’languages/’ + langFile + ‘.xml’);
就是直接获取相关的语言文件,因此xml的命名规则要和你设置的语言名称一致,如 en-US.xml, zh-CN.xml …
后面几句也不需多解释了,一看就知道是读取XML然后获取其属性值的意思。但这里要注意的是XML文件的格式,必须要有一个根,然后才可填写键值对的语言文字,我刚开始就在这里被卡住了,以下是en-US.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<lang>
<title>title</title>
</lang>


K,就是调用此函数,如以上语言key是title,那么只需直接使用:
Ti.App.Properties.setString(‘lang’,'en-US’); //设置当前语言
Ti.API.info(‘title:’+ L(‘title’));
就可以获取当前语言的文字了,用此方法就可实现让用户随时更换当前语言

    
[3] 苹果bug-获取键盘有内存泄露有关问题
    来源: 互联网  发布时间: 2014-02-18
苹果bug--获取键盘有内存泄露问题

memory leaks in open_handle_to_dylib_path and UIKeyboardInputManagerClassForInputMode

 

If you're developing an iPhone app that uses UITextField objects and you're rigorous enough to check for memory leaks using Instruments, chances are you'd discover some leaks in UIKit and CoreGraphics libraries, stemming from some allocations done in dyld::mkstringf, called from dyld::loadPhase5.

 

According to some reports found on the web, it seems that this is a bug in the tools from Apple, and it appears only on the simulator, not when testing on the actual device. So you could safely ignore it. In any case you couldn't do anything about it, as the traceback leading to the leak goes through code outside of your control, that is, unless you happen to work for Apple :).


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪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