Сохранение данных из DDBB в класс AS

i am trying to make a "game" in Flex similar to Shake&Fidget. I'm saving all the user data in a MySQL database and I retrieve the data using ZendFramework (PHP). I thought of saving all the user and character info I'm going to need into am AS class so I can use that data in every view.

Данные, полученные из базы данных, верны. Я смог загрузить его в своих мобильных устройствах, но каждый раз, когда я менял взгляды, он снова спрашивал об этом, поэтому я подумал о том, чтобы сделать эти классы, чтобы просто спросить информацию.

Я опубликую здесь файлы, так что это все более ясно.

ViewNavigatorAplication.mxml



    

Первый вид переходит на экран входа в систему, он работает нормально. Поэтому я перейду к представлению, которое загружает и «пытается» показать символьные данные.

char_panel.mxml



    


    
    


    
    
    
    
    <!-- Place non-visual elements (e.g., services, value objects) here -->







Что касается классов AS:

Character.as

package valueObjects{
import mx.data.ChangedItems;
import mx.messaging.channels.StreamingAMFChannel;

import spark.components.Label;
import spark.skins.spark.StackedFormHeadingSkin;

[Bindable]
public class  Character
{
    private var _name:String;
    private var _stats:FinalStats;
    private var _gear:GearList;

    public function Character()
    {
        this._stats = new FinalStats();
        this._gear = new GearList();
    }
    public function modStats(str:int,intel:int,cha:int,sta:int,dex:int):void{
        this._stats.modStr(str);
        this._stats.modInt(intel);
        this._stats.modCha(cha);
        this._stats.modVit(sta);
        this._stats.modDex(dex);
    }
    public function getStats():Array{
        var aStats:Array;
        aStats["str"]=this._stats.getStr();
        aStats["int"]=this._stats.getInt();
        aStats["cha"]=this._stats.getCha();
        aStats["sta"]=this._stats.getVit();
        aStats["dex"]=this._stats.getDex();
        return aStats;
    }
    public function setName(charName:String):void{
        this._name = charName;
    }
    public function getName():String{
        return this._name;
    }
    public function showStats(lbSTR:Label, lbDEX:Label, lbINT:Label, lbCHA:Label, lbVIT:Label):void{
        lbSTR.text = "" + this._stats.getStr();
        lbDEX.text = "" + this._stats.getDex();
        lbINT.text = "" + this._stats.getInt();
        lbCHA.text = "" + this._stats.getCha();
        lbVIT.text = "" + this._stats.getVit();
    }
}}

FinalStats.as

package valueObjects{

public class FinalStats
{
    private var str:int = 0;
    private var intel:int = 0;
    private var cha:int = 0;
    private var sta:int = 0;
    private var dex:int = 0;
    public function FinalStats()
    {
    }

    public function getStr():int{
        return this.str;
    }
    public function modStr(x:int):void{
        this.str+=x;
    }
    public function getDex():int{
        return this.dex;
    }
    public function modDex(x:int):void{
        this.dex+=x;
    }
    public function getInt():int{
        return this.intel;
    }
    public function modInt(x:int):void{
        this.intel+=x;
    }
    public function getCha():int{
        return this.cha;
    }
    public function modCha(x:int):void{
        this.cha+=x;
    }
    public function getVit():int{
        return this.sta;
    }
    public function modVit(x:int):void{
        this.sta+=x;
    }
}

}

И последний GearList.as

package valueObjects{
import mx.data.ChangedItems;
import mx.messaging.channels.StreamingAMFChannel;

import spark.components.Label;
import spark.skins.spark.StackedFormHeadingSkin;

public class GearList
{
    private var _headID:String;
    private var _shoulderID:String;
    private var _chestID:String;
    private var _bracersID:String;
    private var _glovesID:String;
    private var _pantsID:String;
    private var _bootsID:String;
    private var _main_handID:String;
    private var _off_handID:String;

    public function GearList()
    {
    }

    public function showStats(lbHead:Label, lbShoulder:Label, lbChest:Label, lbBracer:Label, lbGlove:Label, lbPants:Label, lbBoots:Label, lbMainHand:Label, lbOffHand:Label):void{
        lbHead.text = ""+this._headID;
        lbShoulder.text = ""+this._shoulderID;
        lbChest.text = ""+this._chestID;
        lbBracer.text = ""+this._bracersID;
        lbGlove.text = ""+this._glovesID;
        lbPants.text = ""+this._pantsID;
        lbBoots.text = ""+this._bootsID;
        lbMainHand.text = ""+this._main_handID;
        lbOffHand.text = ""+this._off_handID;
    }

    public function getOff_handID():String
    {
        return _off_handID;
    }

    public function setOff_handID(value:String):void
    {
        _off_handID = value;
    }

    public function getMain_handID():String
    {
        return _main_handID;
    }

    public function setMain_handID(value:String):void
    {
        _main_handID = value;
    }

    public function getBootsID():String
    {
        return _bootsID;
    }

    public function setBootsID(value:String):void
    {
        _bootsID = value;
    }

    public function getPantsID():String
    {
        return _pantsID;
    }

    public function setPantsID(value:String):void
    {
        _pantsID = value;
    }

    public function getGlovesID():String
    {
        return _glovesID;
    }

    public function setGlovesID(value:String):void
    {
        _glovesID = value;
    }

    public function getBracersID():String
    {
        return _bracersID;
    }

    public function setBracersID(value:String):void
    {
        _bracersID = value;
    }

    public function getChestID():String
    {
        return _chestID;
    }

    public function setChestID(value:String):void
    {
        _chestID = value;
    }

    public function getShoulderID():String
    {
        return _shoulderID;
    }

    public function setShoulderID(value:String):void
    {
        _shoulderID = value;
    }

    public function getHeadID():String
    {
        return _headID;
    }

    public function setHeadID(value:String):void
    {
        _headID = value;
    }

}}

Если вы все еще здесь, у вас есть все мое уважение: D Когда я попробую, я получаю следующую ошибку. Я пробовал в char_panel.mxml, используя Character :: modStats (...) вместо data.modStats, я поставлю журнал ошибок под этим.

Журнал ошибок при использовании data.modStats (...)

TypeError: Ошибка # 1006: modStats не является функцией.     at views :: char_panel/updateStats() [C: \ Users \ Zebrah \ Rotr \ Rotr \ src \ views \ char_panel.mxml: 23]     at views :: char_panel/onStatsResult() [C: \ Users \ Zebrah \ Rotr \ Rotr \ src \ views \ char_panel.mxml: 39]     на flash.events::EventDispatcher/dispatchEventFunction ()     на flash.events::EventDispatcher/dispatchEvent ()     в mx.rpc :: CallResponder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ CallResponder.as: 122]     в mx.rpc :: AsyncToken/http: //www.adobe.com/2006/flex/mx/internal :: applyResult() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AsyncToken.as: 239]     в mx.rpc.events::ResultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ тх \ RPC \ события \ ResultEvent.as: 207]     в mx.rpc :: AbstractOperation/http: //www.adobe.com/2006/flex/mx/internal :: dispatchRpcEvent() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AbstractOperation.as: 244]     в mx.rpc :: AbstractInvoker/http: //www.adobe.com/2006/flex/mx/internal :: resultHandler() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AbstractInvoker.as: 318]     at mx.rpc :: Responder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ Responder.as: 56]     в mx.rpc :: AsyncRequest/confirm() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ AsyncRequest.as: 84]     в NetConnectionMessageResponder/resultHandler() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ messaging \ channels \ NetConnectionChannel.as: 552]     в mx.messaging :: MessageResponder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ messaging \ MessageResponder.as: 235]

Журнал ошибок с использованием Character :: modStats (...)

Ошибка: Ошибка # 1034: Ошибка типа Coercion: невозможно преобразовать valueObjects :: Character $ в пространство имен.     at views :: char_panel/updateStats() [C: \ Users \ Zebrah \ Rotr \ Rotr \ src \ views \ char_panel.mxml: 23]     at views :: char_panel/onStatsResult() [C: \ Users \ Zebrah \ Rotr \ Rotr \ src \ views \ char_panel.mxml: 39]     на flash.events::EventDispatcher/dispatchEventFunction ()     на flash.events::EventDispatcher/dispatchEvent ()     в mx.rpc :: CallResponder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ CallResponder.as: 122]     в mx.rpc :: AsyncToken/http: //www.adobe.com/2006/flex/mx/internal :: applyResult() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AsyncToken.as: 239]     в mx.rpc.events::ResultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ тх \ RPC \ события \ ResultEvent.as: 207]     в mx.rpc :: AbstractOperation/http: //www.adobe.com/2006/flex/mx/internal :: dispatchRpcEvent() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AbstractOperation.as: 244]     в mx.rpc :: AbstractInvoker/http: //www.adobe.com/2006/flex/mx/internal :: resultHandler() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ \ RPC AbstractInvoker.as: 318]     at mx.rpc :: Responder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ Responder.as: 56]     в mx.rpc :: AsyncRequest/confirm() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ AsyncRequest.as: 84]     в NetConnectionMessageResponder/resultHandler() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ messaging \ channels \ NetConnectionChannel.as: 552]     в mx.messaging :: MessageResponder/result() [E: \ dev \ 4.5.1 \ frameworks \ projects \ rpc \ src \ mx \ messaging \ MessageResponder.as: 235]

Заранее благодарю всех, кто до сих пор в этой подсказке кричит: D я бы оценил любые предложения, которые вы можете сделать.

0
nl ja de

2 ответы

нормально, поэтому причина, по которой он не работает с данными, - это событие, хотя вы сказали

data = new Character();

данные по-прежнему фактически являются объектом (который теперь выглядит как персонаж). заставить его работать

var myChar:Character = Character(data);//cast it to a Character and it now knows the method
myChar.modStats()

причина, по которой другой вызов не срабатывал, - это то, как вы его назвали:

Character::modStats(...)

Это говорит о поиске метода modStats в пространстве имен Character. Вместо этого позвоните

character.modStats()

и он будет работать.

0
добавлено

Вы сэр мой персональный герой: D, я только что попробовал, и он показывает данные.

Я изменил конструктор для символа в Character.AS следующим образом:

public function Character(obj:Object)
    {
        this._stats = new FinalStats();
        this._gear = new GearList();
    }

Я не совсем уверен, что это правильно, но, как вы упомянули в своем ответе:

var myChar:Character = Character(data);  

Я полагаю, что мне придется использовать этот объект данных для инициализации myChar ... я прав? Ну, позже, когда у меня будет время, я попытаюсь добавить новые виды и кнопки, чтобы просмотреть просмотры и посмотреть, есть ли данные: D

0
добавлено
Здесь позвольте мне изменить свой ответ, чтобы показать вам конкретный и более чистый способ сделать это
добавлено автор Jason Reeves, источник
dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Разработка СУБД
Разработка СУБД
143 участник(ов)