الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في استرجاع المتغير الداخلي في كلاس

مغلق
بدأه loloo_min في 11 يناير 2008 · 1 رد · 752 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني الأفاضل

أنا أواجه مشكلة في برمجة اللعبة تبعي

< المشكلة إني عندي ميثود داخل كلاس لنقل <ب> وهذه الميثود لنقل <هـ> تحتوي على متغير داخلي < د

<يعني كل ماانادي الميثود<هـ>, تنشيء متغير داخلي جديد<د> للكلاس <ب

<ولكن بما أن المتغير<د> ليس عام في الكلاس<ب> بل داخلي للميثود<هـ

<فإني لاأستطيع الرجوع للمتغير<د> من كلاس اخر <ج

<طبعا في حال انشاء نسخة من الكلاس <ب> في -الكلاس <ج

ولحل هذه المشكلة عرفت متغير <و> للكلاس <ب> والمعرف في الفيلد لذلك الكلاس

<بحيث اني اضفت سطر داخل الميثود <هـ> يحفظ قيمة المتغير الداخلي <د> داخل المتغير <و> في كل مرة ندعو الميثود <هـ

<والحمدلله مشي الحال وسرت اقدر ادخل عالمتغير <د

:بس المشكلة التانية اللي بتواجهني حاليا هي

عندما انادي الميثود<هـ> في الكلاس <ج> لأكثر من مرة

commandAction(Command, Item) فإني أحتاج لان اختبر كل نسخة للمتغير <د> في الميثود

<ولكن للأسف فإن الإختبار يتم بناء على قيمة المتغير<د> الأخيرة فقط ويتم مسح جميع القيم الأخرى للمتغير<د

<أعلم أن ذلك بديهي لأن آخر تخزين لقيمة <د> تم في آخر استدعاء للميثود <هـ

ولكن مشكلتي هي ماالحل؟

شكرا جزيلا للاهتمام واتمام القراءة وأأسف للإطالة ولكن لتوضيح المشكلة بشكل أعمق

هنا نسخة من الاكواد اللي فيها المشكلة

الكلاس Button

addButtonToCenter الذي يحوي الميثود <هـ> والتي هنا

import javax.microedition.lcdui.*;

public class Button implements ItemCommandListener

{

protected StringItem item;

public Button(){

item = new StringItem("", null, Item.BUTTON);

}

public void addButtonToCenter(String name,boolean ln, Form form) {

Command cmmd = new Command(name, Command.ITEM, 1);

StringItem item3 = new StringItem(name, null, Item.BUTTON);

item3.setDefaultCommand(cmmd);

item3.setItemCommandListener(this);

int flags = Item.LAYOUT_2 | Item.LAYOUT_CENTER | Item.LAYOUT_EXPAND;

if (ln) flags |= Item.LAYOUT_NEWLINE_AFTER;

item3.setLayout(item3.getLayout() | flags);

item =item3;

form.append(item);

}

public void commandAction(Command c, Item i)

{

if(item.getLabel().equals("Level 1"))

try

{

Start.level1.displayInfo(Start.level1.form);

/**

Form a = new Form("A");

GameMidlet.display.setCurrent(a);

**/

}

catch(Exception e){

String gripe = "Error:" + e;

Alert a = new Alert("Error",gripe,null,AlertType.ERROR);

GameMidlet.display.setCurrent(a);

}

else{

if(item.getLabel().equals("Level 2"))

try

{

Start.level2.displayInfo(Start.level2.form);

/**

Form a = new Form("A");

GameMidlet.display.setCurrent(a);

**/

}

catch(Exception e){

String gripe = "Error:" + e;

Alert a = new Alert("Error",gripe,null,AlertType.ERROR);

GameMidlet.display.setCurrent(a);

}

}

}

}

Start الكلاس

addButtonToCenter هو اللا بيدعو الميثود <هـ> والتي هنا هي الميثود

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author Alla

*/

import javax.microedition.lcdui.*;

public class Start extends GamesScreens

{

protected static Level1 level1;

protected static Level2 level2;

protected static Button button;

protected static StringItem lev1=new StringItem("", null, Item.BUTTON);

protected static StringItem lev2=new StringItem("", null, Item.BUTTON);

public Start()

{

super("Start");

button = new Button();

button.addButtonToCenter("Level 1",false, form);

//lev1 = button.item;

button.addButtonToCenter("Level 2",false, form);

//lev2 = button.item;

level1 = new Level1();

level2 = new Level2();

}

}

يمكن تلاحظو السطرين المحذوفة

//lev1 = button.item;

//lev2 = button.item;

item والتي حاولت فيها حفظ قيمة المتغير <د> والتي هنا

Button داخل المتغير العام lev1 للكلاس <ب> والذي هنا

Level 1ولكنها فشلت فعندما اضغط على الزر Level 1 او الزر Level 2 فكليهما يقودني لللكلاس

شكرا جزيلا وعفوا على الإطالة

تم تعديل هذه المشاركة بواسطة loloo_min في 11 يناير 2008 في 03:47

#2

عفوا الموضوع وضع بالخطأ في هذا القسم المفروض أن يكون في قسم

J2ME

المعذرة على الإزعاج

ملاحظة: لمن يريد الرد على

الموضوع أعيد وضعه في قسم ال

J2ME

شكرا

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…