当前位置:  编程技术>移动开发
本页文章导读:
    ▪2D游戏凸多边形碰撞检测,分开轴定理算法源码        2D游戏凸多边形碰撞检测,分离轴定理算法源码 更新:修改了一个严重bug(算法错误),增加了多边形和圆形碰撞,增加了正矩形和圆形碰撞   应用场景:2D游戏凸多边形碰撞,比像素碰撞.........
    ▪ ListView的平添headView以及制定item等相关操作        ListView的添加headView以及制定item等相关操作 如果你想scroll down to list's 10 item  你需要yourListView.setSelection(position) 如果你想创建一个这样的vlayout Section '1' is linear layout 包含imageview and textview Secti.........
    ▪ 加载全部自带的图片       加载所有自带的图片 public class DrawablePreviewActivity extends ListActivity {     private static final String TAG = "DrawablePreviewActivity";      public void onCreate(Bundle savedInstanceState)     {         super.onCreate(.........

[1]2D游戏凸多边形碰撞检测,分开轴定理算法源码
    来源: 互联网  发布时间: 2014-02-18
2D游戏凸多边形碰撞检测,分离轴定理算法源码

更新:修改了一个严重bug(算法错误),增加了多边形和圆形碰撞,增加了正矩形和圆形碰撞

 

应用场景:2D游戏凸多边形碰撞,比像素碰撞精确度低点,比方框碰精确度要高。

 

限制条件:2D。不能用于凹多边形,凹多边形得拆分成凸多边形或者三角形来做。运动速度很快了会有穿越效果。不带任何物理,如果需要反弹等等物理效果,就必须上物理引擎了。

 

最佳实践:最好能用盒子先检测一下然后再用分离轴来做碰撞碰撞。否则屏幕上精灵一多还是挺费电的。

 

参考文档

http://www.codeproject.com/KB/GDI-plus/PolygonCollision.aspx

 

参考文档中的代码是ActionScript的,我移植成C99的,附件的包是Xcode项目,不过C源代码可以单提出来用于任何支持C的设备

 

 

C99标准里只有_Bool,没有bool,需要包含头文件<stdbool.h>才可以用bool, true, false,没包含前的编译错误弄得我莫名其妙的

 

还有大家直接用的话最好先充分测试。这个代码写好了只测试了几个例子。如果有命名冲突,得自己搞定,呵呵。

 


    
[2] ListView的平添headView以及制定item等相关操作
    来源: 互联网  发布时间: 2014-02-18
ListView的添加headView以及制定item等相关操作

如果你想scroll down to list's 10 item  你需要yourListView.setSelection(position)

如果你想创建一个这样的vlayout

Section '1' is linear layout 包含imageview and textview

Section '2' is listview包含特定的customze items list

而你又希望你的scrollbar 可以同时对上面两个起作用

那么你需要

View headerView = getLayoutInflater().inflate( 
        R.layout.foo_list_header, null); 
 
mListView = (ListView) findViewById(...); 
mListView.addHeaderView(headerView); 
 
setListAdapter(...); 

去掉横线

getListView().setDivider(null); 
getListView().setDividerHeight(0); 

Or in XML:

  android:divider="@drawable/list_item_divider" 
        android:dividerHeight="1dp" 
3更换背景颜色

不用 View.setBackgroundColor() 而用View.setBackgroundDrawable() or View.setBackgroundResource

 

4.相关事件

listView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> adapter, View view, int which, long id) { 
        String sUrl = "myUrl"; 
        URL url = new URL(/blog_article/sUrl/index.html); 
 
        URLConnection conn = url.openConnection(); 
        conn.setDoOutput(true); 
 
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), Charset.forName("ISO-8859-1"))); 
 
        String res = ""; 
 
        String line; 
        while ((line = rd.readLine()) != null) { 
            res += line; 
        } 
 
        rd.close(); 
    } 
}); 


    
[3] 加载全部自带的图片
    来源: 互联网  发布时间: 2014-02-18
加载所有自带的图片

public class DrawablePreviewActivity extends ListActivity 

    private static final String TAG = "DrawablePreviewActivity"; 
 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
 
        setTitle("Preview of android.R.drawable.*"); 
 
        try { 
            Class RClass = Class.forName("android.R"); 
 
            Class[] subclasses = RClass.getDeclaredClasses(); 
 
            Class RDrawable = null; 
 
            for(Class subclass : subclasses) { 
                if("android.R.drawable".equals(subclass.getCanonicalName())) { 
                    RDrawable = subclass; 
                    break; 
                } 
            } 
 
            List<Map<String, Object>> drinfo = new ArrayList<Map<String, Object>>(); 
 
            Field[] drawables = RDrawable.getFields(); 
            for(Field dr : drawables) { 
                Map<String, Object> map = new HashMap<String, Object>(); 
                Drawable img = getResources().getDrawable(dr.getInt(null)); 
 
                map.put("drimg", dr.getInt(null)); 
                map.put("drname", dr.getName()); 
 
                drinfo.add(map); 
            } 
 
            setListAdapter(new SimpleAdapter(this, 
                            drinfo, 
                            R.layout.listitem, 
                            new String[] { "drimg", "drname" }, 
                            new int[] { R.id.drimg, R.id.drname })); 
 
        } catch(IllegalAccessException iae) { 
            Log.e(TAG, iae.toString()); 
        } catch(ClassNotFoundException cnfe) { 
            Log.e(TAG, cnfe.toString()); 
        } 
    } 

源码下载

http://www.altcanvas.com/downloads/drawablepreview.tar.gz


    
最新技术文章:
▪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获取手机SIM卡运营商信息的方法 iis7站长之家
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3