【发布时间】:2012-01-19 06:53:04
【问题描述】:
我知道以前有人问过这个问题,我浏览了所有答案,不,这不是那个,是的,我在清单中命名了该活动,所以不是那个。 这是我的问题: 我有一个精灵在屏幕上移动,当在您选择动态壁纸的窗口中时,我有一个偏好,让用户选择高度(这样他们可以向上或向下移动精灵)唯一的问题是精灵不断移动因此,当他们使用搜索栏向上或向下移动精灵时,我会得到旧的“窗口已经聚焦,忽略焦点增益”现在如果我出去再回来,当然会停止并重新启动它,新的偏好高度是已经在他们那里,所以它会移动到新的高度,但不在实时预览中。 这是精灵代码:
private void addShipOne() {
int heightPosition = (screenSized / 2) - (screenSized / /*this.bigShipHeight*/gettheFreakingHeight());
int widthPosition = 0;
Point startPoint = new Point(widthPosition, heightPosition);
this._shipone.add(new SpaceShipOne(this._context, this, startPoint, 125));
(对不起,我用于测试快速版本的方法名称,当时我有点沮丧)哈哈
然后它进入一个 OnDraw 方法,然后进入渲染器来渲染它。
public void render(){
Canvas canvas = null;
try{
canvas = this._surfaceHolder.lockCanvas(null);
synchronized (this._surfaceHolder) {
this.onDraw(canvas);
}
}finally{
if(canvas != null){
this._surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
我有另一个偏好,允许用户选择船只出现的频率,它工作正常,但它从左到右并改变船只,然后它更新频率,但高度不起作用,我测试了日志以确保高度 int 通过并且它确实这样做了,我唯一能想到的可能是在船向左或向右转时添加这个,但是当它移动时它不起作用看起来。 this.bigShipHeight 是新的高度值进入的地方(我只是用 gettheFreakingHeight() 以另一种方式测试它(我使用了 if else 语句用于使用频率首选项的方法,而不是很好地工作。 只是添加完整的代码部分。 在 onDraw(Canvas 画布) 我这样渲染_shipone
for (Renderable renderable : this._shipone) {
renderable.render(canvas);
}
任何帮助将不胜感激。 提前致谢 山姆
【问题讨论】:
标签: android sprite sharedpreferences