えくすとらんのブログ: pygletさわってみた7

pygletさわってみた7

今回はマウスイベントでイメージをクリックできるようにしたいとおもい

つついてみました

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet
from easygui import*

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=240, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2

usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=20, y=30)

@window.event
def on_draw():
    window.clear()
    usa_sprite.draw()

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.RIGHT:
        usa_sprite.x += 20
    elif symbol == key.LEFT:
        usa_sprite.x -= 20
    elif symbol == key.UP:
        usa_sprite.y += 20
    elif symbol == key.DOWN:
        usa_sprite.y -= 20
    print(usa_sprite.x,usa_sprite.y)
@window.event
def on_mouse_press(x, y, button, modifiers):
    print(x)
    if int(x) <= usa_sprite.x + 10 and int(x) >= usa_sprite.x - 10 and int(y) <= usa_sprite.y + 10 and int(y) >= usa_sprite.y -10:
        msgbox("usadate:name usa")
 
pyglet.app.run()

矢印keyでusa_spriteを動かしそれをクリックするとデータが表示されるというような
ものです

実行してみると



スプライトをクリックするときアンカー一点だとクリック判定がシビアすぎるので
X.Y座標とも+ー10の遊びをもたせてみました
クリックでeasyguiのmsgboxをたちあげてみました
やりたいことはほぼこんな感じのことなのですがデータの入力やスプライトのクローン
、はたまたスプライトの名前を常に表示しておきたい....セーブ機能もつけたい....
etc....とてもできそうにありませんね^^


0 件のコメント:

コメントを投稿

 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...