Hi, great nice to hear, it's all starting to work now. With respect to the moving, are you moving the pieces to round _x, _y values, not sure, but this might have something to do with it. I remember building a panorama with hotspots area's that had to move along with the panorama, and I had the same problem, the area's slowly moved away from where they should be. I rounded all the delta x's and y's and the problem went away.
With respect to the other problem, I think (but I haven't yet so sorry if this isnt the way to go!) I wouldn't use a ref and neighbour ref search, but actually define groups. After moving a piece, it can match on four sides. The matches could be groups themselves or single pieces. You could take the first match, and either join the new piece to an already existing group, or start a new group between the matching piece on the moved piece. You could make it more complex, for example, when the moved piece matches on both the left and right side, that you combine all those matches into one group, however that isn't strictly necessary, since if you use only the first match, you simply need to move it after the first grouping and it will group again. This still leaves a lot of questions to be answered though, but still the principle would be to update groups. I'm not sure which solution would be better, they both have something to say for them i think. ANYWAYZ: with respect to A*, it would be something like: - build a childlist for all children not already in the list in pseudo: var piecesToFind = new Array(); var piecesToIterate = [masterPiece]; while (piecesToIterate.length > 0) { var currentNode = piecesToIterate.shift(); piecesToFind.push (currentNode); for each matchingPiece in currentNode { if (piecesToFind.contains(matchingPiece) { piecesToIterate.push (matchingPiece); } } } Does that make any sense? (i hope its right:)) greetz Hans On 7/13/06, Guntur N. Sarwohadi <[EMAIL PROTECTED]> wrote:
Hello Hans, I would like to thank you in advanced for helping me this far.. I currently have the jigsaw drawing algorithm in hand, yay! It's looks nicer now :D.. and it does 'blend' when it sticks to other pieces tightly. One good thing is that I use the bevel filter and I thought it wont looked blended since you have that filter around, but somehow it did otherwise and looked pretty nice.. some 'fake' blending effect hehehe.. I've modified the group movement code and now it's moving corresponding to the relation to the 'master' piece (piece the user move).. moving with distance (not piece relation) was pretty buggy coz it (pieces in the group) displaces as the mouse slightly moves away from the master piece. But currently, with the new implementation, it still displaces.. the displacements occur only to the master piece and it seems like because it moves a little faster than the others which make it slightly not sticking with the rest of the group. Very minor bug but still annoying. Broadcast / dispatching isn't the right term for what I did in code, btw.. coz in pseudo all i did was: piece.onMouseMove = function() { for(i = 0; i < piece.group.length; i++) { piece.group[i].updatePosition(this); } } group is an array located in each piece mc.. and since it's an array of pieces, then this piece has the 'updatePosition' methode as well.. sumthin like piece.updatePosition = function(ref) { //get the relation to ref, whether it's in the north, south, west or east of it //match the _x and _y property by ref by relation //search for other pieces connected to ref if this piece isn't related directly to ref } Now, this is where my latest problem spawns in.. searching for pieces connected to ref is pretty damn hard.. it reminds me with A* algorithm, which i'm not familiar of.. currently i iterate the methode if a piece can't find a hierarchy connection to ref / master piece, and it comes that only 2 layer 'descendants' follow the master movement.. For example, in a 3 x 3 puzzle, if i move the center (piece_2_2), i would get all pieces move together. But for, say, the top left piece (piece_1_1), would only bring piece_1_2, piece_1_3, piece_2_1, piece_3_1 and piece_2_2. the rest would be left behind.. any idea for this problem? thx Guntur N. Sarwohadi On 7/11/06, Hans Wichman <[EMAIL PROTECTED]> wrote: > > Hi, > does it displace until you stop moving, or displace and screws it up > completely? > It sounds like either one of the updates you broadcast are not coming > through, or the updates are based on the wrong offsets. I assume that if > you > move a group of 3, the 2 that should be moved automatically ARE displaced > by > the same amount? > Just a shot in the dark here, but when you broadcast to the group, do you > skip the source of the event? > For example, normally in a group of 2, when you move one, you could > either: > 1) move the one you moved and dispatch an event to the other > 2) create an event and dispatch to the group > 3) move the one you moved and dispatch an event to the whole group > > the 3rd option clearly is invalid, since one piece would be moved twice. > > And with respect to the somefrogs.com, i had the same impression you had > now > "how do they do that" a few weeks ago, and now i know: one step at a > time:). > Once you have the mask, and the movement correct, you are 80% there;) > > good luck! > JC > > > On 7/11/06, Guntur N. Sarwohadi <[EMAIL PROTECTED]> wrote: > > > > Hi Hans, > > > > Hmm.. I'm not sure what was I thinking when I was writing about > > onEnterFrame, coz like you describe earlier, I didn't use any > onEnterFrame > > either.. gosh, this what happens when you don't have enough coffee with > > you > > after 2 days of no sleep :p.. well, anyway, in onMouseMove, I broadcast > to > > piece group members to move as well, with the current piece as > reference. > > Currently I calculated the distance prior broadcast and as the current > > piece > > moves, the piece group members would move in the same way without > getting > > off location... but it does.. when you move the mouse fast enough, it > > displaces.. > > > > somefrogs.com... wow! that's so cool.. How you do such a thing?.. it > > blends > > in and mostly, the pieces dont fall off when you move the mouse fast > > enough!... how the...?.. > > > > anyone got an idea with my problem? > > > > thx! > > [g] > > > > On 7/11/06, Hans Wichman <[EMAIL PROTECTED]> wrote: > > > > > > Hi, > > > with respect to the combining pieces, why would you use onEnterFrame > to > > > update the other pieces? > > > Of course I dont know the details of your implementation, but it would > > > seem > > > that if you had puzzle clumps (in want of a better term), meaning > groups > > > of > > > already combined pieces you could either temporarily parent (meaning > > > recreating) the whole clump in a parent clip, and move the parent clip > > or > > > do > > > something like: > > > > > > puzzlePiece.onMouseMove = { > > > get self.deltaxy > > > if Puzzle.getGroup(self) == null then self.move(deltaxy) > > > else Puzzle.getGroup(self).move(deltaxy); > > > } > > > > > > With respect to the masking and filling through the drawing api, my > > > routine > > > looks like (in pseudo): > > > canvas.clear() > > > canvas.beginFill() > > > drawTop(canvas);drawRight(canvas);drawBottom(canvas);drawLeft(canvas); > > > canvas.endFill(); > > > > > > each draw routine picks up where the first left off, creating a closed > > > shape > > > which can be filled as normal. > > > > > > However if you had different sides drawn as vectors in flash, and > > convert > > > them to a symbol, and put four of them together, you can't do this, > > since > > > 4 > > > symbols together of course dont make a closed 'shape'. > > > > > > One other thing though: did you know this one: http://somefrogs.com/ > > > It might be all you need. It lacks a nice bevelled edge around the > > pieces, > > > which would have been easy to add to your drawn shapes, using a > > > bevelfilter, > > > but it still is a very nice out of the box reusable puzzle component I > > > think. > > > > > > greetz > > > Hans > > > > > > > > > On 7/11/06, Hans Wichman <[EMAIL PROTECTED]> wrote: > > > > > > > > Hi, > > > > with respect to the combining pieces, why would you use onEnterFrame > > to > > > > update the other pieces? > > > > Of course I dont know the details of your implementation, but it > would > > > > seem that if you had puzzle clumps (in want of a better term), > meaning > > > > groups of already combined pieces you could either temporarily > parent > > > > (meaning recreating) the whole clump in a parent clip, and move the > > > parent > > > > clip or do something like: > > > > > > > > puzzlePiece.onMouseMove = { > > > > get self.deltaxy > > > > if Puzzle.getGroup(self) == null then self.move(deltaxy) > > > > else Puzzle.getGroup(self).move(deltaxy); > > > > } > > > > > > > > With respect to the masking and filling through the drawing api, my > > > > routine looks like (in pseudo): > > > > canvas.clear() > > > > canvas.beginFill() > > > > > drawTop(canvas);drawRight(canvas);drawBottom(canvas);drawLeft(canvas); > > > > canvas.endFill(); > > > > > > > > each draw routine picks up where the first left off, creating a > closed > > > > shape which can be filled as normal. > > > > > > > > However if you had different sides drawn as vectors in flash, and > > > convert > > > > them to a symbol, and put four of them together, you can't do this, > > > since 4 > > > > symbols together of course dont make a closed 'shape'. > > > > > > > > One other thing though: did you know this one: http://somefrogs.com/ > > > > It might be all you need. > > > > > > > > greetz > > > > Hans > > > > > > > > > > > > > > > > On 7/11/06, Guntur N. Sarwohadi <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Thanks guys for the reply. Now I have a better understanding on > how > > to > > > > > achieve the effect. Currently i'm planning to provide vector > puzzle > > > > > pieces > > > > > as mask templates first. Once that's done, I would try to start > > > working > > > > > on > > > > > dynamically drawing the puzzle nubs and cutouts.. I like the > review > > > Neo > > > > > handed. It explains a lot what Hans described... One question > > though, > > > > > whether the sides are drawn by code or provided as vectors, how > > would > > > > > you > > > > > combine 4 of them to make it as a filled masked vector shape using > > > > > drawing > > > > > api? > > > > > > > > > > One other thing, the puzzle I'm doing would allow users to move > > puzzle > > > > > pieces and combine them by side references (like, piece A is > always > > in > > > > > the > > > > > left of piece B, while D is always below A, for example). Now I've > > > > > manage to > > > > > make each piece move other pieces in one group as a whole (using > > > > > onMouseMove > > > > > for the dragger and onEnterFrame by calculating distance with the > > > > > dragger > > > > > for the 'dragee') but it seems unoptimized and often lags (which > > > shifts > > > > > pieces location) if you move the mouse fast. It would look > unsticky. > > > > > Does > > > > > anyone have an idea for a better algorithm? > > > > > > > > > > thx, > > > > > Guntur N. Sarwohadi > > > > > > > > > > PS. Neo, hows the TGB Isometric Add-On doing? :p > > > > > > > > > > On 7/11/06, neo binedell <[EMAIL PROTECTED] > wrote: > > > > > > > > > > > > Try something like this > > > > > > > > > > > > http://www.cedesign.com/cefx/reviews/reviews1_avbros.html > > > > > > > > > > > > ~neo > > > > > > > > > > > > -----Original Message----- > > > > > > From: [EMAIL PROTECTED] > > > > > > [mailto: [EMAIL PROTECTED] On Behalf Of > > > > > Guntur N. > > > > > > Sarwohadi > > > > > > Sent: 06 July 2006 03:15 AM > > > > > > To: Flashcoders@chattyfig.figleaf.com > > > > > > Subject: [Flashcoders] jigsaw puzzle piece algorithm > > > > > > > > > > > > I'm working on a puzzle game in flash, much similar to jigsaw > > > puzzles > > > > > you > > > > > > see in gameHouse or such casual game publisher. I'm having a > hard > > > time > > > > > > > > > > > trying to cut an image to make it as puzzle pieces in AS2. > > Currently > > > > > I'm > > > > > > doing it the hard way, cloning bitmapData image, and masking > > > portions > > > > > of > > > > > > the > > > > > > image. Can you cut parts on an image using bitmapData methods? > And > > > > > does > > > > > > anyone know how to create the infamous jigsaw pattern to it as > > well? > > > > > > > > > > > > Many thanks, > > > > > > Guntur N. Sarwohadi > > > > > > _______________________________________________ > > > > > > Flashcoders@chattyfig.figleaf.com > > > > > > To change your subscription options or search the archive: > > > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > > > Brought to you by Fig Leaf Software > > > > > > Premier Authorized Adobe Consulting and Training > > > > > http://www.figleaf.com > > > > > > http://training.figleaf.com > > > > > > > > > > > > _______________________________________________ > > > > > > Flashcoders@chattyfig.figleaf.com > > > > > > To change your subscription options or search the archive: > > > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > > > Brought to you by Fig Leaf Software > > > > > > Premier Authorized Adobe Consulting and Training > > > > > > http://www.figleaf.com > > > > > > http://training.figleaf.com > > > > > > > > > > > _______________________________________________ > > > > > Flashcoders@chattyfig.figleaf.com > > > > > To change your subscription options or search the archive: > > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > Brought to you by Fig Leaf Software > > > > > Premier Authorized Adobe Consulting and Training > > > > > http://www.figleaf.com > > > > > http://training.figleaf.com > > > > > > > > > > > > > > > > _______________________________________________ > > > Flashcoders@chattyfig.figleaf.com > > > To change your subscription options or search the archive: > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > Brought to you by Fig Leaf Software > > > Premier Authorized Adobe Consulting and Training > > > http://www.figleaf.com > > > http://training.figleaf.com > > > > > _______________________________________________ > > Flashcoders@chattyfig.figleaf.com > > To change your subscription options or search the archive: > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > Brought to you by Fig Leaf Software > > Premier Authorized Adobe Consulting and Training > > http://www.figleaf.com > > http://training.figleaf.com > > > _______________________________________________ > Flashcoders@chattyfig.figleaf.com > To change your subscription options or search the archive: > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > Brought to you by Fig Leaf Software > Premier Authorized Adobe Consulting and Training > http://www.figleaf.com > http://training.figleaf.com > _______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com
_______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com