MyRenderer.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"; 
implements=”mx.controls.menuClasses.IMenuItemRenderer”


On 7/22/10 4:57 AM, "Alexander Farber" <[email protected]> wrote:






I've tried another code and still get the error when I click the menu:

TypeError: Error #1034: Type Coercion failed: cannot convert
myrende...@47410a1 to mx.controls.menuClasses.IMenuItemRenderer.
at 
mx.controls::Menu/http://www.adobe.com/2006/flex/mx/internal::deleteDependentSubMenus()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\Menu.as:2275]
at 
mx.controls::Menu/http://www.adobe.com/2006/flex/mx/internal::hideAllMenus()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\Menu.as:2289]
at 
mx.controls::Menu/mouseUpHandler()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\Menu.as:1706]

In my code I do implement all 5 methods listed at the
http://livedocs.adobe.com/flex/3/langref/mx/controls/menuClasses/IMenuItemRenderer.html
so I'm not sure, what is missing here?

MyRenderer.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
alpha="0.4" width="100%" height="100%">
<mx:Script>
<![CDATA[
import mx.events.*;
import mx.controls.*;

[Bindable]
private var color:uint;

override public function set data(value:Object):void {
if(value != null) {
super.data = value;
lb.text = String(value.label);
color = (lb.text.indexOf('♥') != -1 ||
     lb.text.indexOf('♦') != -1) ? 0xFF0000 : 0x000000;
}
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}

// Internal variable for the property value.
private var _menu:Menu;

public function get menu():Menu {
return _menu;
}

public function set menu(value:Menu):void {
_menu = value;
}

public function get measuredBranchIconWidth():Number { return 50;}
public function get measuredTypeIconWidth ():Number { return 50;}
public function get measuredIconWidth ():Number { return 50;}

]]>
</mx:Script>
<mx:Label id="lb" color="{color}" />
</mx:Canvas>

Test.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; creationPolicy="all">
<mx:Style>
@font-face {
src:url("C:\\WINDOWS\\Fonts\\times.ttf");
fontFamily: myFont;
/* card suits */
unicodeRange: U+2660-U+266B;
}
Menu, Label {
fontFamily: myFont;
fontSize: 24;
}
</mx:Style>

<mx:Script>
<![CDATA[
import mx.controls.*;

private function createMenu():void {
var bids:Array = [{label: "Pass"}];
for (var i:uint = 7; i <= 10; i++)
for (var j:uint = 0; j < 4; j++)
bids.unshift({label: i+"♠♣♦♥".charAt(j%4)});

var menu:Menu = new Menu();
menu.dataProvider = bids;
menu.itemRenderer = new ClassFactory(MyRenderer);
menu.selectedIndex = 0;
pub.popUp = menu;
}

]]>
</mx:Script>

<mx:Canvas width="100%" height="100%">
</mx:Canvas>

<mx:ApplicationControlBar width="100%">
<mx:Spacer width="100%"/>
<mx:PopUpButton id="pub" creationComplete="createMenu();"/>
</mx:ApplicationControlBar>
</mx:Application>





--
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui

Reply via email to