当前位置:  编程技术>移动开发
本页文章导读:
    ▪对事件的浅显理解(转载)        对事件的通俗理解(转载) 前言:flex是面向组件开发的,侧重于实现人机交互的程序设计方法。实际上,正是因为其强大的事件机制,我们才能开发出令人惊艳的表现层页面。以下是根据我自.........
    ▪ 读写某个资料        读写某个文件 package com.huawei.test;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.LineNumberReader;public class WriteFile { public static void main(String[] args).........
    ▪ Xcode 四 无证书真机调试 环境配置       Xcode 4 无证书真机调试 环境配置 1.创建证书实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。证书名称必须为iPhone Developer,将类型设定为代码签名,勾.........

[1]对事件的浅显理解(转载)
    来源: 互联网  发布时间: 2014-02-18
对事件的通俗理解(转载)

前言:flex是面向组件开发的,侧重于实现人机交互的程序设计方法。实际上,正是因为其强大的事件机制,我们才能开发出令人惊艳的表现层页面。以下是根据我自己的理解写的一个教程,可能有不完善的地方,欢迎大家讨论。

什么是事件?
百度百科是这样解释的:是法律事实的一种。是指与当事人意志无关的那些客观现象,即这些事实的出现与否,是当事人无法预见或控制的。

我理解的事件就是发生的一些事情。比如刮风、下雨、打雷;比如吃饭、睡觉、工作等等。在flex中,事件是确定计算机执行哪些指令以及何时执行的机制。
本质上,“事件”就是所发生的、ActionScript 能够识别并可响应的事情。通俗点讲,你要让计算机干活,干什么活,什么时候开始干活,就得对计算机做些事情,或者它自己对自己做些事情,这个事情就是事 件。当然,你做的事情计算机一定要能够识别。你可以敲键盘,可以按鼠标,可以扫描文件。你还可以设置让它杀完毒之后自动关机。但是,你不能对着电脑 说:hi,你半个小时之后关机。这样,它肯定不知道你要干什么。因为它不能识别你所说的关机指令,或者说,它没有注册对你叫“半个小时之后关机”这个事件 的响应。

什么叫事件对象?
事件是对事件对象的一种抽象。我们不会傻傻地跟别人说:事件发生了。我们通常都会说:XX事件发生了。XX事件就是事件的一个具体实现。下面这个 例子很重要,它会涉及到这个教程里面的很多概念,请务必注意:今天下午丁姐去小贩那里买苦瓜就是买菜事件的一个事件对象。在flex里面,大多数组件都能 产生事件。但是,只有某个组件对象在某时刻产生的事件才能叫事件对象。

什么叫事件侦听器?(事件处理程序)
就是说事件对象产生了,有人接受到这个事件对象,并作出了相应的响应。比如说,今天下午下雨这件事发生,我接受到这件事,就去收衣服。收衣服就是 我对下雨这个事件对象的响应。回到上面的例子:今天下午,丁姐要去买苦瓜了,OK,她来到小贩那里,说要买苦瓜,事件对象产生。小贩呢?看到有顾客来了, 肯定很高兴塞,他接下来做的事情就是一个事件处理程序:取菜、称重、收钱交货。当然,小贩干的一些缺斤少两的事就不讨论了,小贩把这个过程封装起来,每次 丁姐来买菜他就调用这个过程。在flex里面,侦听器就是一个函数,它接受事件对象,并作出相应的响应。

什么叫注册事件侦听器?
老板告诉小贩,如果有人来买菜,你就怎么怎么滴?于是小贩就记住了,只要有人来买菜,他就按老板的要求做。当然,如果别人来买布,小贩就不知道怎 么做了,因为老板没告诉他该怎么做。所以他会忽略掉买布的。当然了,如果是一位新来的伙计,老板对他进行了培训该怎么卖菜。但是现在还轮不到他当值,所 以,丁姐来买菜时,这位新来的伙计是不会招呼她的,即使丁姐嗓门再大也没用。对不起,虽然我会卖菜,可是老板没叫我卖菜。同理,对一个flex组件注册侦 听器就是告诉组件当事件发生时调用事件处理程序。有两种方法可以注册事件侦听器,一种是在组件里面使用click属性

//考虑到文章排版,以下代码不是完整实例
<mx:Button id="myButton" click="sub(event);" />
public function sub(event:Event):void {
//事件处理程序
}

还有一种是写在AS里面:
//初始化时就为组件注册事件侦听器
<mx:Application  initialize="createListener();">
<mx:Button id="myButton" />
public function sub(event:Event):void {
//事件处理程序
}
public function createListener():void {
//前一个参数是参数类型,后一个参数是侦听器函数名
myButton.addEventListener(Event.type,sub)
}

事件流
丁姐去小贩那里买菜,这是一个大型连锁卖场,小贩上面有主管,主管上面有经理。丁姐来买菜时,小贩、主管、经理都被告知需要卖菜(都已注册事件侦 听器),单丁姐买菜这个事件对象产生后,经理最先知道,然后主管知道,最后小贩知道丁姐来买菜,小贩就是事件对象目标,然后小贩执行卖菜程序,然后就是主 管执行卖菜程序,最后是经理执行卖菜程序。在flex里面,如果多个组件嵌套在一起,呈现包含关系,当事件发生时,事件对象会从外至里依次遍历所有组件, 直到达到目标组件停止遍历,然后再从目标组件往外遍历,如果该组件已注册事件侦听器,则执行该侦听程序。

事件对象的生命周期:(原创:未经证实)
事件发生    产生事件对象     发送事件对象 捕获事件对象   处理事件
10月30日注:实际上,是有事件对象的产生我们才说事件发生。这个事件对象包含了这个事件发生时的一些具体属性。好比:“天鹅”号台风的产生就是发生台风的一个具体事例。两者应该不存在先后关系。


7请描述这两种注册事件侦听器的异同:
click="sub(event);"

myButton.addEventListener(Event.type,sub)

这个我研究了一天,主要是说一下我自己的想法,欢迎大家一起讨论。
我有两种想法:现罗列多下
一、
(估计这种想法是错误的)
click="sub(event);"表示click事件发生后,执行sub(event)方法,接受Event类型的事件对象。(如果 click事件发生之后不产生类型为Event类型的事件对象怎么办?)(有人说打雷了我们却看到“天鹅”号台风的产生,实际上是不可能的)
myButton.addEventListener(Event.type,sub)表示click事件发生后,产生类型为Event的事件对 象,如果事件对象的type属性与注册侦听器时的第一个参数匹配,则调用sub(event)方法。(如果type属性符合第一个参数但是事件对象不属于 Event类型呢?)(程序会报错,参数类型不能强制转换,证实了flash编译器是根据事件对象的类型调用侦听器函数,跟侦听器函数可以接受的参数类型 没有关系)

以上不懂的,可以联系我,我有具体事例证实。

实际上,计算机是根据对象的一些具体特征去识别事件的。这句话很重要,理解了,就没什么问题了。

二、
click="sub(event);"
myButton.addEventListener(Event.type,sub)
编译时都把sub(event)写入到组件的一个方法列表里。事件对象发生时,结合事件流的原理,判断事件对象的类型,如果符合侦听器的参数,则执行该事件侦听器。


疑问?如果对一个组件同时注册两种不同的事件侦听器呢?
优先调用click="",然后才调用add方法。


    
[2] 读写某个资料
    来源: 互联网  发布时间: 2014-02-18
读写某个文件
package com.huawei.test;

import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;

public class WriteFile {
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("C:\\Users\\Administrator\\Desktop\\Task.java");
BufferedWriter bwf = null;
LineNumberReader lnr=new LineNumberReader(fr);
String line=null;

        lnr.setLineNumber(0);
        
         //从十开始 定义在循环外

while((line=lnr.readLine())!=null)
{
bwf= new BufferedWriter(new FileWriter("E:\\Task.java",true));
// bwf= new BufferedWriter(new FileWriter("f:\\Task.java"));
    System.out.println(lnr.getLineNumber()+":"+line);
    bwf.write(line+"\n");
//     if(lnr.getLineNumber()==15){
//     break;
//     }
    bwf.flush();
}
lnr.close();
bwf.close();
  }
}

    
[3] Xcode 四 无证书真机调试 环境配置
    来源: 互联网  发布时间: 2014-02-18
Xcode 4 无证书真机调试 环境配置

1.创建证书
实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。
证书名称必须为iPhone Developer,将类型设定为代码签名,勾选”让我覆盖这些默认值”,之后就一路Next。

 

2.环境配置
首先确认已退出Xcode,然后开始修改配置文件:
打开“终端”(1-4步都是在终端中执行)
(1)修改 SDKSettings.plist
先备份原文件:
cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/
sudo cp SDKSettings.plist SDKSettings.plist.orig

进行编辑:
sudo vi SDKSettings.plist
将以下两段中的YES改为NO
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>
...
<key>ENTITLEMENTS_REQUIRED</key>
<string>YES</string>

(2)修改 Info.plist 文件
同样先备份原文件:
cd /Developer/Platforms/iPhoneOS.platform/
sudo cp Info.plist Info.plist.orig

进行编辑:
sudo vi Info.plist
将全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,一共有 3 处。

(3)在桌面上新建并编辑名为script的脚本:
cd ~/Desktop
vi script

输入以下内容:(点击“i”进入编辑模式)
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "xc3x26x00x00" >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support

保存并退出(点击Esc,输入:wq)。
授予这个脚本执行权限并执行它
chmod 777 script
./script
运行成功会输出类似结果:
223+1 records in
223+1 records out
111648 bytes transferred in 0.002678 secs (41692099 bytes/sec)

(4)生成脚本
执行命令:
mkdir /Developer/iphoneentitlements401
cd /Developer/iphoneentitlements401
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py

如果上面的代码运行有问题,也可以在/Developer目录下新建一个entitlements.py文件,并把下面的代码复制到该文件中,最后赋予777权限:

#!/usr/bin/env python
import sys
import struct
if len(sys.argv) != 3:
	print "Usage: %s appname dest_file.xcent" % sys.argv[0]
	sys.exit(-1)
APPNAME = sys.argv[1]
DEST = sys.argv[2]
if not DEST.endswith('.xml') and not DEST.endswith('.xcent'):
	print "Dest must be .xml (for ldid) or .xcent (for codesign)"
	sys.exit(-1)
entitlements = """
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>%s</string>
    <key>get-task-allow</key>
    <true/>
</dict>
</plist>
""" % APPNAME
f = open(DEST,'w')
if DEST.endswith('.xcent'):
	f.write("\xfa\xde\x71\x71")
	f.write(struct.pack('>L', len(entitlements) + 8))
f.write(entitlements)
f.close()

 

(5)Xcode中的设置,以下步骤需要在每个工程中都设置一次。
1.工程设置,步骤如图:

2.脚本设置,将下面的代码添加到Phase中:
export
CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi

 

至此配置全部完成,接下来就可以连接iOS设备进行程序调试了.


    
最新技术文章:
▪Android开发之登录验证实例教程
编程语言 iis7站长之家
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3