I'm afraid I don't think either Han's or Steven's solutions work in
AS3 - you'd still get a ReferenceError (unless currentSection is
dynamic).

I'd do it using flash.utils.describeType, like so:

import flash.utils.describeType;

:

var desc:XML=flash.utils.describeType(currentSection);

if (desct.method.(@name=="refresh").length()>0)
{
        currentSection['refresh']();  /// Still need bracket access here, as
otherwise compilation will fail
}

Wrapping it up, here's a method-checking function:

function methodExists(obj:Object,name:String):Boolean
{
        var desc:XML=flash.utils.describeType(obj);
        return (desc.method.(@name==name).length()>0);
}

(and here, for free, is one for properties:
function propertyExists(obj:Object,name:String):Boolean
{
        var desc:XML=flash.utils.describeType(obj);
        return (desc.accessor.(@name==name).length()>0);
}
)

It's heavyweight, though. If anyone can find a better solution...

Ian

On Tue, Oct 28, 2008 at 2:09 AM, Steven Sacks <[EMAIL PROTECTED]> wrote:
> if (currentSection.refresh)
> {
>    currentSection.refresh();
> }
>
> Karim Beyrouti wrote:
>>
>> Hello Group -
>> This should be really easy. I am trying to find out how to check if a
>> function exists or not in AS3 - I tried this:
>> <code>
>>        If ( currentSection.refresh != null ) {
>>                currentSection.refresh();
>>        }
>>
>>
>> </code>
>>
>> But I get "ReferenceError: Error #1069: Property refresh not found" when
>> the
>> function does not exist.
>>
>> Any clues?
>>
>>
>> Kind Regards
>>
>>
>>
>> Karim
>>
>> _______________________________________________
>> Flashcoders mailing list
>> [email protected]
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to