Put everything you don't need interacting with your main characters on different layers. Just do it. The performance gains are real.
Make sure no images are stretched beyond 2048 pixels in any one dimension.
Crop your images as tightly as possible in image editor to get rid of as much extraneous Alpha pixels as possible
Use partial opacity sparingly, particularly on big images
Try to make everything you can think of a spawned item. When in doubt, spawn and destroy the original
Recycle particle systems by moving them to where you need them and restarting them instead of creating new ones
Edit sounds in audio editor so there's absolutely no clipping. OpenAL/cocos2D tries to reduce clipping and does so in a very costly manner
Don't be tempted to use the pitch change. It seems to be a live change and exasperates the clipping performance issue above. Record uniquely pitched sounds instead, and pick and play the ones you need
Preplay your sounds, with silent volume if need be, so they're cached before they need to be played. I don't know why this works, but it seems to make a big difference. I thought we were beyond the time in history when we needed to do things like this for audio on iOS.
Use Exponential eases on Colour changes with caution. They're costly. If at all possible, use Linear "eases". For colour changes, they're noticeably cheaper than others.
Push everything you need to store into central arrays. Use them as global storage. Faster and lighter and more reliable than Value and Box Containers.
Make everything you can into a Background image (not physics and not static/walls). Way less physics checking. If you can do this with things and not need to worry about them again, then you know these things are also suited to being put on another layer. So do that and forget about them.
Use broadcast and receive for every single thing you can think of. All the time. This way you can centralise everything and find anything and everything you need in little managers. Animation manager, Sprite Manager, Sound Manager, Creation Manager, etc.
Don't update labels frequently. They are unbelievably slow at any size that looks good.
Assuming it is a straight path, you can use an Empty Object for it. Make the anchor of the object to be 50, 0 so the bottom center of the object will be used in transformations.
Calculate the distance from point A to point B.
Calculate the direction from point A to point B.
Now move the empty object to point A.
Rotate the object to the direction given in step 2.
Now rescale the object so that the y matches the distance given in step 1. You can change x to any width you like - this will be the stroke length.
Now you should have a line connecting from point A to point B.
You can use this every time an object is moving to a point. However, do note that distance is affected by the zoom; it'll be normal at 100% zoom but it will double when zoom is 50%.
@Lupo The loop triggers events instantaneously, so it doesn't wait until the behaviors under it are done executing like Kamdroid said.
The wait behavior would execute once because every time it's executed, it interrupts its previous instance - it's like resetting a clock every time it executes.
The way you would achieve something like this is to connect the behaviors from the bottom to the top so it makes a loop. When you want to stop the loop, use the Behavior Off behavior to interrupt the chain of events.
@ZuniSoft I just fixed this. Thank you for bringing this to our attention. :) When selecting an animation cycle, it should replace all the frames. You can still add individual images as frames without it resetting.
@Hamed not sure if this has something to do with it not building or finding the gameanalytics. But some of these frameworks on the hyperpad file is in red indicating it cant find the path or its missing? BB5BF6EA-B68C-49B3-A713-E4C0A37CEAAE.jpeg