- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的级别选择器出现问题。我正在使用我在该论坛的教程中找到的代码,但它无法正常工作。
事实是,当用户混合播放时,我正在使用两个场景,我将引擎设置为第二个场景,然后用户可以滚动级别。
然后,当用户按下后退按钮时,我通过在离开之前保存位置然后使用camer.setCenter(x,y)将其设置回初始位置,将相机设置回其初始位置;
一旦用户返回到级别选择器场景,它就不会正确担心。当用户滚动时,它会滚出屏幕并且无法正常工作。
这是我的代码。如果有人有更好的方法,请随时与我分享。
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
// TODO Auto-generated method stub
clickDetector.onTouchEvent(pSceneTouchEvent);
surfaceScrollDetector.onTouchEvent(pSceneTouchEvent);
return true;
}
@Override
public void onScrollStarted(ScrollDetector pScollDetector,
int pPointerID, float pDistanceX, float pDistanceY) {
// TODO Auto-generated method stub
distanceX = 0;
}
@Override
public void onScroll(ScrollDetector pScollDetector, int pPointerID,
float pDistanceX, float pDistanceY) {
// TODO Auto-generated method stub
camera.offsetCenter(-pDistanceX, 0);
distanceX += pDistanceX;
}
@Override
public void onScrollFinished(ScrollDetector pScollDetector,
int pPointerID, float pDistanceX, float pDistanceY) {
if ((distanceX > TURN_PAGE_DISTANCE) && (page > 0))
{
page--;
camera.offsetCenter(distanceX - CAMERA_WIDTH, 0);
}
else if ((distanceX < -TURN_PAGE_DISTANCE) && (page < LEVEL_PAGES - 1))
{
page++;
camera.offsetCenter(distanceX + CAMERA_WIDTH, 0);
}
else
{
camera.offsetCenter(distanceX, 0);
}
}
@Override
public void onClick(ClickDetector pClickDetector, int pPointerID,
float pSceneX, float pSceneY) {
//loadLeve(levelClicked);
}
private void createHUD()
{
// 不用考虑层
hud = new HUD();
Rectangle hudBox = new Rectangle(20, 700, 80, 80, getVertexBufferObjectManager())
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX,
float pTouchAreaLocalY)
{
// TODO Auto-generated method stub
if (pSceneTouchEvent.isActionUp())
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
Toast.makeText(Menu.this, "BACK", Toast.LENGTH_SHORT).show();
}
});
}
return true;
}
};
hudBox.setColor(Color.RED);
hud.attachChild(hudBox);
hud.registerTouchArea(hudBox);
camera.setHUD(hud);
}
@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if (pKeyCode == KeyEvent.KEYCODE_BACK
&& pEvent.getAction() == KeyEvent.ACTION_DOWN
) {
if(level_scene){
level_scene = false;
camera.setCenter(camera_x, camera_y);
mEngine.setScene(MainMenuScene);
}else{
finish();
}
return true;
}
return super.onKeyDown(pKeyCode, pEvent);
}
private void createLevelBoxes()
{
// 计算行间距
int spaceBetweenRaws = (CAMERA_HEIGHT / LEVEL_ROWS_PER_SCREEN) - LEVEL_PADDING;
// 计算列间距
int spaceBetweenColumns = (CAMERA_WIDTH / LEVEL_COLUMNS_PER_SCREEN) - LEVEL_PADDING;
int level = 0;
int boxX = LEVEL_PADDING;
int boxY = LEVEL_PADDING;
for (int i=0; i<LEVEL_PAGES; i++)
{
int startX = i * CAMERA_WIDTH;
for (int j=0; j<LEVEL_ROWS_PER_SCREEN; j++)
{
for (int k=0; k<LEVEL_COLUMNS_PER_SCREEN; k++)
{
final int levelToLoad = level;
box = new Sprite(startX + boxX, boxY, 90,70,this.levelIcon,this.getVertexBufferObjectManager())
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX,
float pTouchAreaLocalY)
{
// TODO Auto-generated method stub
levelClicked = levelToLoad;
if(levelClicked <= maxLevelReached){
Intent intent = new Intent(Menu.this, GameLevel.class);
intent.putExtra("level", levelClicked);
startActivity(intent);
woodClick.play();
}
return false;
}
};
if (level <= maxLevelReached)
{
}
else
{
box.setColor(0.4117647f, 0.4117647f,0.4117647f);
}
levelScene.attachChild(box);
levelScene.registerTouchArea(box);
int textOffX = 0;
if (level < 10)
{
textOffX = 28;
}
else
{
textOffX = 20;
}
box.attachChild(new Text(textOffX, 20, font, String.valueOf(level + 1),this.getVertexBufferObjectManager()));
level++;
boxX += spaceBetweenColumns + LEVEL_PADDING;
if (level > LEVELS)
{
break;
}
}
if (level > LEVELS)
{
break;
}
boxY += spaceBetweenRaws + LEVEL_PADDING;
boxX = LEVEL_PADDING;
}
boxY = LEVEL_PADDING;
}
}
最佳答案
我认为当用户按下后退键时,您必须再次将相机的 View 范围调整到当前场景。
关于java - 创建可滚动级别选择器(AndEngine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304807/
我正在使用 andengine 开发游戏,我对加载屏幕感到震惊。每次按下我的菜单项时,加载下一个事件需要一些时间,同时出现黑屏,所以任何人都可以帮助我设置带有加载文本的屏幕而不是黑屏。 我搜索了一下,
您知道是否有任何教程或示例展示如何处理游戏的多个屏幕/场景? 例如,假设我有一个具有以下结构的游戏: 封面 主菜单 玩法 积分 将所有代码放在一个 java 文件中可能是一场噩梦......我想使用不
我是 AndEngine 的新手。从 a AndEngine Tutorial 工作时,未找到以下类。我尝试从 AndEngine 导入所有库,但仍未找到类。 类(class)是: SimpleLev
我对 andengine 非常陌生,尝试使用 git url 中的 andengine 示例:https://github.com/nicolasgramlich/AndEngineExamples
我希望在我的游戏中创建屏幕控件,但我不知道如何创建屏幕控件。 我的疑问是: 如何创建屏幕控件? 屏幕控件应该在我们的游戏项目中的什么位置实现? 屏幕控件的类型? 现在我正在创建这个游戏。我有一个球,但
所以,我正在研究 AndEnginePhysicsExample 代码。我想知道这个方法的含义是什么(http://pastebin.com/Day2hciB): private void addFa
我想从菜单开始游戏。在 Eclipse 中,我有 2 个项目,一个是菜单,另一个是实际的游戏。两者都使用 SimpleBaseGameActivity 作为基础。网上的例子做了如下所示的事情。特别是,
我创建这个池是为了回收和重用我添加到场景中的 Sprite 正如您将在我的代码中看到的,我创建了自己的获取方法,该方法随机化选择出现在场景中的 Sprite ,并随机化其 x 位置。问题是,它似乎出于
我的级别选择器出现问题。我正在使用我在该论坛的教程中找到的代码,但它无法正常工作。 事实是,当用户混合播放时,我正在使用两个场景,我将引擎设置为第二个场景,然后用户可以滚动级别。 然后,当用户按下后退
我有一个 GameScene,其中使用了 ZoomCamera、一个背景和一些“病毒”。问题是,当我放大或缩小背景时,背景也会缩放,我不希望这样,请帮忙。 http://puu.sh/9XPUl/c6
所以,这里的想法是收集三根日志,简单的任务。但我只能按特定顺序获取日志,否则触摸日志会使应用程序崩溃。为什么?如果我按顺序捕获它们,它就会起作用,但如果我先触摸日志 2 或 3,它就会崩溃。有更好的方
我正在学习如何使用 box2d 和 andEngine。我试图让我的 Sprite body 移动。我之前在 onCreateScene 中编写所有内容时就让它工作了,但现在我想为我的 Sprite
当用户在屏幕上交换手指时,我想显示一个三角形条。我不知道如何使用 AndEngine、使用粒子系统或使用 Sprite 或使用三角带算法... 我没有写任何代码,因为我很震惊该怎么做。我正在上传图片,
好吧,我正在提供这个变量来为 andengine 中的 sprite 表设置动画。 player.animate(new long[] { 100,100},0,2,false); 它采用的第一个
当在设备中加载时只有白色图像显示,当加载模拟器时图像被破坏 示例代码: // this.mCamera = new Camera(0, 0, 480,320); final Engine en
我开始在我的应用中使用 AndEngine。我使用了一个 xml 来定义应用程序的基本样式。我已经定义了一个场景,其中有一些可拖动的 Sprite 。 我已经正确导入了 xml,但场景出现在它上面,背
我试过这里的东西, http://www.andengine.org/forums/tutorials/getting-started-with-andengine-t11.html jar 文件 4
我仍在学习如何使用出色的 AndEngine 并进行了一些搜索,但我找不到如何创建像跳转到“超空间”这样的效果的示例。效果不必像在星球大战中看到的那样复杂,但可以像旧的 Windows“星星”屏幕保护
我使用的是Android 4.2.2。在我从 github 导入 andengine 并修复错误后,我制作了我的项目。之后我去了图书馆,添加了 andengine,一切都很好。 http://s29.
我在使用 ChangableText 时遇到问题,我正在使用它来显示当前分数。 但是它有问题,因为它在更新时速度很慢。但是,达到 90 分后,更新文本时不再有滞后......(只有前 9x10 分)
我是一名优秀的程序员,十分优秀!