Thanks  -- yeah it seems like the something's happening on the stomp / callback 
before it's getting to me.

Have another quickie about itemrenderers and factory properties, but going to 
ask on another thread.

On Sep 22, 2011, at 2:11 PM, Alex Harui wrote:

> 
> 
> IMHO anonymous  functions are way more trouble than they are worth.  If I had 
> the time, I would eliminate them from all framework code.
> 
> Looks from the stacktrace that someone is using apply() to change the this 
> pointer.
> 
> 
> On 9/22/11 10:46 AM, "grimmwerks" <gr...@grimmwerks.com> wrote:
> 
>> 
>>  
>>  
>>    
>> 
>> Not getting an error, just getting ignored and the function is never called.
>> 
>> 
>> var scope:Object = this;
>> private var echoOrderCacheEvent:Function = function(jstr:String):void{
>> Alert.show(this);
>> trace(scope);
>> 
>> }
>> 
>> I've tried the old pass through - but it's definitely not working properly; 
>> the 'this' that's getting called within the function is NOT the function  - 
>> it's a SubscriptionListener in the stomp framework as that's what's calling 
>> the callback through the interface; something another dev has created and 
>> just want to come back with enough ammunition that the callbacks aren't 
>> being set properly:
>> 
>> It seems to me that he's creating another anonymous function as part of the 
>> stomp dispatching and then everything is getting lost:
>> 
>> ReferenceError: Error #1069: Property com.investlab.mix.common.model::scope 
>> not found on interbahn.SubscriptionListener and there is no default value.
>> at 
>> Function/<anonymous>()[/Users/grimm/Documents/__WORK/__INVESTLAB/MIX/src/com/investlab/mix/common/model/OrderProxyNew.as:142]
>> at 
>> interbahn::SubscriptionListener/apply()[C:\transfer\IdeaProjects\as3-interbahn\main\as3\src\interbahn\SubscriptionListener.as:59]
>> at 
>> Function/<anonymous>()[C:\transfer\IdeaProjects\as3-interbahn\main\as3\src\interbahn\stomp\StompConnection.as:35]
>> at flash.events::EventDispatcher/dispatchEventFunction()
>> at flash.events::EventDispatcher/dispatchEvent()
>> at 
>> org.codehaus.stomp::Stomp/dispatchFrame()[/Users/grimm/Documents/__WORK/__INVESTLAB/MIX/src/org/codehaus/stomp/Stomp.as:350]
>> at 
>> org.codehaus.stomp::Stomp/processFrame()[/Users/grimm/Documents/__WORK/__INVESTLAB/MIX/src/org/codehaus/stomp/Stomp.as:326]
>> at 
>> org.codehaus.stomp::Stomp/onData()[/Users/grimm/Documents/__WORK/__INVESTLAB/MIX/src/org/codehaus/stomp/Stomp.as:312]
>> 
>> 
>> 
>> On Sep 22, 2011, at 1:32 PM, Alex Harui wrote:
>> 
>>> 
>>> 
>>> I don’t know why passing in echoEvent wouldn’t work.  What error did you 
>>> get?
>>> 
>>> Another options are to pass in a third parameter as the object for use in 
>>> call or apply.
>>> 
>>> You can theoretically do this as well in the constructor of the class:
>>> Public function MyClassConstructor()
>>> {
>>>     var thisObject:Object = this;
>>>     echoOrderCacheEvent = function(jstr:String):void{
>>>         trace(thisObject);  // use ‘thisObject’ instead of ‘this’
>>>     }
>>> }
>>> 
>>> 
>>> On 9/22/11 9:50 AM, "grimmwerks" <gr...@grimmwerks.com> wrote:
>>> 
>>>> 
>>>>  
>>>>  
>>>>    
>>>> 
>>>> OK I don't mean to make this a bit convoluted - but I guess the basics of 
>>>> the question is regarding using anonymous functions within a member class 
>>>> and being able to set variables within that member class.
>>>> 
>>>> The convoluted question is this:  I've got in my app an Interface class 
>>>> that has pointers to scala/java functions and are passed in callbacks like 
>>>> so:
>>>> 
>>>> 
>>>> 
>>>> function echoOrderEvent(callback:Function):void ; 
>>>> 
>>>> [UriParams(p1="correlationId")]
>>>> function echoOrderCacheEvent(callback:Function,extension:Object):void ;
>>>>                                                                &n! bsp;    
>>>>            
>>>> 
>>>> Now in my class I create vars as functions for callbacks like so:
>>>> 
>>>> private var echoOrderCacheEvent:Function = function(jstr:String):void{
>>>> Alert.show("GOT ORDER EVENT ");
>>>> }  
>>>> 
>>>> I set up the call back to this function as such:
>>>> 
>>>> interfaceClass.echoOrderCacheEvent(echoOrderCacheEvent, {correlationId: 
>>>> sessionId});                                              
>>>>                                                               !            
>>>>       ! ;     
>>>> Now, this works great except in the anonymous function I don't have any 
>>>> access to the public or private member vars of the class - only of course 
>>>> if I make the vars static, which is not what I want to do.
>>>> 
>>>> What I *can't* figure out is how to make the callback a regular member 
>>>> function such as:
>>>> 
>>>> public function echoEvent(str:String):void{
>>>> blah blah
>>>> }            
>>>> 
>>>> And have that work with the interface class -- 
>>>> asinterfaceClass.echoOrderCacheEvent(echoEvent, {correlationId: 
>>>> sessionId}) won't work; what I was thinking was perhaps .call or .apply 
>>>> methods but not sure how best to use them here...
>>>> 
>>>> 
>>>> 
>>>> Garry Schafer
>>>> grimmwerks
>>>> gr...@grimmwerks.com
>>>> portfolio: www.grimmwerks.com/ <http://www.grimmwerks.com/>  
>>>> <http://www.grimmwerks.com/> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>  
>>>>    
>>>> 
>>>> 
> 
> -- 
> Alex Harui
> Flex SDK Team
> Adobe System, Inc.
> http://blogs.adobe.com/aharui
> 
> 
> 

Garry Schafer
grimmwerks
gr...@grimmwerks.com
portfolio: www.grimmwerks.com/





Reply via email to