AllanR's Recent Forum Activity

  • the problem seems to be that Construct doesn't like to change the visibility of non-existent layers. Your loops go up to 20, but you only have 4 layers. if you change the loops to "0 to 3" then it works the way you expect.

    I couldn't find a way to detect how many layers there are at runtime. You could create a global variable "LayerCount" if you are planning on adding or removing layers - just remember to update the global variable...

  • SnipG that is excellent advise... I had noticed strange IDs in some cases and worked around that, but I definitely like the idea of using the index instead. I will update my example so that people who download it in the future will not be misled.

  • dop2000

    just tried your version, and it seems to works well. Like I said back in my first post, it is up to the game creator to define how the interface works... and what makes sense for the game.

    My method was based on multi-touch requirements that needed different fingers to do specific things. Your shorter version does the job, but has potential drawbacks - if you start moving the beacon with one finger, then start moving the ship with another finger - if that second finger slides off the control it take over controlling the beacon. And if the finger that was controlling the beacon slides over a control it starts moving the ship. That is all fine, if that is what you want...

    Anyway, the OP now has two excellent examples of how to do multi-touch! :)

  • dop2000 my first version had that problem, so I moved part of the initialisation code into the "Is In Touch" block (by using the "NewTouch" flag). and that works properly on my computer, iPad and iPhone...

    (the "is overlapping" section didn't work in the "On any Touch Start". That looks like a bug in C2 to me, but is probably because the TouchPoint sprite isn't fully created until the next top level event).

    pretty sure I uploaded the right version... what are you testing on? and does the TouchPoint sprite have a NewTouch boolean instance variable?

  • AmpedRobot

    I hear your frustration... making a bulletproof multi-touch interface is definitely a very advanced function in C2 - and that is not C2's fault. It gives you the tools to do it. It is up to you to define what the touches mean to the game.

    Rather than use an array, I like to create a sprite object for each active touch. Then you use those to track where the touch is, what it is touching, what it can do, how to handle over-lapping controls, etc...

    I re-created your project using the bare minimum elements from yours, and my standard multi-touch method. I put in as many comments as I could, so I hope it makes sense. I had to add a couple instance variables to the beacon so only one touch could try to control it at a time...

    any touch that does not start on a control, or is not controlling the beacon is tracked, but ignored. So this version will work with any number of touches.

    you can download my version here: http://www.rieperts.com/games/forum/touch_test.capx

    Update 1: oh, yeah - normally I would have the TouchPoint sprite invisible, but I left it visible so you can see them for testing purposes...

    Update 2: Another thing - I put the controls in a Family, so you can do one test to see if a new touch is meant to update controls, or to try to move the beacon. Any other controls added should also be added to the family...

    alright, last update: I copied the code to move the ship and beacon from your file, but normally I would have the controls on a non-movable HUD layer (Parallax 0,0), and make the layer the ships are on scroll around (rather than moving all the objects individually). To do that I would create a camera object (with Scroll To) on the game layer and move that as necessary... You probably know that - I realize you were just testing touch.

  • Yes, it should work fine - it gets the date from the device as far as I know.

  • savvito123 a better way would be to just return the day of month by doing:

    Browser.ExecJS("var d=new Date(); d.getDate()")

    that will return a number between 1 and 31.

  • cybertron7 Just tried my example on my daughters phone - a new LG android phone, and there was no lag. My iPhone still lags, but it is a very old 5s...

    then I decided to try it on my wife's ancient Galaxy S4, surprisingly, I could not see any lag there either! So, R0J0hound's fix works well for Desktops and Androids... just need to test on a newer iPhone.

  • R0J0hound That is SO AWESOME!! wow, that has bugged me for ages! Your example completely eliminates the lag on desktop. It does still lag on my iphone and ipad.

    THANK YOU R0J0hound!!

    I made a couple of tweaks... clamp the textboxexs to the viewport so they scroll on and off the screen a little better, and position the textboxes within C2 before setting the CSS position (this also eliminates the lag when the textboxes are "pinned" to an element that has drag and drop). So, in my example you can scroll the window, or drag the page around - WITH NO LAG (on desktop).

    cybertron7 If you want to do this on mobile, you are pretty much out of luck. About the best you can do is make a "fake" input box under the real one and use CSS to make the real textbox transparent with no borders. Then the box does not appear to lag - but the text inside it still does (but I think this looks significantly better).

    The ONLY other option is to completely make your own input system... I tried to do that last year and ALMOST got it working... you have to make your own cursor, method to select and delete text. But you can't access the system clipboard, you have to make your own keyboard, so no spell checking, no word suggestions, etc...

    you can get my updated version of R0J0hounds example here: www.rieperts.com/games/forum/scroll_w_textbox_fix3.capx

  • resdesign

    there are a couple ways you could do it.

    If the help screen doesn't have a button that needs the pointer to change to the hand, then put the event that changes the cursor to the hand inside the group that you disable - so you effectively disable the buttons and disable changing the cursor at the same time. When you re-enable the group, you will enable the cursor to change again too.

    If you want to disable some buttons, but still have others work (and have the cursor change), then you could add a boolean instance variable to the family called "ButtonEnabled". Set the variable to False for all the buttons you want to disable, and leave it True for the rest.

    On the event that changes the cursor (when the mouse is over a member of the button family) add another condition that says "ButtonFamily is ButtonEnabled"

    If you have lots of buttons in different groups, you could add another family instance variable called ButtonGroup. Then you could have a "Navigation" group, "Help" group, "Settings" group, "controls" group, etc... Then it would be easy to select and disable/enable an entire group as needed.

  • chrislechat

    Yes, use AJAX to send data to a PHP script on your server. The PHP script can read from and write to a mysql database.

    There are tutorials to help you get started.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • 99Instances2Go

    like newt said, "objects created are picked, until the next higher tier event"

    In your first example the destroy line is outside the scope of the event that creates the sprite (and the new sprite does not officially exist until the next top level event - as I think you know). But in your second example, the action is still within the scope because it is part of a sub event under the one that created the sprite. The new sprite will stay Picked until all sub events are finished, or something else changes the picking. like a condition that does not apply to the new sprite, or if you have a sub event that does a system --> pick All Sprite2, (then all other existing instances will be picked except the new one - because it does not officially exist yet).

    another useful thing to know is that you can pass the UID of the new sprite into a function. The function can pick the object by its UID and do whatever you want to it even though the next top level event has not happened yet.

AllanR's avatar

AllanR

Member since 21 Nov, 2013

Twitter
AllanR has 23 followers

Trophy Case

  • 11-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Popular Game One of your games has over 1,000 players
  • x2
    Coach One of your tutorials has over 1,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

20/44
How to earn trophies