troubleshooting Question

Using the same function with different extended object types

Avatar of BloodGrinder
BloodGrinderFlag for United Kingdom of Great Britain and Northern Ireland asked on
Adobe FlashApache Flex
2 Comments1 Solution270 ViewsLast Modified:
Hi still being very green with Actionscript, I wonder if you could help with the following,

For the sake of an example think of a page in a book where,

I have 4 seperate classes,  ParagraphData, PartHeadingData, FooterData and ListData each which extend from the PageItemData class, a pageItem being its namesake on a page and each class has a different set of extended properties

Each "page of the book" as such is presented in an array called pageData and contains for example 3 instances of ParagraphData, 1 PartHeadingData , 1 list etc
 
What I need to do is iterate over the pageData array and act accordingly depending on what object type is currently being examined.

I have tried the following but with no success.

for each (var pageItem:PageItemData in pageData){
                        
      //check for prefix span and add if true            
                        if (pageItem.has_Prefix_Span && pageItem.prefix_Span_Text!==""){
                              createParagraphPrefixSpan(pageItem,pElem)
                        }
                              
      //check for inline graphic      
                        if ((pageItem.paragraph_Contains_Figure)as ParagraphData){
                        pElem=figure.checkForFigure(pageItem,pElem,figureData);
                        }

The first portion works because of the properties within the PageItemData class which are common to all , but the second does not ,even if I try to cast to the correct datatype, the compiler keeps complaining about


1118: Implicit coercion of a value with static type vo:PageItemData to a possibly unrelated type vo:ParagraphData

1119: Access of possibly undefined property paragraph_Contains_Figure through a reference with static type vo:PageItemData

I know I could replace the first line with

for each (var pageItem:* in pageData){

but this seems odd to me seing as all the items being iterated over are extended from the type shown.

What am I missing here and thanks in advance

John


}
ASKER CERTIFIED SOLUTION
ChristoferDutz

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 2 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros