Every once in a while the blind squirrel finds the nut.  First, to get a 
taste for what I’m implementing in Elm, hit:


www.deepfinesse.com/demo


Then hit the GO button, then the rotate icon a few times.  It’s a bridge 
playing game.


I began developing this in 0.16 and have it ported to 0.17.  I was somewhat 
on the fence about whether to implement this using Elm’s HTML modules or as 
pure graphics via the Element / Collage modules.  Since it really is all 
graphics ala Mario and Pong, I went with Element / Collage, as those 
programs did.  


All was fine until the Touch.elm package disappeared in 0.17.  This meant 
my app no longer worked on my iPhone - a major target for it.  I found a 
reference on how to do touching in 0.17 but it was HTML based so I could 
not really leverage.


Completely befuddled about what to do, I took a look inside core/Mouse.elm 
to see if I could replicate it in a new Touch.elm module.  Despite having 
gotten pretty strong with Elm at an application level, I have to say the 
contents of Mouse.elm was almost entirely French to me.  AFAIK there is no 
manual on how all that Effects magic works.


Now for the blind squirrel part.  I edited core/Mouse.elm directly in my 
elm-stuff folder, adding only this:


touches : (Position -> msg) -> Sub msg

touches tagger =

  subscription (MySub "touchend" tagger)


Then added the necessary boiler plate to my app:


type Msg = WinResize Window.Size

         | MouseClick Mouse.Position

          | TouchEnd Mouse.Position       <- ADDED


update msg model =

  case msg of

    WinResize newSize ->

      resizeModel newSize model

    MouseClick pos ->

      handleMouseClick pos model

    TouchEnd pos ->

      handleMouseClick pos model           <- ADDED


And EUREKA, it now works on the iPhone!


Now I’m 100% sure this is NOT the right way to do this - adding touchend to 
Mouse.elm.  If anyone who actually knows what they are doing wants to add a 
proper Touch.elm module, or otherwise tell me how to do this correctly, I’m 
all ears.


I’m also considering re-implementing my whole VIEW code path using the HTML 
approach.  This seems to be the preferred direction for Elm apps.  But I’m 
not sure how much sense that makes or even it is doable in a way that 
provides the same slick app I have now.  It’s all graphics so it really 
just wants to put a CANVAS on the whole screen and draw in it.


thx Bill


-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to