正确访问SWFLoader下载完了的元素属性

flex里有个SWFLoader,真是方便群众啊,不过在下载完了后,处理时有个注意点
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
        <![CDATA[
        import mx.controls.Alert;
            private function handlePicture(evt:Event):void
            {
                try
                {
                    var img:Image = Image(evt.target);
                   
                    var s:String = ">>image: " + img + '/n';
                    s += "/twidth: " + img.width + '/n';
                    s += "/theight: " + img.height + '/n';
                    s += "/tcontent: " + img.content + '/n';
                    s += "/tcontentWidth: " + img.contentWidth + '/n'
                    s += "/tcontentHeight: " + img.contentHeight + '/n';
                    Alert.show(s);
                }
                catch(e:Error)
                {
                    Alert.show(e.toString());
                }
            }
        ]]>
    </mx:Script>
    <mx:Image id="my_image" source="test.jpg" complete="handlePicture(event);" />
</mx:Application>

以上代码非常简单,Image是继承SWFLoader的,针对图像,在这里和SWFLoader是一样的.

注意广播事件,用的是complete.熟悉的人应该知道complete和init的差异.
下载内容是图片的话,complete和init是没啥区别的.

好了,那么有什么要注意的么?
如果copy上面程序,编译运行一下的话,就会看到,img的width和height是0,而contentWidth和contentHeight是有值的.
这是因为contentWidth和contentHeight,顾名思义,就是content.width和content.height,而content指的是下载好了的Bitmap对象,当然它的属性是有值的.
而SWFLoader,在下载好后,因为要进行整个样式,尺寸等方面的改变,所以使用了一系列invalidate,而这些是基于callLater的.
关于callLater,可以简单的认为是,把现有要执行的代码,在这一帧的最后执行.
详细的看这里

所以如果在下载完了,马上去访问img的width和height,取到的是不正确的

contentWidth和contentHeight这两个属性在手册上是有提起的.
可以看这里

了解了这点就可以继续工作了,如果非要等img也完全赋值了才进行,可以通过下面这个比较bt的方法
<mx:Image id="my_image" source="test.jpg" complete="callLater(callLater, [handlePicture,[event]]);" />
呵呵,通过两个callLater,把handlePicture放到比invalidate还后面执行,这样就可以了
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值