1

我怎样才能做一个ScrollView移动所有方面的定制。以及如何找到我点击 ScrollView 的位置andengine

提前致谢。

4

3 回答 3

4

我写了一个小的 ShapeScrollContainer.java 类,它正在进行中,但功能齐全,欢迎您使用,

https://skydrive.live.com/redir?resid=EB5E1E510A150D4D!105

它允许用户在容器区域内滚动,您添加到 ShapeScrollContainer 的内容会自动相应地移动。如果内容移动到 ShapeScrollContainer 的边界之外,它会将内容项的可见性设置为 false,(如稍后所述,您还可以让它在接近这些边界时淡出内容)。

我已经包含了完整的 java 文档以及每种方法的解释。本质上它扩展了 Rectangle 并实现了 IScrollDetectorListener、IClickDetectorListener 接口。只需将它添加到您的场景中,就像添加另一个形状一样,

ShapeScrollContainer ScrollableArea = new ShapeScrollContainer(x, y, width, height, new IShapeScrollContainerTouchListener()
{

    @Override
    public void OnContentClicked(Shape pShape) {
        // TODO Auto-generated method stub

    }

});
mScene.registerTouchArea(ScrollableArea);
mScene.attachChild(ScrollableArea);

如果您添加到 ShapeScrollContainer 的项目被用户单击,则将调用 OnContentClicked 接口方法。pShape 参数将是指向被单击的形状的指针。ShapeScrollContainer 移动内容而不是相机,因此您尚未添加到容器中的任何其他精灵都不会受到影响。

然后你只需调用 ShapeScrollContainer.Add() 方法来添加你的精灵、动画/平铺精灵、矩形等。例如,一个 ChangeableText,

final ChangeableText mMessage = new ChangeableText(x, y, mFont, "Scroll Me", HorizontalAlign.LEFT, 14);
mMessage.setVisible(true);
mMessage.setZIndex(10);
mMessage.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
mScene.attachChild(mMessage);

ScrollableArea.Add(mMessage);

添加完所有内容后,ShapeScrollContainer 有多种方法可以根据您的需要对其进行定制,

//Whether you want to allow user to scroll vertical/horizontal
ScrollableArea.SetScrollableDirections(false, true);
//Only allow the user to scroll in a direction to available content
//(no more content in that direction - the user will be prevented from scrolling)
ScrollableArea.SetScrollLock(true);
//By how much over the last content in any direction the user is allowed to scroll (% of height/width)
ScrollableArea.SetAlphaPadding(10.0f, 0);
//Allow ShapeScrollContainer to increase alpha of contents and by what distance it starts inside
//the ShapeScrollContainer itself. (Fades content as it approaches the edges due to user scrolling)
ScrollableArea.SetScrollLockPadding(50.0f,0.0f);
//Whether scroll bars will be visible, (horizontal/vertical)
ScrollableArea.SetScrollBarVisibitlity(true,true)
//...
//A lot more methods to refine the ScrollableArea appearence and behaviour - see java doc

希望这是有用的。

于 2013-05-17T21:18:06.420 回答
2

您可以从ClipEntity开始,向其中添加一个子项Entity,其中包含您可以基于TouchEvents 翻译的所有列表项。

于 2013-05-17T00:29:55.327 回答
0

您可以创建滚动视图作为您的首选方式。

您必须创建一个实体作为容器。您必须在其中添加任意数量的对象。对于所有这些对象,您必须添加触摸区域启用,因为您要选择特定项目。

对于滚动,您必须实现滚动检测器侦听器并使用滚动检测器对象。使用此侦听器,您可以获得与 x 和 y 的触摸距离,您可以使用它来移动容器。

这些都是你必须做的基本概述。

于 2013-05-15T17:20:07.420 回答