Apelare functie dupa nume (String)

Intrebari despre Flex

Apelare functie dupa nume (String)

Mesajde alphagon » Mie Sep 09, 2009 3:02 pm

Scenariu:
Cod: Selectaţi tot
...
      [Bindable] private var MENUITEMS:Array = [
         {label:"Show", callBack:"Show()"}, // sau doar "Show", respectiv "Hide"
         {label:"Hide", callBack:"Hide()"}
      ];
      private function onMenuClick(e:ItemClickEvent):void
      {
         trace("Clicked: "+e.item.label+" Callback function: "+e.item.callBack);
         var f:Function = new Function();
         f.call(e.item.callBack); // ***eronat   
      }
...
<mx:LinkBar dataProvider="{MENUITEMS}" labelField="label" itemClick="onMenuClick(event)"/>


Asadar, voi ce stiti, e posibil in Flex sa apelez functia in functie de un string dat? Binenteles, daca se poate, voi face o functie care va face niste verificari inainte sa incerce orice executie, ca sa nu execute orbeste.
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: Apelare functie dupa nume (String)

Mesajde alphagon » Mie Sep 09, 2009 10:51 pm

Tind sa cred ca nu e posibil.. Nu am gasit absolut nimic pe google. ;>
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: Apelare functie dupa nume (String)

Mesajde Barna Biro » Mie Sep 09, 2009 11:27 pm

Te-ai gandit sa incerci asa:

Cod: Selectaţi tot
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
   xmlns:mx       = "http://www.adobe.com/2006/mxml"
   layout         = "absolute">
   
   <mx:Script>
      <![CDATA[
         import mx.controls.Alert;
         
         private function onClick(event:MouseEvent):void
         {
            this["showAlert"]("Hello!");
         }
         
         private function showAlert(st:String):void
         {
            Alert.show(st);
         }
         
      ]]>
   </mx:Script>
   
   <mx:Button
      label     = "Click"
      click     = "onClick(event);"/>
   
</mx:Application>

Desi, sincer, nu vad de ce ai vrea sa faci asa ceva :) Personal mi se pare o idee destul de nasoala dar na, tu stii cu ce ai de a face acolo. :) What can I say, bafta. ;)
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: Apelare functie dupa nume (String)

Mesajde alphagon » Joi Sep 10, 2009 2:18 pm

Pai o fi nasoala...dar na, eu caut defapt o metoda sa fac meniurile mai simple....si nu prea am alte idei decat asta de mai sus, care parea mai ok. Ca altfel raman doar cu varianta asta:

Cod: Selectaţi tot
      <mx:LinkBar dataProvider="{MENU}" labelField="label" itemClick="onMenuClick(event)"/>
      private var MENU:ArrayCollection = new ArrayCollection(["Utilizator","Trivia", "Test"]);

      private function onMenuClick(e:ItemClickEvent):void
      {
         switch (e.item)
         {
            case 'Login':
               Popup(this.loginWindow, LoginWindow, true);
               break;
            case 'Trivia':
               Popup(this.triviaWindow, TriviaWindow);
               break;
            case 'Test':
               Popup(this.triviaWindow, TriviaWindow);
               break;
         }   
      }   


...si varianta asta nu`mi prea convine. Cand modific/adaug/sterg un element in meniu, trebuie sa modific in cele 2 parti. Asadar urmaream sa introduc intr-o singura parte tot ce e necesar la adaugare/modificarea unui element in meniu. Alte idei?
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: Apelare functie dupa nume (String)

Mesajde Barna Biro » Joi Sep 10, 2009 5:22 pm

Pai, solutii ar cam fi destule, doar ca una e mai complexa decat alta si nu stiu daca esti la nivelul la care sa faci fata calumea problemei cu o solutie mai complexa ( desi, nu e rau sa experimentezi dar daca proiectul e pentru un client care totusi se asteapta la ceva calumea, atunci ar fi cam nasol din partea ta sa te pui si sa exprimentezi pe banii lui - si mai ales sa risti nerespectarea unui deadline ).

Daca inteleg bine atunci toate meniurile alea vor deschide o anumita componenta si o vor afisa ca pe un pop-up. Din moment ce asa stau lucrurile, atunci o solutie mai simpla ( si care ar ajuta la posibile viitoare schimbari ) ar fi sa implementezi o interfata comuna pentru componentele tale care sa aibe definite metode gen show(); si hide(); ( pentru inceput ). Facand asta, vei putea sa comunici cu orice componenta lejer care implementeaza aceasta interfata ( si poti sa swap-ui componente si etc... pe scurt, poate profiti de polymorphism un pic ). Acuma, eu nu cunosc 100% problema deci poate treaba asta nu s-ar aplica asa de usor pentru situatia ta, mai ales daca anumite componente trebuie ca totusi sa fie "mai speciale" si eu mai stiu ce... evident, si atunci s-ar putea gasi solutii doar ca ar creste si mai complexitatea per ansamblu ( nu stiu cat de bine stai cu OOP si Design Patterns dar daca nu prea bine, atunci nu te risca pe banii altcuiva ).

Se pot gasi solutii si pentru maparea componentelor ( treaba aia pe care incerci s-o faci tu cu array-u ) si sa manipulezi acele componente cu ajutorul claselor de tipul "manager", doar ca si aici, o sa intervina multe lucruri care nu-s nu stiu cat de complexe, dar daca omul nu are experienta cu lucruri "relativ mai intermediare/avansate de software architecture", atunci mda, pot parea destul de complexe si acele solutii ( si chiar te poti prinde la urechi foarte usor ).

Eu zic sa alegi "solutia sigura". Desi poate acea solutie nu e cea mai frumoasa si OK, dar macar stii ca esti in stare sa rezolvi problema "on time", decat sa te risti cu lucruri mai complicate si sa pierzi o gramada de timp ( si in cel mai rau caz sa te inpotmolosesti si sa nu mai stii ce sa faci ).

In timpul liber, te poti pune sa citesti si sa experimentezi si chiar sa rezolvi problema respectiva "asa cum trebuie". Acuma, asta e, proiectul acesta sa fie finalizat, mai ales daca deadline-u e destul de aproape si te pui frumos si inveti/experimentezi ca la urmatorul proiect sa poti sa rezolvi problema mult mai bine ( poate nu perfect dar macar mai bine decat acuma ).
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: Apelare functie dupa nume (String)

Mesajde alphagon » Joi Sep 10, 2009 6:15 pm

desi, nu e rau sa experimentezi dar daca proiectul e pentru un client care totusi se asteapta la ceva calumea, atunci ar fi cam nasol din partea ta sa te pui si sa exprimentezi pe banii lui - si mai ales sa risti nerespectarea unui deadline


- nu nu, experimentez pe banii si timpul meu ;> Inainte sa trec pe banii altora (EVENTUAl, desi nu cred), ma asigur ca am un habar ;> Deocamdata o fac doar din hobby.
- Asadar, sunt deschis la orice propunere - ma intereseaza metode si idei ;>
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: Apelare functie dupa nume (String)

Mesajde Barna Biro » Joi Sep 10, 2009 6:43 pm

Pe scurt: OOP si Design Patterns. Fara sa ai o baza destul de solida in acele doua "lucruri", nu prea am cum sa ma bag in explicatii ( ar fi prea mult de explicat si nu cred ca forumul e locul potrivit pentru astfel de polemici si etc... + ca sigur ar exista si altii cu idei, poate idei mult mai bune... dar pana atunci, trebuie sa ai acele baze ca sa ne intelegem si sa nu ajugem sa explicam lucruri extrem de baza intr-un reply extrem de lung ).

Deci, tot ce inseamna OOP si Design Patterns. Prima oara OOP, cu Design Patterns o sa ai nevoie de ceva experienta mai serioasa in OOP si timp ca sa intelegi macar ce e pe acolo ( asta daca nu esti cumva un geniu in programare ). Dupa aceea, experiment pt baza lucrurilor invatate ( chiar si in timp ce citesti, ar fi normal sa exprimentezi mereu cu lucrurile pe care le inveti pe parcurs ).

Have fun si bafta. ;)
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: Apelare functie dupa nume (String)

Mesajde alphagon » Joi Sep 10, 2009 6:50 pm

Sper ca nu exagerez, dar sunt familiar cu conceptul de OOP si Design pattern. Binenteles ca mai am de invatat, si tot timpul voi avea. Si pana acum, in "proiectul" asta la care mesteresc acum, pot sa zic ca am respectat concepul OOP, si ar fi fost greu sa nu-l respect de vreme ce AS e un limbaj OOP :)
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: Apelare functie dupa nume (String)

Mesajde Barna Biro » Joi Sep 10, 2009 11:01 pm

alphagon scrie:Sper ca nu exagerez, dar sunt familiar cu conceptul de OOP si Design pattern. Binenteles ca mai am de invatat, si tot timpul voi avea. Si pana acum, in "proiectul" asta la care mesteresc acum, pot sa zic ca am respectat concepul OOP, si ar fi fost greu sa nu-l respect de vreme ce AS e un limbaj OOP :)

Pai daca spui ca te descurci cu alea atunci baga mare si experienteaza. ;) Ai o gramade de pattern-uri la dispozitie pentru diferite probleme, eu nu prea am cum sa iti dau un raspuns deoarece nu cunosc acel "bigger picture", deci degeaba iti spuna acuma sa folosesteti de exemplu Strategy Pattern-u cand poate in acel "bigger picture" folosirea acelui pattern ar fi non sense.

Citeste, mai experimenteaza si vezi ce iasa. Referitor la asta, din moment ce spui ca te ai cu chestiile astea macar cat de cat, atunci nu intelegi ce pierzi timpul cu bubbling... Nu era mai frumos daca implementai un Observer Pattern sau Chain of Responsibility cu care ajungeai sa ai un sistem calumea de comunicare si de update? Also, puteai sa gandesti toata aplicatia pe un model MVC ( din cate am vazut pana acuma, nu prea ai nicio tentativa de MVC pe acolo ).

Eu spun ca ai de unde alege si din moment ce tu cunosti aplicatia ( sau cel putin stii mai bine cam ce ai vrea sa faci ), atunci, eu spun ca tu esti cel mai in masura sa gasesti raspunsuri. :) Cu totii avem de invatat, sa nu crezi ca eu sunt mare guru la chestiile astea ( si eu mai invat si cum ai spus si tu, cred ca mereu voi avea ceva nou de invatat ) dar din moment ce esti constineti ( cunosti ) aceste posibilitati de rezolvare atunci nu inteleg de ce pierzi timpul cu bubbling si cu implementari barbare ( raspunsul "de fun" nu prinde la mine deci nici nu te gandi sa spui asa ceva :D )...

Tu stii, dar eu in locul tau as "cut the crap" si macar as experimenta cu lucrurile care chiar merita timpul sacrificat si nu cu solutii destul de absurde gen bubbling ( bine, nu ca bubbling-u nu ar mertia un timp de studiu si experimentare, dar nu trebuie dus in extrema, mai ales atunci cand iti spune lumea ca "don't do it! it's not worth it!" ) pentru comunicare si nu stiu ce. Bine, acuma ai putea spune ca "experimentez" dar atunci asteata-te sa te lovesti mereu de probelem stupide care puteau fi evitate foarte usor daca alegeai o solutie ( un drum ) mai corect inca de la inceput ( mai ales cand ti-a spus lumea ca nu e prea ok felul in care incerci sa rezolvi problema ). :)

Dar na, daca tie iti creste adrenalina cand te izbesti voluntar cu capul de zid :D e your problem si your decision to take. :) I can only wish you a lot of luck and I can only hope that the wall will give up before your head does. :P
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: Apelare functie dupa nume (String)

Mesajde alphagon » Joi Sep 10, 2009 11:16 pm

Referitor la bubble, m-am agatat de el citind din Help si mi s-a parut solutia la momentul respectiv. Eh, acuma ca problema e rezolvata, imi dau seama ca nu "bubble=true" a fost solutia. Era chestie de implementare. Merge si fara bule;>
Eh, dar stop poveste ca drumu'nainte mult mai este ;>> Mult pt ca inca pot sa zic ca ma familiarizez cu capabilitatile AS, respectiv Flex. In fapt, incerc sa fac o mica aplicatie "trivia". Stii tu, trivia, jocul cu "Io te'ntreb si tu'mi raspunzi". Nimic complicat pt unul ca tine care deja e in "paine". ;> Spor la treaba si tie!
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Următorul

Înapoi la Adobe Flex

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator

cron