如何用BulkLoader获得swf文件中的类

前两天有人问如何加载多个swf并使用其中的类我推荐bulkloader,今天又在网上看到一个帖子:有人还下载了源代码并修改了其中的LoadingItem.as和ImageItem.as以此来获得类实例?说“使用BulkLoader统一管理资源载入时,发现BulkLoader类并没有获到swf应用程序域的相关方法”我觉得很奇怪不应这样呀所以下了源码看了看,结果真的有不需要额外修改,或许是作者后来修改的但确实提供了该方法。简单介绍一下用法我是在flex中实现的

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/halo" creationComplete="init()">
 <fx:Style source="default.css"/>
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import br.com.stimuli.loading.BulkLoader;
   import br.com.stimuli.loading.BulkProgressEvent;
   import br.com.stimuli.loading.loadingtypes.ImageItem;   
   import flash.events.Event;   
   import mx.core.UIComponent;
   private var bulkloader:BulkLoader = new BulkLoader("mainLoading");
   public function init():void{

 //获得监听没啥好说的
    bulkloader.addEventListener(BulkLoader.COMPLETE, onCompleteHandler);
    bulkloader.addEventListener(BulkLoader.PROGRESS, onProgressHandler);

//加载你要导入的swf
    bulkloader.add("Main.swf");
    bulkloader.start();
   }
   public function onCompleteHandler(event:Event):void{

//用get方法获得获得实例,用强制类型转换获得imageitems对象实例(该实例下有getDefinitionByName)Rect是我声明的类名
    var t:Class = ImageItem(bulkloader.get("Main.swf")).getDefinitionByName("Rect") as Class
    if (t == null) {
     trace(t is null);
    }else{ 
     var tt:Sprite = new t;
    }    
    var c:UIComponent = new UIComponent;
    c.addChild(tt);    
    this.addElement(c);
   }
   public function onProgressHandler(event:BulkProgressEvent):void{
    trace("Loaded" , event.bytesLoaded," of ",  event.bytesTotal);
   }
  ]]>
 </fx:Script>
</s:WindowedApplication>

为啥不把getDefinitionByName定义成loaditem父类方法呢?毕竟加载图像,xml,video是不需要的,所以没有添加在父类里面(个人意见)

你也可以修改loaditem把它透出来就这样不需要强制类型转换了。在loaditem中添加方法

        public function getDefinitionByName(className : String) : Object{
            return null;
        }

在imageitem getDefinitionByName方法前面添加override就可以了

就可以直接var t:Class = bulkloader.get("Main.swf").getDefinitionByName("Rect") as Class

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#的MySqlBulkLoader是用于实现批量插入数据到MySQL数据库的工具。它可以显著提高数据插入的性能,特别是在需要插入大量数据时。 要使用MySqlBulkLoader,首先需要确保你已经安装了MySQL Connector/NET驱动程序。然后,你可以按照以下步骤进行批量插入: 1. 导入命名空间: ```csharp using MySql.Data.MySqlClient; ``` 2. 创建一个MySqlConnection对象,并打开数据库连接: ```csharp string connectionString = "your_connection_string"; MySqlConnection connection = new MySqlConnection(connectionString); connection.Open(); ``` 3. 创建一个MySqlBulkLoader对象,并设置相关属性: ```csharp MySqlBulkLoader bulkLoader = new MySqlBulkLoader(connection); bulkLoader.TableName = "your_table_name"; bulkLoader.FieldTerminator = ","; bulkLoader.LineTerminator = "\r\n"; bulkLoader.FileName = "your_file_path"; bulkLoader.NumberOfLinesToSkip = 1; // 如果文件包含标题行,可以设置跳过的行数 ``` 4. 调用Load方法执行批量插入: ```csharp int rowsAffected = bulkLoader.Load(); ``` Load方法会返回插入的行数。 5. 关闭数据库连接: ```csharp connection.Close(); ``` 这样就完成了使用MySqlBulkLoader进行批量插入的过程。 需要注意的是,MySqlBulkLoader的使用还有一些其他的属性和方法,可以根据具体需求进行设置和调用。另外,要确保插入的数据文件格式与数据库表的结构相匹配,否则可能会导致插入失败。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值