Actionscript 3 - jigsaw puzzle unloading images

I am using the puzzle game sample from adobe and want to use it as part of an interactive narrative for students. However, everytime I try to go to new frame or scene the image stays with me. How do I remove or unload the puzzle frame and bitmap images so that it doesn't follow me. I am not a coder very confusing here is the entire script.
var puzzlePiecesArr:Array;
var puzzlePiecesFound:Array;
var topDepth:Number;
var totalPuzzlePieces:Number;
var correctPuzzlePieces:Number;
var puzzleBmp:BitmapData;
var intervalID:Number;
var threshold:Number;
var imagesArr:Array;
var imageLoader:Loader;
var requestURL:URLRequest;   
var puzzleBoardClip:MovieClip;
var holder:MovieClip;
init();
function init(){
    puzzleBoardClip = new MovieClip();
    addChild(puzzleBoardClip);
    totalPuzzlePieces = 8;
    //imagesArr = new Array("http://www.helpexamples.com/flash/images/image1.jpg", "http://www.helpexamples.com/flash/images/image2.jpg", "http://www.helpexamples.com/flash/images/image3.jpg");
    imagesArr = new Array("image1.jpg", "image2.jpg", "image3.jpg");
    puzzlePiecesArr = new Array();
    puzzlePiecesFound = new Array();
    correctPuzzlePieces = 0;
    threshold = 0xFFFF;
    /* Create the image Loader */
    imageLoader = new Loader();
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadImg);
    /* Create the URL Request */
    var index:Number = Math.floor(Math.random() * imagesArr.length);
    requestURL = new URLRequest(imagesArr[index]);
    // Load the image
    imageLoader.load(requestURL);
    // Setup a holdery mc to hold the puzzle pieces
    holder = new MovieClip();
    addChild(holder);
function onLoadImg(evt:Event):void{
    // Determine the width and height of each puzzle piece.
    // Each puzzle consists of 4 columns and 2 rows.
    var widthPuzzlePiece:Number = imageLoader.width / 4;
    var heightPuzzlePiece:Number = imageLoader.height / 2;
    // Draw the image from the movie clip into a BitmapData Obj.
    puzzleBmp = new BitmapData(imageLoader.width, imageLoader.height);
    puzzleBmp.draw(imageLoader, new Matrix());
    var puzzlePieceBmp:BitmapData;
    var x:Number = 0;
    var y:Number = 0;
    // Loop 8 times to make each piece
    for (var i:Number = 0; i < 8; i++)
        puzzlePieceBmp = new BitmapData(widthPuzzlePiece, heightPuzzlePiece);
        puzzlePieceBmp.copyPixels(puzzleBmp, new Rectangle(x,y,widthPuzzlePiece,heightPuzzlePiece), new Point(0,0));
        makePuzzlePiece(puzzlePieceBmp, i);
        x += widthPuzzlePiece;
        if(x >= puzzleBmp.width)
            x = 0;
            y += heightPuzzlePiece;
    makePuzzleBoard(puzzleBmp.width, puzzleBmp.height);
    arrangePuzzlePieces();
function makePuzzlePiece(puzzlePiece:BitmapData, index:int){
    var puzzlePieceClip:Bitmap = new Bitmap(puzzlePiece);
    var tmp2:MovieClip = new MovieClip();
    tmp2.addChild(puzzlePieceClip);
    tmp2.name = String(index)     // Added for Strict Mode
    holder.addChild(tmp2);
    holder.addEventListener("mouseDown", pieceMove);
    holder.addEventListener("mouseUp", pieceMove);
    puzzlePiecesArr.push(tmp2);
    // This is used to check if the same piece has been placed
    puzzlePiecesFound.push(tmp2.name);
function pieceMove(evt:Event):void{
    if(evt.type == "mouseDown"){
        evt.target.startDrag();
    } else if(evt.type == "mouseUp"){
        evt.target.stopDrag();
        var puzzlePieceIndex:Number = evt.target.name;
        // ADDED VV 4.3. Check if droppped inside of the grid
        if(evt.target.dropTarget){
            var puzzleBoardSpaceIndex:Number = evt.target.dropTarget.name;
        if(puzzlePieceIndex == puzzleBoardSpaceIndex)
            var coordinate:Point = new Point(evt.target.dropTarget.x, evt.target.dropTarget.y);
            var coordinateGlobal:Point = new Point();
            coordinateGlobal = puzzleBoardClip.localToGlobal(coordinate);
            evt.target.x = coordinateGlobal.x;
            evt.target.y = coordinateGlobal.y;
            if(puzzlePiecesFound.length != 0)
                for(var i:int = 0;i < puzzlePiecesFound.length; i++)
                    if(puzzlePiecesFound[i] == puzzlePieceIndex)
                        puzzlePiecesFound[i] = "Correct";
                        correctPuzzlePieces++;
            if(correctPuzzlePieces == totalPuzzlePieces)
                puzzleSolved();
function arrangePuzzlePieces():void
    var widthPuzzlePiece:Number = puzzlePiecesArr[0].width;
    var heightPuzzlePiece:Number = puzzlePiecesArr[0].height;
    var locationArr:Array = new Array();
    locationArr.push({x:10, y:10});
    locationArr.push({x:10 + widthPuzzlePiece + 5, y: 10});
    locationArr.push({x:10, y:10 + heightPuzzlePiece + 5});
    locationArr.push({x:10 + widthPuzzlePiece + 5, y:10 + heightPuzzlePiece + 5});
    locationArr.push({x:10, y:10 + (heightPuzzlePiece + 5) * 2});
    locationArr.push({x:10 + widthPuzzlePiece + 5, y:10 + (heightPuzzlePiece + 5) * 2});
    locationArr.push({x:10, y:10 + (heightPuzzlePiece + 5) * 3});
    locationArr.push({x:10 + widthPuzzlePiece + 5, y:10 + (heightPuzzlePiece + 5) * 3});
    var index:Number = 0;
    var coordinates:Object;
    while(locationArr.length > 0)
        coordinates = locationArr.splice(Math.floor(Math.random() * locationArr.length), 1)[0];
        puzzlePiecesArr[index].x = coordinates.x;
        puzzlePiecesArr[index].y = coordinates.y;
        index++;
function makePuzzleBoard(width:Number, height:Number):void{
    var widthPuzzlePiece:Number = width / 4;
    var heightPuzzlePiece:Number = height / 2;
    var puzzleBoardSpaceClip:MovieClip;
    var x:Number = 0;
    var y:Number = 0;
    for(var i:Number = 0; i < 8; i++)
        puzzleBoardSpaceClip = new MovieClip();
        puzzleBoardSpaceClip.graphics.lineStyle(0);
        puzzleBoardSpaceClip.graphics.beginFill(0xFFFFFF,100);
        puzzleBoardSpaceClip.graphics.lineTo(widthPuzzlePiece,0);
        puzzleBoardSpaceClip.graphics.lineTo(widthPuzzlePiece,heightPuzzlePiece);
        puzzleBoardSpaceClip.graphics.lineTo(0,heightPuzzlePiece);
        puzzleBoardSpaceClip.graphics.lineTo(0,0);
        puzzleBoardSpaceClip.graphics.endFill();
        puzzleBoardSpaceClip.x = x;
        puzzleBoardSpaceClip.y = y;
        x += widthPuzzlePiece;
        if(x >= width)
            x = 0;
            y += heightPuzzlePiece;
        puzzleBoardSpaceClip.name = String(i);    // Added for Strict Mode
        puzzleBoardClip.addChild(puzzleBoardSpaceClip);
    puzzleBoardClip.x = 350;
    puzzleBoardClip.y = 200 - puzzleBoardClip.height/2;
function puzzleSolved():void{
    holder.visible = false;
    var tmp:Bitmap = new Bitmap(puzzleBmp);
    puzzleBoardClip.addChild(tmp);
    var timer:Timer = new Timer(50);
    timer.start();
    timer.addEventListener("timer", puzTrash);
function puzTrash(evt:Event):void{
    if(threshold > 0xFFFFFF)
        threshold = 0xFFFFFF;
        evt.target.stop();
        init();
    puzzleBmp.threshold(puzzleBmp, new Rectangle(0,0, puzzleBmp.width, puzzleBmp.height), new Point(0,0), "<=", 0xFF000000 | threshold);
    threshold *= 1.2;

When you create dynamic content, it does not have a timeline home unless you place it in something that's anchored to the timeline.  What you could do is place the puzzle inside of an empty movieclip that you manually incorporate into the timeline rather than dynamically which you currently do.  For the code you show, you may be able to eliminate this...
var puzzleBoardClip:MovieClip;
and these...
puzzleBoardClip = new MovieClip();
addChild(puzzleBoardClip);
and create an empty movieclip with that instance name that you only allow to exist in the frames where you intend the puzzle to be visible.
Instead, you could also try using: removeChild(puzzleBoardClip);  wherever it is you have code where you would want to make the puzzle no longer visible.

Similar Messages

  • The Infamous Jigsaw Puzzle...

    Hey everybody,
    So I came along an old thread in the 'Flash' section of the board that was asking about a link to a jigsaw puzzle tutorial (Action Script 1). Here is the link:
    http://www.adobe.com/support/flash/action_scripts/actionscript_tutorial/actionsc ript_tutorial02.html
    Now, that was like 3 years ago it was posted, LOL! I'm just wondering if anybody can chime in nowadays with an answer to the question that was asked. How do you switch the main image of the puzzle? Do you have to create the pieces from scratch?
    Take a look and let me know,
    Thanks as always!

    I'm not sure you do actually. When I clicked into a single piece and played around with it, I discovered that each piece seems to be filled with a bitmap image instead of a solid colour. If you click into a single piece (it's a movie clip) you'll see that the piece is a bitmap, but, when I grabbed the edge of that bitmap and stretched it out of shape, I noticed that the entire image is somehow masked within that piece.

  • Best way to transform a jigsaw puzzle to landscape

    Hello,
    I am trying to puppet warp a big square that looks like a complete jigsaw puzzle and warp it to a rolling hill landscape. What befuddles me is how to rotate the plane around its center? Another words, if I put a skewer into the middle of the plane or puzzle, and take the corner and rotate it around that axis or the in 3D talk it would be the y axis. Every place I put the axis poin and rotate the plane, it rotates in the z axis, or around like a clock. So, to clarify, if I could put my palm down onto teh center of this plane, and with the other hand, take the corner of this plane and spin it around a bit, how could I do this move in Photoshop?
    Do I just continue to warp it so it has that appearance, or can I rotate it as shown in my image?? I just want the perspective to be more like the puzzle is coming out of the lower right corner and extending out to the top left corner perspective. instead of cming from the bottom and out to background as it is here. Thank you.
    Laurie

    Why don't you use info objects? For example your table is having col1(number),col2(text/varchar),col3(text/varchar), create an info object like this,
    class MytableInfo implements java.io.Serializable {
    private int col1;
    private String col2;
    private String col3;
    public MytableInfo(int col1,String col2,String col3) {
    this.col1=col1;
    this.col2=col2;
    this.col3=col3;
    public int getCol1() {
    return col1;
    //Getter for other two properties too.
    and in your ResultSet class,
    Vector v = new Vector();
    while(rs.next()) v.add(new MytableInfo(rs.getInt(1),rs.getString(2),rs.getString(3));
    return v;
    So, it will be easier for retrieving the values later and it is a clean way of doing it.
    Sudha

  • Jigsaw puzzle in flex

    Hi all,
    How can i do jigsaw puzzle using flex?For this i got source image from drupal,is it possible to do jigsaw puzzle in flex3?

    Hi,
    See this thread for some ideas and also the puzzle.psd (post 5) that used to ship with photoshop.
    http://forums.adobe.com/message/4593630#4593630

  • Help with unloading images AS3

    Please can anyone help me. I am new to Action Script and flash and am having a nightmare unloading images. The code below works but I keep getting the following error messages:
    TypeError: Error #2007: Parameter child must be non-null.
    at flash.display::DisplayObjectContainer/removeChild()
    at index_fla::MainTimeline/clickSection()
    ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
    at flash.display::DisplayObjectContainer/removeChild()
    at index_fla::MainTimeline/clickSection()
    Any help with this would be much appreciated.
    var ImgReq01:URLRequest=new URLRequest("images/home/01.jpg");
    var ImgReq02:URLRequest=new URLRequest("images/home/02.jpg");
    var ImgReq03:URLRequest=new URLRequest("images/home/03.jpg");
    var ImgReq04:URLRequest=new URLRequest("images/home/04.jpg");
    var ImgReq05:URLRequest=new URLRequest("images/home/05.jpg");
    var imgList:Array=[ImgReq01,ImgReq02,ImgReq03,ImgReq04,ImgReq05];
    var imgRandom = imgList[Math.floor(Math.random()* imgList.length)];
    var imgLoader:Loader = new Loader();
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    imgLoader.load(imgRandom);
    function onComplete(event:Event):void
      var randomImage:Bitmap = Bitmap(imgLoader.content);
      randomImage.x=187.4;
      randomImage.y=218.1;
      addChild(randomImage);
    //handle events for info buttons...
    information. addEventListener (MouseEvent.CLICK, clickSection);
    home. addEventListener (MouseEvent.CLICK, clickSection);
    galleries. addEventListener (MouseEvent.CLICK, clickSection);
    function clickSection (evtObj:MouseEvent) {
    //Trace shows what's happening.. in the output window
    trace ("The "+evtObj.target.name+" button was clicked")
    //go to the section clicked on...
    gotoAndStop (evtObj.target.name)
    // this line is causing errors when navigating between the gallery and information buttons
    var Image:Bitmap = Bitmap(imgLoader.content);
      removeChild(Image);

    you really should be adding the loader to the displaylist, not the content.
    try:
    var ImgReq01:URLRequest=new URLRequest("images/home/01.jpg");
    var ImgReq02:URLRequest=new URLRequest("images/home/02.jpg");
    var ImgReq03:URLRequest=new URLRequest("images/home/03.jpg");
    var ImgReq04:URLRequest=new URLRequest("images/home/04.jpg");
    var ImgReq05:URLRequest=new URLRequest("images/home/05.jpg");
    var imgList:Array=[ImgReq01,ImgReq02,ImgReq03,ImgReq04,ImgReq05];
    var imgRandom = imgList[Math.floor(Math.random()* imgList.length)];
    var imgLoader:Loader = new Loader();
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    imgLoader.load(imgRandom);
    function onComplete(event:Event):void
    imgLoader.x=187.4;
    imgLoader.y=218.1;
      addChild(imgLoader);
    //handle events for info buttons...
    information. addEventListener (MouseEvent.CLICK, clickSection);
    home. addEventListener (MouseEvent.CLICK, clickSection);
    galleries. addEventListener (MouseEvent.CLICK, clickSection);
    function clickSection (evtObj:MouseEvent) {
    //Trace shows what's happening.. in the output window
    trace ("The "+evtObj.target.name+" button was clicked")
    //go to the section clicked on...
    gotoAndStop (evtObj.target.name)
    // this line is causing errors when navigating between the gallery and information buttons
    if(this.contains(imgLoader){
      removeChild(imgLoader);

  • This message contains unloaded images... getting it to stop!

    Many new messages in my Inbox come in, with a line across the stop, saying, "This message contains unloaded images." And there's a button to the right, "Load Images" that I need to push in order to load any images in that email.
    How do I get Mail to stop doing that? I want Mail to load every. single. image. All the time. Always and forever. Yes, even if it's detrimental to my moral fiber.

    Keep in mind that you only just now turned that feature off. It will take a few weeks for them to catch up with you, and once they do you can't reverse the procedure because they'll already know that your e-mail address is a good one to use for sending their spam to. Multiply the amount of spam you'll get by at least a factor of 10. You didn't think that Apple was turning off these images just to ruin your day did you? Each image contains a bot that when loaded goes back to the spammers and tells them that your e-mail address is a 'real' e-mail address that they can spam. But it's your computer, your spam, enjoy...

  • Jigsaw puzzle shows up weird in preview and publish. Help!

    I'm using a trial version of Captivate 8, and I added a Jigsaw Puzzle interaction, with no funky settings. I didn't resize or even move the interaction either. It's sitting in the middle of my slide.
    However, whenever I preview or publish, the many of the pieces of the puzzle are scattered off-screen and I can't even see them, let alone move then in order to complete the puzzle.
    Here's a sample of my preview (the puzzle is supposed to have 16 pieces). Doesn't look any better in the "1024" view.
    Did anyone else encounter this? Or know how to fix it?

    Interesting...you're right! I can finally see all of the pieces.
    I wonder if there's a way to get rid of that hint picture though. I unchecked the "hint" box but it's still there.
    Thanks!

  • Playing a jigsaw puzzle on my ipad4, after awhile the screen starts feeling warm to the touch?

    When playing a jigsaw puzzle on my ipad 4, the screen feels warm to the touch.

    That's normal. It's only abnormal if it gets too hot to hold.

  • This message contains unloaded images

    Hi,
    When using Mail, I constantly have to load the images embedded in the mail myself. I come from Leopard and I didnt have this problem there. I have checked the box in the mail prefs (read html by default or something) and I also have filled in the correct IP address in DNS servers in Network prefs but nothing helps. Some e-mails are not affected but most of them are. I'm using an IMAP Gmail account. Thanks for your help. The reason I downgraded to Tiger is 'cause my swopped MBP came with Tiger and my previous iMac had Leopard. I'm gonna be using Tiger until I'm ready for 10.6. Just in case someone wonders..
    Thanks for your help!
    Mail version: 2.1.3
    According to Software Update, I am up to date..
    I'm connected to the internet through a router with Airport. No Proxy
    If "Display remote images in HTML messages" is checked, some mails still won't display the images. Other mails are affected by this checkbox.
    Leopard didnt have this issue!
    Is this some junk filter issue?
    Message was edited by: A Duet

    proxy is disabled
    few more links:
    http://merv.numark.com/sendstudionx/link.php?M=293701&N=246&L=80&F=H
    http://dotm1.net/1823545/581052961/21746098/873943/107284/0/t2.aspx
    http://visitor.constantcontact.com/d.jsp?p=un&v=001pNRQhF_J28f5nY5P3QQwyVh2HpwCr 7OUcQi9oP5SgjwgTnJ2oZv0L69z9bcxAx9D
    http://www.abconcerts.be/concerts/concertinfo.html?l=1&m=4580&c=102014&i=0.0
    I got these by right-clicking the unloaded image and by selecting: COPY LINK

  • Unloaded images in mac mail

    My mac mail recently has been giving me the "this message contains unloaded images" every time I get an email unless it is just text. I haven't changed any preferences or security of any kind. Does anyone else have this problem?

    I don't think it's a problem, because those images are probably from an HTML email message and your Preferences are probably set not to load them when opening a message. If that's the case, there should be a button at the top right of the message window to load those images.
    Also, are you still running 10.4.7 as your profile states? If so, you need to upgrade to 10.4.11 immediately and update your profile; this will fix a number of bugs an security vulnerabilities, as well as letting you run the latest version of Safari.
    Mulder

  • TS1702 Why am I unable to in-app purchase more features on Jigsaw Puzzle app?

    I purchased Jigsaw Puzzles months ago and have always been able to purchase more puzzles from the app.  Yesterday, when I try to purchase more, I received a message advised "In-app purchases are not allowed".  Why???  I have the latest software and I am able to purchased from other apps.

    Settings>General>Restrictions>Allowed Content>In-App Purchases. Did you turn off in app purchases?

  • Help with unloading images

    Please can anyone help me. I am new to Action Script and flash and am having a nightmare unloading images. The code below works but I keep getting the following error messages:
    TypeError: Error #2007: Parameter child must be non-null.
    at flash.display::DisplayObjectContainer/removeChild()
    at index_fla::MainTimeline/clickSection()
    ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
    at flash.display::DisplayObjectContainer/removeChild()
    at index_fla::MainTimeline/clickSection()
    Any help with this would be much appreciated.
    var ImgReq01:URLRequest=new URLRequest("images/home/01.jpg");
    var ImgReq02:URLRequest=new URLRequest("images/home/02.jpg");
    var ImgReq03:URLRequest=new URLRequest("images/home/03.jpg");
    var ImgReq04:URLRequest=new URLRequest("images/home/04.jpg");
    var ImgReq05:URLRequest=new URLRequest("images/home/05.jpg");
    var imgList:Array=[ImgReq01,ImgReq02,ImgReq03,ImgReq04,ImgReq05];
    var imgRandom = imgList[Math.floor(Math.random()* imgList.length)];
    var imgLoader:Loader = new Loader();
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    imgLoader.load(imgRandom);
    function onComplete(event:Event):void
      var randomImage:Bitmap = Bitmap(imgLoader.content);
      randomImage.x=187.4;
      randomImage.y=218.1;
      addChild(randomImage);
    //handle events for info buttons...
    information. addEventListener (MouseEvent.CLICK, clickSection);
    home. addEventListener (MouseEvent.CLICK, clickSection);
    galleries. addEventListener (MouseEvent.CLICK, clickSection);
    function clickSection (evtObj:MouseEvent) {
    //Trace shows what's happening.. in the output window
    trace ("The "+evtObj.target.name+" button was clicked")
    //go to the section clicked on...
    gotoAndStop (evtObj.target.name)
    // this line is causing errors when navigating between the gallery and information buttons
    var Image:Bitmap = Bitmap(imgLoader.content);
      removeChild(Image);

    you really should be adding the loader to the displaylist, not the content.
    try:
    var ImgReq01:URLRequest=new URLRequest("images/home/01.jpg");
    var ImgReq02:URLRequest=new URLRequest("images/home/02.jpg");
    var ImgReq03:URLRequest=new URLRequest("images/home/03.jpg");
    var ImgReq04:URLRequest=new URLRequest("images/home/04.jpg");
    var ImgReq05:URLRequest=new URLRequest("images/home/05.jpg");
    var imgList:Array=[ImgReq01,ImgReq02,ImgReq03,ImgReq04,ImgReq05];
    var imgRandom = imgList[Math.floor(Math.random()* imgList.length)];
    var imgLoader:Loader = new Loader();
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    imgLoader.load(imgRandom);
    function onComplete(event:Event):void
    imgLoader.x=187.4;
    imgLoader.y=218.1;
      addChild(imgLoader);
    //handle events for info buttons...
    information. addEventListener (MouseEvent.CLICK, clickSection);
    home. addEventListener (MouseEvent.CLICK, clickSection);
    galleries. addEventListener (MouseEvent.CLICK, clickSection);
    function clickSection (evtObj:MouseEvent) {
    //Trace shows what's happening.. in the output window
    trace ("The "+evtObj.target.name+" button was clicked")
    //go to the section clicked on...
    gotoAndStop (evtObj.target.name)
    // this line is causing errors when navigating between the gallery and information buttons
    if(this.contains(imgLoader){
      removeChild(imgLoader);

  • Email Issue - How to turnoff "This message contains unloaded images"?

    Email Issue - How to turnoff "This message contains unloaded images"? and having to hit "Load Images" every time I view email msg.

    Mail > Preferences > Viewing
    Select "Display remote images in HTML messages"

  • TS1702 I own a jigsaw puzzle that was made for iPad.  It keeps freezing up on me?.

    I own a jigsaw puzzle made for iPad and it keeps freezing up on me.  Why

    Have you tried a Rese?t [Hold the Home and Sleep/Wake buttons down together for 10 seconds or so (until the Apple logo appears) and then release. The screen will go blank and then power ON again in the normal way.] It is app and data safe!

  • My itunes acct was charged for jigsaw puzzles I had to reinstall

    My I tunes acct was charged for jigsaw puzzles I had to reinstall

    Did you download using the same Apple ID for both?
    FOR ASSISTANCE WITH ORDERS - iTUNES STORE CUSTOMER SERVICE
    For assistance with billing questions or other order inquiries, please refer to our online support page by clicking here: http://www.apple.com/support/itunes/store/. If you cannot find the answers you are seeking in our robust knowledge base, you can contact us by visiting the following URL http://www.apple.com/support/itunes/store/, clicking on the appropriate Customer Service topic, then using the contact button or email form at the bottom of the page. Responses to emails will be provided as soon as possible.
    Phone: 800-275-2273 How to reach a live person: Press 0 four times
    Hours of Operation: Mon-Fri: 9am-5pm ET
    Email: [email protected]
    How to report an issue with Your iTunes Store purchase
    http://support.apple.com/kb/HT1933
    iTunes Purchase Problems: How to Report a Problem to iTunes Support
    http://tinyurl.com/7tscpa7
    iOS: Troubleshooting applications purchased from the App Store
    http://support.apple.com/kb/TS1702?viewlocale=en_US&locale=en_US
    How to Get a Refund from the App Store
    http://gizmodo.com/5886683/how-to-get-a-refund-from-the-app-store
    Getting Refunds for your iTunes Store Purchases
    http://www.labnol.org/software/itunes-app-store-refunds/13838/
    Canceling a Digital Subscription
    http://gadgetwise.blogs.nytimes.com/2011/10/14/qa-canceling-a-digital-subscripti on/
     Cheers, Tom

Maybe you are looking for