Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FlxSprite.onScreen() locks the game up if returns false. #147

Closed
FlixelCommunityBot opened this issue Jan 15, 2013 · 5 comments
Closed

FlxSprite.onScreen() locks the game up if returns false. #147

FlixelCommunityBot opened this issue Jan 15, 2013 · 5 comments
Labels
Milestone

Comments

@FlixelCommunityBot
Copy link

Issue by JonLim from 2012-11-09T19:42:21Z
Originally opened as AdamAtomic#235


Hi!

I'm currently working on a match-3 style puzzle game, coming up with a better algorithm to check all of the spots on the board for matches. I've been pulling my hair out with certain aspects of Actionscript (and also Flixel) but I think I found an easy way to check which squares on my board are currently empty (and should begin the process of queuing up pieces to be generated, and moving the rest of the pieces.)

That said, here's my current process for this:

  • Scan rows and columns for matching sprites
  • Discover match, remove matching pieces from sprite group, destroy sprites
  • Scan rows and columns for missing sprites (using onScreen())
  • Queue up pieces off-screen to fill those areas and tween the rest of the pieces

Very vague, I understand, but the fact is, when I use onScreen() on a sprite that I have just used destroy() on, the entire game just stops. To test it, I tried onScreen() on a sprite that was clearly present and it would spit back "true" in the logs.

Would love an idea of what is going on here. Thanks!

@Dovyski
Copy link
Member

Dovyski commented Jan 15, 2013

It seems you are calling kill() instead of destroy(). If that is the case, the sprite will be marked as non-existent and dead (exists = false and alive = false), however its position won't change, that's why onScreen() continues to return true.

If you are calling destroy(), then you should see an exception.

@IQAndreas
Copy link
Member

Is this issue definitely due to user error, or is there anything we can do about it? Shall I close it or leave it open?

@moly
Copy link
Member

moly commented Feb 21, 2013

It's user error. He's trying to use a sprite after it's been destroyed, which is causing a null reference exception. The only thing we could do is to add a check that a FlxObject exists to every one of its public methods.

@Dovyski
Copy link
Member

Dovyski commented Feb 21, 2013

That's certainly user error. About your suggestion, @moly ,I think it is a great addition. We could check for null properties within destroy() (which prevents crash when an object is destroyed twice).

For me this issue can be closed.

@IQAndreas
Copy link
Member

We could check for null properties within destroy() (which prevents crash when an object is destroyed twice).

I implemented your idea into a pull request: #153

As this issue is invalid, I'm closing it as such.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants