Weird error: VerifyError

By andy555 | Jul 10, 2009

actionscript3

Hi,
I encountered a very strange error today:

Quote:

VerifyError: Error #1068: components.SidePanel and components.SidePanel cannot be reconciled.

at components: idePanel/performSearch()
at components: earch/search()[C:\Documents and Settings\D049827\My Documents\workspace_flex\gis search prototype\src\components\Search.mxml:20]
at components: earch/___Search_Button2_click()[C:\Documents and Settings\D049827\My Documents\workspace_flex\gis search prototype\src\components\Search.mxml:11]


it occurred when calling this method:

ActionScript Code:
public function performSearch(query:String):void {                                         if (query == null || gLayer == null || geoData == null)                         return;                     gLayer.clear();                     resultSet.removeAll();                     var words:Array = query.split(/\s/);                     for each (var x:GeoObject in geoData) {                         for each (var y:String in words) {                             if (x.oID.search(new RegExp(y, “i”)) > -1) {                                 switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         //break;                                     }                                     case “Area”: {                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }                             }                         }                     }                     for each (var x:GeoObject in resultSet) {                         var z:GeoObject = x.rootParent;                         if (!gLayer.contains(z.graphic)) {                         z.visibleOnLayer = true;                         }                     }                     if (resultSet.length == 0) {                         resultSet.addItem(“no results”);                         mainApp.showAll();                     }                     results.list.dataProvider = resultSet;                     mainApp.applyExtent(null);                     //map.extent = poly.extent;                     setVisibility();             }

As ist seems the error occurs on call of the method; not during execution.

I want to execute the code of the case "Area" additionally to the case "Network". That’s why i don’t use "break" at the end of case "Network".

The weird thing in my eyes is, that everything works fine, if i copy the code from "area" to "network" und use "break" after "network".

After playing around a little i found out that the following code works:

ActionScript Code:
switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         /* for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         } */                                         break;                                     }                                     case “Area”: {                                         /* for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }*/                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }

this doesn’t:

ActionScript Code:
switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         /* for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         } */                                         //break;                                     }                                     case “Area”: {                                         /* for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }*/                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }

but this one does:

ActionScript Code:
switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         //break;                                     }                                     case “Area”: {                                         /* for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }*/                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }

The following works too:

ActionScript Code:
switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         //break;                                     }                                     case “Area”: {                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }

And the last one also works although it is the same logic as the initial version seen in the full method i posted at the beginning of this

ActionScript Code:
switch (x.oType) {                                     case “Network”: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         break;                                     }                                     case “Area”: {                                         for each (var z:GeoObject in x.recursiveChildren) {                                             if (!resultSet.contains(z)) {                                                 resultSet.addItem(z);                                             }                                         }                                         break;                                     }                                     default: {                                         if (!resultSet.contains(x)) {                                             resultSet.addItem(x);                                         }                                     }                                 }

Can somebody tell me where the problem is? Until now it looks to me somewhat like a compiler error.

actionscript3

Please reply at our Forum

Leave a Comment

If you would like to make a comment, please fill out the form below.

Name (required)

Email (required)

Website

Comments

© 2007 ActionScript 3.0