⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buycreditscreen.java

📁 j2me 手机游戏 网络游戏 完整代码
💻 JAVA
字号:
// Copyright 2002 Nokia Corporation. 
// 
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER, 
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS 
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE 
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE 
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO 
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR 
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE 
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT 
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED 
// BY THIRD PARTIES 
// 
// Furthermore, information provided in this source code is preliminary, 
// and may be changed substantially prior to final release. Nokia Corporation 
// retains the right to make changes to this source code at 
// any time, without notice. This source code is provided for informational 
// purposes only. 
// 
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
// 
// A non-exclusive, non-transferable, worldwide, limited license is hereby 
// granted to the Licensee to download, print, reproduce and modify the 
// source code. The licensee has the right to market, sell, distribute and 
// make available the source code in original or modified form only when 
// incorporated into the programs developed by the Licensee. No other 
// license, express or implied, by estoppel or otherwise, to any other 
// intellectual property rights is granted herein.


package example.fruitmachine;

import javax.microedition.lcdui.*;
import java.io.IOException;


class BuyCreditScreen
    extends Form
    implements CommandListener, HttpPosterListener
{
    private final FruitMachineMIDlet midlet;
    private final HttpPoster httpPoster;
    private final Account account;
    private final StringItem creditItem;
    private final TextField purchaseField;
    private final Command buyCommand;
    private final Command cancelCommand;
    private volatile boolean readyForInput = true;

    private static final int DEFAULT_PURCHASE = 10;


    BuyCreditScreen(FruitMachineMIDlet midlet,
                    HttpPoster httpPoster,
                    Image logoImage,
                    Account account)
    {
        super("Buy Credit");
        this.midlet = midlet;
        this.httpPoster = httpPoster;
        this.account = account;

        append(logoImage);
        creditItem = new StringItem("Credit:", "");
        append(creditItem);
        purchaseField = new TextField("Buy:", "", 3, TextField.NUMERIC);
        append(purchaseField);
        buyCommand = new Command("Buy", Command.SCREEN, 2);
        addCommand(buyCommand);
        cancelCommand = new Command("Cancel", Command.EXIT, 2);
        addCommand(cancelCommand);

        setCommandListener(this);
    }

    
    public void commandAction(Command c, Displayable d)
    {
        if (!readyForInput)
        {
            return;
        }

        if (c == buyCommand)
        {
            // start the buy
            try
            {
                int purchase = Integer.parseInt(purchaseField.getString());
                sendBuyRequest(purchase);
                readyForInput = false;
            }
            catch (NumberFormatException e)
            {
                ErrorScreen.showError("Purchase must be a whole number");
                purchaseField.setString(Integer.toString(DEFAULT_PURCHASE));
            }
            catch (IOException e)
            {
                ErrorScreen.showError("Communications error");
            }
        }
        else if (c == cancelCommand)
        {
            midlet.buyCreditScreenDone();
        }
    }


    void updateValues()
    {
        creditItem.setText(Integer.toString(account.getCredit()));
        purchaseField.setString(Integer.toString(DEFAULT_PURCHASE));
    }


    private void sendBuyRequest(int purchase)
        throws IOException
    {
        ValueGenerator generator = new ValueGenerator();
        generator.addValue("buy");
        generator.addValue(Integer.toString(purchase));
        String dataStr = generator.getString();
        httpPoster.sendRequest(dataStr, this);
    }


    public void receiveHttpResponse(String responseStr)
    {
        ValueParser parser = new ValueParser(responseStr);
        String response = parser.getNextValue();
        if ("buy-OK".equals(response))    // no harm if response is null
        {
            try
            {
                int credit = parser.getNextIntValue();
                account.setCredit(credit);
                midlet.buyCreditScreenDone();
            }
            catch (NumberFormatException e)
            {
                ErrorScreen.showError("Server error");
            }
        }
        else if ("buy-error".equals(response))
        {
            String errorMessage = parser.getNextValue();
            if (errorMessage != null)
            {
                ErrorScreen.showError(errorMessage);
            }
            else
            {
                ErrorScreen.showError("Server error");
            }
        }
        else
        {
            ErrorScreen.showError("Server error");
        }
        readyForInput = true;
    }


    public void handleHttpError(String errorStr)
    {
        ErrorScreen.showError("Error communicating with server");
        readyForInput = true;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -