本文整理汇总了Golang中github.com/gdamore/tcell.Event.Buttons方法的典型用法代码示例。如果您正苦于以下问题:Golang Event.Buttons方法的具体用法?Golang Event.Buttons怎么用?Golang Event.Buttons使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/gdamore/tcell.Event
的用法示例。
在下文中一共展示了Event.Buttons方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: HandleEvent
func (l *Level) HandleEvent(ev tcell.Event) bool {
switch ev := ev.(type) {
case *tcell.EventKey:
switch ev.Key() {
case tcell.KeyCtrlR:
// secret reset button
l.Reset()
}
case *tcell.EventMouse:
offx, offy, _, _ := l.view.GetVisible()
px1, py1, px2, py2 := l.view.GetPhysical()
mx, my := ev.Position()
if mx < px1 || mx > px2 || my < py1 || my > py2 {
// outside our view
return false
}
if ev.Buttons()&tcell.Button1 != 0 {
l.stopped = true
l.view.Center(offx+mx-px1, offy+my-py1)
} else if ev.Buttons()&tcell.Button2 != 0 {
l.Reset()
} else if ev.Buttons()&tcell.Button3 != 0 {
l.Reset()
}
return true
case *EventPlayerDeath:
l.game.HandleEvent(ev)
l.ShowPress()
return true
case *EventLevelComplete:
l.win = true
l.game.HandleEvent(ev)
l.ShowComplete()
l.ShowPress()
return true
case *EventGameOver:
x1, y1, x2, y2 := l.view.GetVisible()
sprite := GetSprite("GameOver")
sprite.SetLayer(LayerDialog)
sprite.SetFrame("F0")
sprite.SetPosition(x1+(x2-x1)/2, y1+(y2-y1)/2)
l.manager.AddSprite(sprite)
case *EventTimesUp:
bw := GetSprite("Blastwave")
bw.Resize(l.width, l.height)
bw.ScheduleFrame("0", time.Now().Add(2*time.Second))
l.AddSprite(bw)
dur := time.Duration(0)
for i := 0; i < 100; i++ {
x, y := l.randomViewXY()
sprite := GetSprite("Explosion")
sprite.ScheduleFrame("0", time.Now().Add(dur))
sprite.SetPosition(x, y)
l.AddSprite(sprite)
dur += time.Millisecond * 5
for j := 0; j < 4; j++ {
x, y = l.randomViewXY()
sprite = GetSprite("SmallExplosion")
sprite.SetPosition(x, y)
sprite.ScheduleFrame("0", time.Now().Add(dur))
l.AddSprite(sprite)
dur += time.Millisecond * 50
}
}
}
if l.stopped {
return false
}
return l.manager.HandleEvent(ev)
}