20121126
为了内存,我不要NPC
是的,总算是把游戏成功放置于ipad上了,
但是,游戏运行速度是那么的不如意,卡爆了!
足足有400多M呢,特别是资源,大占据了内存空间,
So,我试着先不加载怪物上去,额,代码不熟悉就问主程了,
发现他说的毫无用处,什么不处理服务那边发来的消息就行了,
那只是不显示而已,怪物数据还是有啊,可是他那么的肯定,如果不处理是觉得没怪物数据的。
好了,不纠结,这本不是我的问题。
20121127
为了内存,美工将地图优化
这一天,我可以说是烦躁了,什么什么嘛,
昨天还能生成ipa,今天又报内存溢出错误了,
我开始怀疑地图,于是将bin复原,结果一样。
唉,又新建项目,又配置,时间总是花在这种事情上!
总算是成功了,果然,地图改了,给力多了,生成只有350多M了。
运行速度也快了。
20121128
终于,flash发布ipa版本总算告一段落了。
现在开始接手pad版本任务需求了。
总算开始接触代码了,这是我所梦寐的呢。
第一个需求就是给游戏加一个虚拟的游戏操纵杆,
好了,今天就看代码了。
20121129
嗯,游戏操纵杆基本逻辑理清,
打算叫主程序那边写个接口函数的,
按照我给他的弧度计算玩家移动。
我只能说彻底无语,听不明白我意思,
还是我没听明白他的意思?他一定要我考虑人物旋转,
我现在都讲不清楚了!还是给大家看看我写的测试版吧:
package
{
import flash.desktop.NativeApplication;
import flash.events.Event;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.events.TouchEvent;
import flash.events.MouseEvent;
import flash.text.TextField
import flash.utils.Timer;
import flash.events.TimerEvent; /**
* ...
* @author ...
*/
public class Main extends Sprite
{
private var myTextField:TextField ;
private var mySpriteNpc:Sprite ;
private var mySprite:Sprite ;
private var mySpriteBg:Sprite;
private var touchMoveID:int = 0;
private var IsDown:Boolean = false;
private var IsIn:Boolean = false;
private var timer:Timer public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
mySpriteBg = new Sprite();
mySpriteBg.graphics.beginFill(0x336600);
mySpriteBg.graphics.drawCircle(150, 150, 150);
addChild(mySpriteBg);
mySprite = new Sprite();
mySprite.graphics.beginFill(0x33ff99);
mySprite.graphics.drawCircle(150, 150, 25);
addChild(mySprite);
mySpriteNpc = new Sprite();
mySpriteNpc.graphics.beginFill(0xff6699);
mySpriteNpc.graphics.drawCircle(400, 400, 25);
addChild(mySpriteNpc);
myTextField = new TextField();
addChild(myTextField);
myTextField.width = 200;
myTextField.height = 20;
timer=new Timer(50);
//开始记时
timer.start(); //mySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
mySprite.addEventListener(MouseEvent.MOUSE_DOWN, onTouchBegin);
timer.addEventListener(TimerEvent.TIMER,UpdateShow);
}
private function onTouchBegin(event:MouseEvent):void
{
myTextField.text="触摸开始";
//stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
//stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onTouchMove);
stage.addEventListener(MouseEvent.MOUSE_UP, onTouchEnd);
IsDown = true;
} private function onTouchMove(event:MouseEvent)
{
var temp1 : Number = Math.pow((mySprite.x - mySpriteBg.x), 2);
var temp2 : Number = Math.pow((mySprite.y - mySpriteBg.y), 2);
var radius : Number = Math.sqrt(temp1 + temp2);
var rate : Number = get_rocker_dir();
if (radius < 150)
{
//myTextField.text = "触摸移动中";
trace(rate);
mySprite.x = event.stageX-150;
mySprite.y = event.stageY - 150;
IsIn = true;
}
if(radius > 150)
{
mySprite.x = Math.cos(rate) * 150;
mySprite.y = Math.sin(rate) * 150;
// myTextField.text="超出范围";
} }
private function UpdateShow(evt:TimerEvent):void
{
if (!IsIn || !IsDown)
return;
var rate : Number = GetRockerDir();
var temp1 : Number = Math.pow((mySprite.x - mySpriteBg.x), 2);
var temp2 : Number = Math.pow((mySprite.y - mySpriteBg.y), 2);
var radius : Number = Math.sqrt(temp1 + temp2);
mySpriteNpc.x += Math.cos(rate) * radius*0.09;
mySpriteNpc.y += Math.sin(rate) * radius*0.09;
evt.updateAfterEvent();
}
private function onTouchEnd(event:MouseEvent):void
{
IsIn = IsDown = false;
myTextField.text="触摸结束";
//stage.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
//stage.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onTouchMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, onTouchEnd);
mySprite.x = mySpriteBg.x;
mySprite.y = mySpriteBg.y;
}
public function GetRockerDir() : Number
{
return Math.atan2(mySprite.y - mySpriteBg.y, mySprite.x - mySpriteBg.x);
}
}
}
希望大家可以不腻/吝赐教,谢谢。
20121230
昨天的主程序说的什么要考虑旋转问题,今天无声中不了了之。因为脑残才会想到那吧,但是我确实陷进去了一会,
确实没写过3D,在3D主程序面前,我还是谦虚的回到了自己的工位,去想、考虑什么旋转问题,从更多的同学口中肯定了:这不过是脑残的想法!
好了,就这样。因为还是相信他们的能力,我选择了,我的弧度返回给他们,希望他们可以加一个接口函数,但事实证明:他们远远没有自己想的那么有能力,这么一个接口函数都加不了,硬是要距离、目标点、玩家移动帧数、、、、、好了,靠他们还不如自己写个了,那么我决定就写个鸡肋的函数了(其实函数写来并不鸡肋,但是真正用时,你才会知道....和某人一样SB):
private function GetDesPos():Vector3D { var Rate : Number = GetRockerDir(); var NpcPos : Vector3D = gc_localHero.INSTANCE.position; var DesPos : Vector3D = new Vector3D(); DesPos.x = NpcPos.x + Math.cos(Rate); DesPos.z = NpcPos.z - Math.sin(Rate); DesPos.y = 0; return DesPos; }