Kivy:创造一个泛屏幕效果?

时间:2015-07-07 22:40:21

标签: python api scrollview kivy

我是一名经验丰富的python程序员,但Kivy的文档问题不仅仅是Kivy初学者的问题,它没有简单,完整,有效的代码示例。 API。

我使用了自己的智慧,并发现了如何创建精灵,使图形/纹理原点/轴居中,为精灵设置动画,移动它并创建背景。

对于我的下一次练习,我想让屏幕平移/滚动,所有为什么要集中注意力于我的精灵。

同样,在Kivy的ScrollView文档中确实没有工作代码。

任何人都可以向我提供最简单的工作代码形式,以实现我所寻找的目标吗?

再一次,保持简单,因为我只是想看看代码中如何使用函数/方法。

--------更新--------------

Whoot !!!!它没有...而且没有滚动条!还有一个问题需要解决,那就是不稳定的屏幕运动。我并不担心,因为我相信它与我精灵的波涛汹涌的运动有关。

我的理论是,当我改变移动到时钟间隔控制并结合平滑的动画运动时......那些不稳定会消失。如果我的理论是正确的,我会发布代码。否则,我不认为任何人会对破碎的代码感兴趣,哈哈。

我明天会这样做;现在已经累了,因为我整天都在Kivy,而且这个女孩有一个强壮的海狸。" PS ...我看到Kivy 1.9.1将有一个Scoll_To(小部件)调用。

---------更新凌晨4:00 ----------

我在床前看到了一个快速修复,现在波涛汹涌的动作消失了。 Whoot !!!!踢Kivy的屁股!呃......呃......不要伤害我kivy ......哈哈。

现在我只是想学习如何编写游戏设计所需的所有基本逻辑,Kivy风格。

所以现在我可以创建游戏世界,设置背景,创建一个Actor,通过键盘移动该actor(到目前为止),为actor设置动画,然后完美地平移视图。

明天(技术上,今天)我将发布代码作为问题的答案....希望我记得。

2 个答案:

答案 0 :(得分:1)

kivy here有一个示例列表。您可以查看scrollview example

import kivy
kivy.require('1.0.8')

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout


class ScrollViewApp(App):

    def build(self):

        # create a default grid layout with custom width/height
        layout = GridLayout(cols=1, padding=10, spacing=10,
                size_hint=(None, None), width=500)

        # when we add children to the grid layout, its size doesn't change at
        # all. we need to ensure that the height will be the minimum required to
        # contain all the childs. (otherwise, we'll child outside the bounding
        # box of the childs)
        layout.bind(minimum_height=layout.setter('height'))

        # add button into that grid
        for i in range(30):
            btn = Button(text=str(i), size=(480, 40),
                         size_hint=(None, None))
            layout.add_widget(btn)

        # create a scroll view, with a size < size of the grid
        root = ScrollView(size_hint=(None, None), size=(500, 320),
                pos_hint={'center_x': .5, 'center_y': .5}, do_scroll_x=False)
        root.add_widget(layout)

        return root

if __name__ == '__main__':

    ScrollViewApp().run()

答案 1 :(得分:-1)

由于我解决了这个问题,我对正在发生的事情有了更好的理解。在Kivy中设置ScrollView相当于在某些游戏引擎中设置ViewPort。

话虽如此,GameWorld本身就是GameWindow,因为&#34; View&#34;适用于它。

哦......滚动条仍然显示......它们很难看到。我现在不担心隐藏它们。

今天我想我会编写处理同时按下键的代码。我喜欢给2D Actors一个8方向的运动。

之后,我会写一些碰撞检测代码,然后我会根据&#34; y - &#34;写出2D深度代码。理论

class Actor(Widget):
...
class Background(Widget):
...

class GWindow(Widget):
...
    self.size_hint = (None,None)

class TestApp(App):
    def Build(self):
        self.GW = GWindow
        self.SV = ScrollView(size_hint=(None,None), size=(800,600))
        self.SV.add_widget(self.GW)
        return self.SV