mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 19:12:31 +08:00
Support secondary taps (right click) on new callbacks system. In order to follow through with our [event system migration](https://docs.google.com/document/d/1nBUup9QCPioVwWL1zs79z1hWF882tAYfNywFMdye2Qc), we need to make sure the new system is equipped to support all use cases; also changes the existing TapCallbacks to be primary-only. I noticed that we don't support "secondary taps" (i.e. right clicks), so I am adding this. I honestly really dislike the fact that this is considered a completely different event from the left click, instead of just a property on the click event. But I kept this structure to replicate what Flutter does, so this is more familiar for users. I think that is worth the slight verbosity of having yet another detector. Also, it plays well this way with Flutter because that underlying events are a bit different (for example, the secondary ones don't support `pointId`). Note: this is a slight breaking change because the existing detector works for BOTH left and right click, but there is NO WAY of distinguishing them because the `buttons` property is not propagated in the Flutter end (massive oversight I believe - might put a PR later). Since this provides the secondary as a solution, it also removes secondary clicks from triggering the primary. I think this is more versatile than having tap detector=`(primary OR secondary)` and secondary=`(secondary only)`. I don't think this should affect basically any users because (1) desktop only and (2) this acceptance of right clicks was probably a bug anyway (for example, on the example it would rotate the square and also open the context menu, which is jarring). However I am happy to add an option or pursue a different approach, I believe this is the best path forward, IMO.
Flame Examples
This is a set of small examples showcasing specific features of the Flame Engine; it's a great source of learning how to use certain things. See it live here.
This app is composed of a main menu in which you can select one of the examples and play with it. Each example is a standalone game and is contained within its own file, so you can easily checkout the code and see how it works.
For a very simple, but complete game in Flame, check the example folder inside the Flame package.
Help
If you have questions about this:
- Check the source code, the examples are meant to be simple, short, and easy to read.
- Check our extensive documentation, links to which can be found on the main repo (faq, docs folder, code/api docs, tutorials, flame-awesome).
- Join Blue Fire's Discord, we have a #flame channel where you can find lots of people to help and get help from.
- Use the
flametag on StackOverflow.