La asignación dinámica de una fuente de imagen en un procesador de elementos no funciona en Flex / AS3
-
06-07-2019 - |
Pregunta
Tengo un procesador de elementos personalizado que muestra imágenes:
<mx:DataGrid dataProvider="{friends.friend}" id="friendsGrid" width="240"
rowCount="3" variableRowHeight="true" headerHeight="0"
horizontalCenter="true" backgroundAlpha="0" borderThickness="0"
useRollOver="false" selectable="false">
<mx:columns>
<mx:DataGridColumn width="80" paddingLeft="20">
<mx:itemRenderer>
<mx:Component>
<mx:HBox height="50" horizontalAlign="center"
verticalAlign="middle" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Image source="{outerDocument.getProfilePic(data)}"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
Y una función getProfilePic:
public function getProfilePic(data:Object):String{
if(String( data.image_path.text() ) == ""){
return "../assets/no_profile_pic.png";
}else{
return data.image_path;
}
}
El problema es que cuando asigno la " no hay foto de perfil " Imagen, no aparece. Obtengo esa imagen de aspecto gracioso " no se puede encontrar " icono en su lugar. Si coloco una imagen en ../assets en mi servidor, la imagen se muestra. La incrustación es más ideal. Entonces la pregunta es ... ¿cómo puedo incrustar una imagen en este caso?
Solución
Tal vez intente esto:
<mx:itemRenderer>
<mx:Component>
<mx:HBox height="50" horizontalAlign="center" verticalAlign="middle" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if(String(data.image_path.text()) == ""){
profileImage.load("../assets/no_profile_pic.png");
}
else{
profileImage.load(data.image_path);
}
}
]]>
</mx:Script>
<mx:Image id="profileImage" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow