Unity3D中使用有米广告SDK By Android Studio

最近准备对接广告SDK, 网路上搜索全是有米SDK的,fuck~ 有些还是几年前的版本
于是我决定作死,使用最新的 Android Studio 1.2.2 来打包Jar. 对接有米SDK, Unity3D 使用 5.1.2 版本,顺便试下调用Android 函数.

打开创建一个Project
create_project

这里注意下下面的包名 dreamfairy.com.adtest 之后要在Unity中填,要一模一样
点击Next

select_devices

什么都不用改,直接Next

add_activity

这里选择 Blank Activity 后点击 Finish 等 项目初始化后,开始正式工作
继续阅读“Unity3D中使用有米广告SDK By Android Studio”

四叉树

最近手头在做深度排序的优化.
于是做了下面一个实验
在场景上创建 2000 个对象. 然后使用传统的深度排序算法,全排.

        private function checkCollsion() : void
        {
            _rects.sort(sortFun);
           
            var rect : Rect;
            for(var i : int = 0; i < _rects.length; i ++){
                rect = _rects[i] as Rect;
                if(_container.getChildAt(i) != rect){
                    _container.setChildIndex(rect,i);
                }
            }
        }
       
        private function sortFun(p1 : DisplayObject, p2 : DisplayObject) : int
        {
            return p1.y > p2 .y ? 1 : -1;
        }

结果帧数降到了6帧.

于是考虑使用四叉树来做.
在收集资料的时候发现了一篇 javsScript 实现的四叉树

改写成AS后的代码为
继续阅读“四叉树”

简易的怪物管理器

下周27号,貌似就要二次答辩了,于是想着做一个怪物放上去好了。
嘛~ 但是只有一周了,怪物的AI和攻击判定什么的肯定来不及做了,索性就做个简单的应付过去吧~

就是这货了,简易的怪物管理器,就三个功能,怪物创建,怪物移动,怪物移除。这货花了1个小时就搞定了。。果然是好简易~~
正常情况来说,怪物的移动是根据全局tick,附加上内部随机tick的差值来设定每次移动的时间间隔的,so~ 由于是赶工制作嘛,所有的怪物都设定为统一6秒动一次了,非常的坑爹。。。
继续阅读“简易的怪物管理器”

某传说中的网游 0.9 beta 完成

=。= 时隔3个月。。。

在某网游公司工作3个月了啊。觉得学到了很多很多很多的东西。

于是原本打算准备截稿的毕业设计又拿出来大修了一番。基本整个框架都重写一遍了。

加入许多新模块:游戏状态机,消息管理器,模型管理器,聊天管理器,战斗管理器…
消息管理器是在之前的基础上加上了观察者订阅模式,感觉整个结构都清晰明了多了。
加入游戏状态机后,各个状态之间的切换也完全不用担心资源的释放问题了,很赞的说。
继续阅读“某传说中的网游 0.9 beta 完成”

JAVA Hibernate 3.3 +Struts2.2 制作搜索功能

今天在项目中需要加入一个搜索功能,由于项目是jsp的,且有16个页面之多。16个页面还都是关联到数据库中的。因此对应16个不同的页面对应的16张数据表,制作16个搜索页显然不靠谱。
于是决定制作一个通用搜索功能,使得每个页面仅仅需要传入一个带有少量参数的超链接,就能获取对应的结果集。
难点部分是 由于每张数据表的数据字段个数不同,且每张表的具体字段对于搜索模块本身是不可知的。因此在输出Resultset 结果集的时候,还需要知道对应该结果集的所有字段名称。 因此其思路为:1.通过类名,得出所有类字段 2.通过类名获取该类的数据集 3.循环数据集并遍历类字段获取所有的数据结果
继续阅读“JAVA Hibernate 3.3 +Struts2.2 制作搜索功能”

JAVA Hibernate 配合反射动态输出所有数据

=.= 今天一个小朋友问我,如何封装一个类.只需要传入SQL语句,就能返回结果数据集.在这个封装类中不需要知道传入的对象是何种类型.但是又能获取对象的所有属性和对应的数值. 那么既然不知道类型,就肯定不能使用 强制转换了。难点是Hibernate自动生成了数据库反射类,使用session取出一个赋值好的反射类,之后调用该反射类的所有属性取数据。那么封装后,不知道类的类型,自然也不知道具体的方法,无法取值。
继续阅读“JAVA Hibernate 配合反射动态输出所有数据”

某传说中的网游对战系统完成了耶

中午吃了烤肉,晚上果断有力量了有木有!!!

然后把网游对战系统部分完成了。由于手头没有攻击招数这部分的模型。所以以文字对战的形式来实现。

具体过程是:点击一个玩家发送对战请求,对方玩家弹出提示(是否接收对战),选择 是 ,发起对战者2次确认后,对战开始,同步对战信息,对战结束。

以下是同步对战信息的java服务端代码:

// 广播对战信息
        if(myHashMap.get("Event").equals(this.BATTLE_START)){
            Person p1=new Person();
            Person p2=new Person();
            p1.userName=selfUser.target;
            p2.userName=selfUser.initiator;
            nameFight myFight=new nameFight(p1, p2);
            String battleInfo=myFight.Fight();
           
            while (iterator.hasNext()) {
                MyThread thread = iterator.next();
                if (thread.getName().equals(selfUser.initiator) || thread.getName().equals(selfUser.target)) { //仅向对战的双方主动推送对战信息
                    HashMap<String,Object> myObj = new HashMap<String,Object>();
                    myObj.put("Event", this.BATTLE_START);
                    myObj.put("Target", selfUser.target);
                    myObj.put("Initiator", selfUser.initiator);
                    myObj.put("BattleInfo", battleInfo);

                    thread.sendObj(myObj, thread.client);
                }
            }
            return;
        }

AS3 客户端 JAVA服务端使用 Socket 连接 AMF传输数据

在进入正题之前,先来电前情提要的说~

一周前,嚷着要做一个【FLASH客户端,JSON数据包,SOCKET连接,MYSQL数据库。ASWING框架。】网游的DreamFairy,在努力奋战3天,结果如下。。。

ASWING用起来很给力,界面很清爽,灵活性很高,还附带一个图形化界面编辑器。但是!很悲催的是采用了ASWING的项目,即使这个项目只有不到10k!它都要编译20秒左右。。。我实在没有耐心,果断放弃ASWING。

JSON可以十分简单的封装一个对象,其优势是没有XML那么复杂的各种节点。但是其实自身的废节点还是很多的说(一个月前,DreamFairy完全没听说过JSON为何物)。但是,之前做聊天室的时候,都是传ooxx=A&xxoo=B 这样的长字符串。确实没JSON封装的好啊。所以就抱了个死理,一定要用JSON做数据包传输。在AS3中只需要一个JSON类即可。但是在JAVA里解析JSON数据包,就需要JSON-LIB和其依赖的4个包。。。我好不容易找齐它们,结果用起来十分的麻烦。最后不得不放弃,难道DreamFairy又要用回ooxx=A&xxoo=B这样来传输数据么?

搜索遍各种后台技术后,发现了一个叫amf的协议。是adobe为flex开发的一种数据传输协议,可以把对象转换为二进制耶。于是果断放弃JSON,采用amf来做数据传输! 下面进入正题。

由于之前完全用过amf,等于是从0开始学了。连续2个通宵查找amf的教程,大部分都是amfphp的。java的资料非常少。在网上找到部分的代码。如下:

继续阅读“AS3 客户端 JAVA服务端使用 Socket 连接 AMF传输数据”

Java 反射类来实现对数据库的操作

话说~之前用C#做反射DAL的时候,写基础代码非常的痛苦,包括参数什么的全部动态生成,无比烦躁啊。 但是写完后,在程序中使用,却是无比的轻松,真的很提高效率。

正好手头上在做JAVA的教师助理系统,也果断用反射类来做了。

首先是对应数据表建立对应的数据类。包括各个字段。

然后就是用JAVA中的 reflect来提取这个类的各个方法,来构建SQL语句。

之前在做反射的时候,用到 Method[] 数组来存储类中的所有方法,但是 Method[] 里面的字段排序不是自上而下的排序,而是字典序,这个很让我纠结。 最后只好把所有属性设为Public , 用 Field[] 来获取所有的属性。

下面是动态创建 SQL 插入语句的代码:
public String createInsert(Object obj)
{
String a=obj.getClass().toString(); //获取完整类名
String b[]=a.split(” “); //把完整类名以空格分割,存进数组
Class cla=null;
try {
cla=Class.forName(b[1]); //取出数组中索引为1的数值。 JAVA的完整类名是 JAVA XXX CLASS .. 其中XXX 就是传入的类的名字,其余部分都是起的标识的用处。在发射中只需要类名就够了。所以b[1]就是单独的类名
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Field[] f=cla.getDeclaredFields(); // 将类中的所有的属性都存入数组
StringBuilder sb=new StringBuilder();
sb.append(“INSERT INTO “);
sb.append(“`”+cla.getSimpleName()+”`”); //输出类名
sb.append(“(“);
for(int i=0;i

我的JAVA入门了吗?没有入门吗?入门了吧?!

这学期开始学习JAVA了。 o(︶︿︶)o 唉 其实我真的很不想学啊。

毕竟学好一门语言就够了哎, 但是我那不服输的性格作怪,让我自己去买了一本超厚的 《JAVA编程思想》来看,只为了不让老师各种刁难而已。

JAVA可以说是FLASH之父吧,包括文法结构和监听器。 不过监听器方面,确实FLASH更先进一点的说。FLASH所有的监听都是统一 addEventListener(监听类型,实现方法) 构成的。 JAVA却是不同的,有分 ActionListener, windowListner btnActionListener and so on……

而且嘛,完全没有图形化工具,和现成的控件都要靠代码实现。 界面布局也要很抽象的思考才行。

那么~先放上我第一个真正意义上的JAVA程序的代码做个纪念吧。
继续阅读“我的JAVA入门了吗?没有入门吗?入门了吧?!”