当前位置: 首页>>代码示例>>Golang>>正文


Golang Event.Buttons方法代码示例

本文整理汇总了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)
}
开发者ID:gdamore,项目名称:proxima5,代码行数:78,代码来源:level.go


注:本文中的github.com/gdamore/tcell.Event.Buttons方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。