May
7
继续LCCS的学习
如下图:

选择第一项:Room Console
点击ADD按钮 添加如下信息

完成后点击

就可以进入协作管理界面了
在里面就可以管理用户的权限 以及分配文件 查看流量 访问日志等信息
如图所示:
如下图:
选择第一项:Room Console
点击ADD按钮 添加如下信息
完成后点击
就可以进入协作管理界面了
在里面就可以管理用户的权限 以及分配文件 查看流量 访问日志等信息
如图所示:
May
7
LCCS全称Adobe LiveCycle Collaboration Service译过来就是Adobe LiveCycle协作服务
LCCS能干什么?
我不介绍些官方说的那些功能了,反正我现在只想把LCCS拿来做个小型聊天室。像某某博客上的那种,但是被加密了,所以自己零开始。
首先得去https://afcs.acrobat.com上注册个帐号
登录后在里面点击下载SDK即可 我装了AIR所以直接被安装了
对 就是LCCS SDK Navigator
LCCS SDK Navigator这玩意很牛逼 几乎把LCCS的所有都做在了里面 但是俺鸟语很烂
直接来连接下刚刚注册的那帐号
LCCS SDK Navigator打开后 点击左侧的选项卡“开发工具”选择3个按钮中的“ROOM Console”
待续……
LCCS能干什么?
我不介绍些官方说的那些功能了,反正我现在只想把LCCS拿来做个小型聊天室。像某某博客上的那种,但是被加密了,所以自己零开始。
首先得去https://afcs.acrobat.com上注册个帐号
登录后在里面点击下载SDK即可 我装了AIR所以直接被安装了
对 就是LCCS SDK Navigator
LCCS SDK Navigator这玩意很牛逼 几乎把LCCS的所有都做在了里面 但是俺鸟语很烂
直接来连接下刚刚注册的那帐号
LCCS SDK Navigator打开后 点击左侧的选项卡“开发工具”选择3个按钮中的“ROOM Console”
待续……
Jan
12
早就想写篇flex与flash怎样读取sqlite数据库的文章了
网上大多都是flex的AIR中直接使用SQL类去连接的例子
咱做的是RIA
所以我就上这方面的东西
Flex 3.4(4.0其实也差不多),amfphp 1.9(唉,竟然是绝唱了),as3,sqlite 3.0,PHP 5.26
FLEX------------------------------------------------------------------------------------------
再来创建个类
基本上完成?no,还要给flex配置个参数,就像c#的config文件一样,这个很重要,不能忘(不过似乎可以用的别的方法)
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="AMFPHP">
<channels>
<channel ref="my-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
http://localhost/gateway.php的路径必须正确
下面就来弄amfphp那边的东西
NewsClass.php
X.php
接下来还得创建个SQLITE的数据库才行
不会用命令创建数据库的话可以去下个SQLiteManager,而且支持中文
数据库名:news.db
表名:news
字段:id name
然后把数据放到和php类相同的目录下就可以了
编译 运行 看到了什么?
对 什么都没有
因为没添加数据的原因……期待下篇的sqlite的写入
网上大多都是flex的AIR中直接使用SQL类去连接的例子
咱做的是RIA
所以我就上这方面的东西
Flex 3.4(4.0其实也差不多),amfphp 1.9(唉,竟然是绝唱了),as3,sqlite 3.0,PHP 5.26
FLEX------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" horizontalAlign="center" initialize="init();" >
<mx:Script>
<![CDATA[
import mx.utils.ArrayUtil;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import flash.events.Event;
import flash.events.MouseEvent;
import mx.events.CloseEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.managers.PopUpManager;
[Bindable]
private var sqlitedata:ArrayCollection;
[Bindable]
public var news:News;
private function init():void
{
myamf.getNews.send();
}
private function getData(evt:ResultEvent):void
{
sqlitedata = new ArrayCollection(ArrayUtil.toArray(evt.result));
}
private function onFault(evt:FaultEvent):void
{
Alert.show(evt.fault.faultString, evt.fault.faultCode.toString());
}
private function onSelected(evt:Event):void
{
news= News(DataGrid(evt.target).selectedItem);
}
]]>
</mx:Script>
<mx:RemoteObject id="getNews" source="NewsClass"
destination="AMFPHP" fault="onFault(event)" showBusyCursor="false">
<mx:method name="getNews" result="getData(event)" fault="onFault(event)" />
</mx:RemoteObject>
<mx:DataGrid id="dg"
dataProvider="{sqlitedata}" width="600" height="300" horizontalCenter="0" y="0" editable="false" enabled="true" variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn dataField="id" headerText="编号" resizable="false" width="40" textAlign="center"/>
<mx:DataGridColumn dataField="name" headerText="标题" resizable="false" sortable="false" width="560"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" horizontalAlign="center" initialize="init();" >
<mx:Script>
<![CDATA[
import mx.utils.ArrayUtil;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import flash.events.Event;
import flash.events.MouseEvent;
import mx.events.CloseEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.managers.PopUpManager;
[Bindable]
private var sqlitedata:ArrayCollection;
[Bindable]
public var news:News;
private function init():void
{
myamf.getNews.send();
}
private function getData(evt:ResultEvent):void
{
sqlitedata = new ArrayCollection(ArrayUtil.toArray(evt.result));
}
private function onFault(evt:FaultEvent):void
{
Alert.show(evt.fault.faultString, evt.fault.faultCode.toString());
}
private function onSelected(evt:Event):void
{
news= News(DataGrid(evt.target).selectedItem);
}
]]>
</mx:Script>
<mx:RemoteObject id="getNews" source="NewsClass"
destination="AMFPHP" fault="onFault(event)" showBusyCursor="false">
<mx:method name="getNews" result="getData(event)" fault="onFault(event)" />
</mx:RemoteObject>
<mx:DataGrid id="dg"
dataProvider="{sqlitedata}" width="600" height="300" horizontalCenter="0" y="0" editable="false" enabled="true" variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn dataField="id" headerText="编号" resizable="false" width="40" textAlign="center"/>
<mx:DataGridColumn dataField="name" headerText="标题" resizable="false" sortable="false" width="560"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
再来创建个类
package
{
[RemoteClass(alias = "NewsClass")]
[Bindable]
public class News
{
public var id:String;
public var name:String;
public function News()
{
}
}
}
{
[RemoteClass(alias = "NewsClass")]
[Bindable]
public class News
{
public var id:String;
public var name:String;
public function News()
{
}
}
}
基本上完成?no,还要给flex配置个参数,就像c#的config文件一样,这个很重要,不能忘(不过似乎可以用的别的方法)
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="AMFPHP">
<channels>
<channel ref="my-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
http://localhost/gateway.php的路径必须正确
下面就来弄amfphp那边的东西
NewsClass.php
<?php
include_once ("X.php");
class NewsClass{
public function getNews ()
{
$db = new PDO("sqlite:news.db");
$conn = $db->prepare('select * from news');
$conn->execute();
$result = $conn->fetchAll();
$arr = array();
for ($i = 0; $i < count($result); $i++)
{
$news= new X();
$news->id = $result[$i][0];
$news->name = $result[$i][1];
$arr[] = $tongji;
}
$conn = null;
$db = null;
return $arr;
}
}>
include_once ("X.php");
class NewsClass{
public function getNews ()
{
$db = new PDO("sqlite:news.db");
$conn = $db->prepare('select * from news');
$conn->execute();
$result = $conn->fetchAll();
$arr = array();
for ($i = 0; $i < count($result); $i++)
{
$news= new X();
$news->id = $result[$i][0];
$news->name = $result[$i][1];
$arr[] = $tongji;
}
$conn = null;
$db = null;
return $arr;
}
}>
X.php
<?php
class X
{
public $id;
public $name;
public $_explicitType = "News";//对应AS中的类名
}
class X
{
public $id;
public $name;
public $_explicitType = "News";//对应AS中的类名
}
接下来还得创建个SQLITE的数据库才行
不会用命令创建数据库的话可以去下个SQLiteManager,而且支持中文
数据库名:news.db
表名:news
字段:id name
然后把数据放到和php类相同的目录下就可以了
编译 运行 看到了什么?
对 什么都没有
因为没添加数据的原因……期待下篇的sqlite的写入
Oct
23
拿着网上一位仁兄的flex3代 改了下
下篇文 flex4与sqlite的交互
<?xml version="1.0" encoding="utf-8"?>
<s:Application contentCreationComplete="initApp()" xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.events.ProgressEvent;
import flash.events.MouseEvent;
import flash.geom.Point;
import mx.controls.Image;
import mx.graphics.codec.JPEGEncoder;
import flash.display.BitmapData;
import flash.display.Bitmap;
private var oldY:Number;//记录 上一次停留的y坐 值
private var oldX:Number;//记录 上一次停留的x坐 值
public var ratio:Number;//记录图片的宽高比
public var oldWidth:Number;//记录放缩前的图片宽
/*要保证图片在放缩过程之中不会乱跑,就必须锁定图片的中心点*/
private var newCY:Number;//当对图片进行放大缩小时,记录图片中心点的x坐 值。
private var newCX:Number;//当对图片进行放大缩小时,记录图片中心点的y坐 值。
private var cover_X:Number;//当创建一个矩形来截取图片时,此变量表示矩形位置的x坐 值。
private var cover_Y:Number;//当创建一个矩形来截取图片时,此变量表示矩形位置的y坐 值。
/*创建完程序之后执行的初始化*/
internal function initApp():void{
img.source="xxx.jpg";
}
/*当图片正在 载的时候执行此方法*/
internal function showProcess(event:ProgressEvent):void{
var loaded:Number=event.bytesLoaded;
var total:Number=event.bytesTotal;
var p:Number=Math.floor(loaded/total*100);
tip_txt.text="正在 载图片:"+p;
}
/*当图片 载完成之后执行此方法*/
internal function initImg():void{
tip_txt.text="图片 载完毕!";
ratio=img.contentHeight/img.contentWidth;
oldWidth=img.contentWidth;
cover_X=cover.x;//把截图的矩形定位到中间,即现在与cover重合
cover_Y=cover.y;
newCY=img.contentHeight/2;
newCX=img.contentWidth/2;
//drawCover();
}
/**/
private function onMouseMove(event:MouseEvent):void{
if(event.buttonDown){
var x:Number = event.stageX - oldX;// x轴的偏移量
var y:Number = event.stageY - oldY;// y轴的偏移量
oldX = event.stageX;// 现在的x坐 值
oldY = event.stageY;// 现在的y坐 值
img.move(img.x + x,img.y + y);//改变图片的x和y值,实现图片移动
//由于图片 载进来的时候注册点都是在父层的左上角,这是不会改变的。我们所看到的图片移动只是图片坐 在平移。
//但是我们创建的矩形框与我们对图片位置的看法是不一 的,在它的眼中看到并不是我们移动后的图片,不管我们怎么移动,它看到的都是在左上角没有动的图片。
//虽然这 图片在我们看来不存在,但是矩形框会记得这 图片在左上角的 子(如果这 图片被放缩,它也会 据实际比例对它眼中的左上角的图片进行相应的放缩)。
//当我们移动图片到中间的cover时,矩形框此时的坐 并没有改变,除非我们 据移动的情况,来给矩形框设定相应的值。
cover_X -= x;//为什么用减号呢,这是 为如果我们把图片从左向右移动到cover中,那么对应的矩形如果想找到和cover中一 的像 集合,就必须向左移动, 为矩形
//眼中的图片不会跟着我们也向右平移,所以只有矩形向左平移才能找到相应的像 集合。所以x坐 值就得减,而不是 。
cover_Y -= y;
newCX=img.x+img.width/2;//当滑动图片到一个位置,计算出此时图片的中心点的x坐 值,如果放缩图片,则让此坐 不变。
newCY=img.y+img.height/2;//当滑动图片到一个位置,计算出此时图片的中心点的y坐 值,如果放缩图片,则让此坐 不变。
//drawCover();
}
}
private function onMouseDown(event:MouseEvent):void{
oldX = event.stageX;//在 按下,但未滑动之前记录 的位置坐
oldY = event.stageY;
}
internal function hsChange(target:DisplayObject):void{
var xx:Number=img.x;
var yy:Number=img.y;//这里的xx和yy相当与图片为移动之前的坐
img.x=newCX-(hsval.value*oldWidth)/2;//图片放缩时,图片的中心点不变,变的是图片的左顶点的坐
img.y=newCY-(hsval.value*oldWidth*ratio)/2;
img.width=hsval.value*oldWidth;//图片放缩时改变图片的宽
img.height=img.width*ratio;
cover_X = cover_X-(img.x-xx);
cover_Y = cover_Y-(img.y-yy);//这两句的意思与图片移动一 。
//drawCover();
}
private function drawCover():void
{
//创建一个矩形区域,来截取相片,在此之前我们已经虚构了一个矩形,现在就相当于把这个虚构的矩形弄成真的。
var rect:Rectangle = new Rectangle(cover_X,cover_Y,cover.width,cover.height);
//var bmd:BitmapData = (img.content as Bitmap).bitmapData;
//创建了一个位图
var bmd:BitmapData = new BitmapData(img.width,img.height,false,0);
//把图片在父层的左上角画出来(如果图片已经被放缩,就画放缩之后的,这也就是虚构矩形眼中的那 我们看不见的图片)。
bmd.draw(img,null,null,null,null,false);
//创建一个与矩形一 大小的位图
var bmd2:BitmapData = new BitmapData(rect.width,rect.height);
var point:Point = new Point(0,0);
//从bmd的位图中复制rect位置,rect大小的矩形区域,赋给bmd2,在bmd2中的起始点是point
bmd2.copyPixels(bmd,rect,point,null,null,false);
/*cover.graphics.beginBitmapFill(bmd2);
cover.graphics.drawRect(0,0,rect.width,rect.height);
cover.graphics.endFill();*/
//将bmd2的像 数据填充到画布can3中。
can3.graphics.beginBitmapFill(bmd2);
can3.graphics.drawRect(0,0,rect.width,rect.height);
can3.graphics.endFill();
}
/*
public function takeSnapshot(b:BitmapData) :void
{
var jpegenc:JPEGEncoder=new JPEGEncoder(80);
var imgByteArray:ByteArray=jpegenc.encode(b);
}*/
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Label x="10" y="29" text=" 签" width="291" id="tip_txt" height="17"/>
<s:HSlider id="hsval" x="21" y="10" minimum="0.1" maximum="2" value="1" liveDragging="true" change="hsChange(img)" snapInterval="0.1"/>
<s:Group x="260" y="10" width="500" height="500" id="can" mouseMove="onMouseMove(event)" mouseDown="onMouseDown(event)" buttonMode="true" contentBackgroundColor="#000000">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#000000"/>
</s:fill>
</s:Rect>
<mx:Image x="10" y="10" width="153" height="113" id="img" progress="showProcess(event)" complete="initImg()" alpha="1.0"/>
<s:Group x="0" y="0" width="500" height="176" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="0" y="176" width="176" height="149" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="0" y="325" width="500" height="200" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="324" y="176" width="177" height="149" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group width="150" height="150" id="cover" x="175" y="175">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#ffffff" alpha="0.4"/>
</s:fill>
</s:Rect>
</s:Group>
</s:Group>
<s:Button x="10" y="364" label="按钮" id="result" click="drawCover()"/>
<s:Group x="21" y="174" width="150" height="150" id="can3">
</s:Group>
</s:Application>
<s:Application contentCreationComplete="initApp()" xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.events.ProgressEvent;
import flash.events.MouseEvent;
import flash.geom.Point;
import mx.controls.Image;
import mx.graphics.codec.JPEGEncoder;
import flash.display.BitmapData;
import flash.display.Bitmap;
private var oldY:Number;//记录 上一次停留的y坐 值
private var oldX:Number;//记录 上一次停留的x坐 值
public var ratio:Number;//记录图片的宽高比
public var oldWidth:Number;//记录放缩前的图片宽
/*要保证图片在放缩过程之中不会乱跑,就必须锁定图片的中心点*/
private var newCY:Number;//当对图片进行放大缩小时,记录图片中心点的x坐 值。
private var newCX:Number;//当对图片进行放大缩小时,记录图片中心点的y坐 值。
private var cover_X:Number;//当创建一个矩形来截取图片时,此变量表示矩形位置的x坐 值。
private var cover_Y:Number;//当创建一个矩形来截取图片时,此变量表示矩形位置的y坐 值。
/*创建完程序之后执行的初始化*/
internal function initApp():void{
img.source="xxx.jpg";
}
/*当图片正在 载的时候执行此方法*/
internal function showProcess(event:ProgressEvent):void{
var loaded:Number=event.bytesLoaded;
var total:Number=event.bytesTotal;
var p:Number=Math.floor(loaded/total*100);
tip_txt.text="正在 载图片:"+p;
}
/*当图片 载完成之后执行此方法*/
internal function initImg():void{
tip_txt.text="图片 载完毕!";
ratio=img.contentHeight/img.contentWidth;
oldWidth=img.contentWidth;
cover_X=cover.x;//把截图的矩形定位到中间,即现在与cover重合
cover_Y=cover.y;
newCY=img.contentHeight/2;
newCX=img.contentWidth/2;
//drawCover();
}
/**/
private function onMouseMove(event:MouseEvent):void{
if(event.buttonDown){
var x:Number = event.stageX - oldX;// x轴的偏移量
var y:Number = event.stageY - oldY;// y轴的偏移量
oldX = event.stageX;// 现在的x坐 值
oldY = event.stageY;// 现在的y坐 值
img.move(img.x + x,img.y + y);//改变图片的x和y值,实现图片移动
//由于图片 载进来的时候注册点都是在父层的左上角,这是不会改变的。我们所看到的图片移动只是图片坐 在平移。
//但是我们创建的矩形框与我们对图片位置的看法是不一 的,在它的眼中看到并不是我们移动后的图片,不管我们怎么移动,它看到的都是在左上角没有动的图片。
//虽然这 图片在我们看来不存在,但是矩形框会记得这 图片在左上角的 子(如果这 图片被放缩,它也会 据实际比例对它眼中的左上角的图片进行相应的放缩)。
//当我们移动图片到中间的cover时,矩形框此时的坐 并没有改变,除非我们 据移动的情况,来给矩形框设定相应的值。
cover_X -= x;//为什么用减号呢,这是 为如果我们把图片从左向右移动到cover中,那么对应的矩形如果想找到和cover中一 的像 集合,就必须向左移动, 为矩形
//眼中的图片不会跟着我们也向右平移,所以只有矩形向左平移才能找到相应的像 集合。所以x坐 值就得减,而不是 。
cover_Y -= y;
newCX=img.x+img.width/2;//当滑动图片到一个位置,计算出此时图片的中心点的x坐 值,如果放缩图片,则让此坐 不变。
newCY=img.y+img.height/2;//当滑动图片到一个位置,计算出此时图片的中心点的y坐 值,如果放缩图片,则让此坐 不变。
//drawCover();
}
}
private function onMouseDown(event:MouseEvent):void{
oldX = event.stageX;//在 按下,但未滑动之前记录 的位置坐
oldY = event.stageY;
}
internal function hsChange(target:DisplayObject):void{
var xx:Number=img.x;
var yy:Number=img.y;//这里的xx和yy相当与图片为移动之前的坐
img.x=newCX-(hsval.value*oldWidth)/2;//图片放缩时,图片的中心点不变,变的是图片的左顶点的坐
img.y=newCY-(hsval.value*oldWidth*ratio)/2;
img.width=hsval.value*oldWidth;//图片放缩时改变图片的宽
img.height=img.width*ratio;
cover_X = cover_X-(img.x-xx);
cover_Y = cover_Y-(img.y-yy);//这两句的意思与图片移动一 。
//drawCover();
}
private function drawCover():void
{
//创建一个矩形区域,来截取相片,在此之前我们已经虚构了一个矩形,现在就相当于把这个虚构的矩形弄成真的。
var rect:Rectangle = new Rectangle(cover_X,cover_Y,cover.width,cover.height);
//var bmd:BitmapData = (img.content as Bitmap).bitmapData;
//创建了一个位图
var bmd:BitmapData = new BitmapData(img.width,img.height,false,0);
//把图片在父层的左上角画出来(如果图片已经被放缩,就画放缩之后的,这也就是虚构矩形眼中的那 我们看不见的图片)。
bmd.draw(img,null,null,null,null,false);
//创建一个与矩形一 大小的位图
var bmd2:BitmapData = new BitmapData(rect.width,rect.height);
var point:Point = new Point(0,0);
//从bmd的位图中复制rect位置,rect大小的矩形区域,赋给bmd2,在bmd2中的起始点是point
bmd2.copyPixels(bmd,rect,point,null,null,false);
/*cover.graphics.beginBitmapFill(bmd2);
cover.graphics.drawRect(0,0,rect.width,rect.height);
cover.graphics.endFill();*/
//将bmd2的像 数据填充到画布can3中。
can3.graphics.beginBitmapFill(bmd2);
can3.graphics.drawRect(0,0,rect.width,rect.height);
can3.graphics.endFill();
}
/*
public function takeSnapshot(b:BitmapData) :void
{
var jpegenc:JPEGEncoder=new JPEGEncoder(80);
var imgByteArray:ByteArray=jpegenc.encode(b);
}*/
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Label x="10" y="29" text=" 签" width="291" id="tip_txt" height="17"/>
<s:HSlider id="hsval" x="21" y="10" minimum="0.1" maximum="2" value="1" liveDragging="true" change="hsChange(img)" snapInterval="0.1"/>
<s:Group x="260" y="10" width="500" height="500" id="can" mouseMove="onMouseMove(event)" mouseDown="onMouseDown(event)" buttonMode="true" contentBackgroundColor="#000000">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#000000"/>
</s:fill>
</s:Rect>
<mx:Image x="10" y="10" width="153" height="113" id="img" progress="showProcess(event)" complete="initImg()" alpha="1.0"/>
<s:Group x="0" y="0" width="500" height="176" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="0" y="176" width="176" height="149" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="0" y="325" width="500" height="200" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group x="324" y="176" width="177" height="149" alpha="0.4" contentBackgroundColor="#FFFFFF">
</s:Group>
<s:Group width="150" height="150" id="cover" x="175" y="175">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#ffffff" alpha="0.4"/>
</s:fill>
</s:Rect>
</s:Group>
</s:Group>
<s:Button x="10" y="364" label="按钮" id="result" click="drawCover()"/>
<s:Group x="21" y="174" width="150" height="150" id="can3">
</s:Group>
</s:Application>
下篇文 flex4与sqlite的交互
Sep
20
我的一个小CASE主要是以flash来做表现 flex做逻辑
所以在flash中画些按钮啊 之类的
但是遇到了一点小问题
就是远程打开该CASE的第一次 flex会接受不到flash 过来的值
flash代 如下:
flex代 如下:
改动后如下
flash代 :
flex代 :
总结了一下
自己想得过于简单了,原本以为把flash产生的数据转换一下数据类型就可以万事大吉。唉,还是时间广播比较好啊,不再取巧了。
所以在flash中画些按钮啊 之类的
但是遇到了一点小问题
就是远程打开该CASE的第一次 flex会接受不到flash 过来的值
flash代 如下:
v1.addEventListener(MouseEvent.CLICK,b1);
v2.addEventListener(MouseEvent.CLICK,b2);
v3.addEventListener(MouseEvent.CLICK,b3);
function b1(event:MouseEvent):void{
trace("clickAdmin");
}
function b2(event:MouseEvent):void{
trace("clickGbook");
}
function b3(event:MouseEvent):void{
trace("clickAbout");
}
v2.addEventListener(MouseEvent.CLICK,b2);
v3.addEventListener(MouseEvent.CLICK,b3);
function b1(event:MouseEvent):void{
trace("clickAdmin");
}
function b2(event:MouseEvent):void{
trace("clickGbook");
}
function b3(event:MouseEvent):void{
trace("clickAbout");
}
flex代 如下:
<mx:SWFLoader source="swf/nav.swf" height="245.1" width="254.1" id="bearflash" y="0"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
import com.bear.jia.caringorm.view.login;
internal function init():void{
var obj:Object=bearflash.content;
obj.v3.addEventListener(MouseEvent.CLICK,clickAbout);
obj.v2.addEventListener(MouseEvent.CLICK,clickGbook);
obj.v1.addEventListener(MouseEvent.CLICK,clickAdmin);
}
public function clickAbout(event:MouseEvent):void{
var _about:about = new about()
_about.x = 250;
_about.y = 120;
PopUpManager.addPopUp(_about, this, true);
}
public function clickGbook(event:MouseEvent):void{
var gbook:guestBook = new guestBook();
gbook.x = 250;
gbook.y = 120;
PopUpManager.addPopUp(gbook, this, true);
}
public function clickAdmin(event:MouseEvent):void{
var adminLogin:login = new login();
adminLogin.x = 350;
adminLogin.y = 250;
PopUpManager.addPopUp(adminLogin, this, true);
}
]]>
</mx:Script>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
import com.bear.jia.caringorm.view.login;
internal function init():void{
var obj:Object=bearflash.content;
obj.v3.addEventListener(MouseEvent.CLICK,clickAbout);
obj.v2.addEventListener(MouseEvent.CLICK,clickGbook);
obj.v1.addEventListener(MouseEvent.CLICK,clickAdmin);
}
public function clickAbout(event:MouseEvent):void{
var _about:about = new about()
_about.x = 250;
_about.y = 120;
PopUpManager.addPopUp(_about, this, true);
}
public function clickGbook(event:MouseEvent):void{
var gbook:guestBook = new guestBook();
gbook.x = 250;
gbook.y = 120;
PopUpManager.addPopUp(gbook, this, true);
}
public function clickAdmin(event:MouseEvent):void{
var adminLogin:login = new login();
adminLogin.x = 350;
adminLogin.y = 250;
PopUpManager.addPopUp(adminLogin, this, true);
}
]]>
</mx:Script>
改动后如下
flash代 :
v1.addEventListener(MouseEvent.CLICK,b1);
v2.addEventListener(MouseEvent.CLICK,b2);
v3.addEventListener(MouseEvent.CLICK,b3);
function b1(event:MouseEvent):void{
dispatchEvent(new Event("clickAdmin"));
}
function b2(event:MouseEvent):void{
dispatchEvent(new Event("clickGbook"));
}
function b3(event:MouseEvent):void{
dispatchEvent(new Event("clickAbout"));
}
v2.addEventListener(MouseEvent.CLICK,b2);
v3.addEventListener(MouseEvent.CLICK,b3);
function b1(event:MouseEvent):void{
dispatchEvent(new Event("clickAdmin"));
}
function b2(event:MouseEvent):void{
dispatchEvent(new Event("clickGbook"));
}
function b3(event:MouseEvent):void{
dispatchEvent(new Event("clickAbout"));
}
flex代 :
<mx:SWFLoader source="swf/nav.swf" height="245.1" width="254.1" y="0" complete="Flash(event)" id="flashContent"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
import com.bear.jia.caringorm.view.login;
var flashMc:MovieClip;
internal function Flash(event):void{
flashMc=flashContent.content as MovieClip;
flashMc.addEventListener("clickAbout",clickAbout);
flashMc.addEventListener("clickGbook",clickGbook);
flashMc.addEventListener("clickAdmin",clickAdmin);
}
public function clickAbout(event:Event):void{
var _about:about = new about()
_about.x = 250;
_about.y = 120;
PopUpManager.addPopUp(_about, this, true);
}
public function clickGbook(event:Event):void{
var gbook:guestBook = new guestBook();
gbook.x = 250;
gbook.y = 120;
PopUpManager.addPopUp(gbook, this, true);
}
public function clickAdmin(event:Event):void{
var adminLogin:login = new login();
adminLogin.x = 350;
adminLogin.y = 250;
PopUpManager.addPopUp(adminLogin, this, true);
}
]]>
</mx:Script>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
import com.bear.jia.caringorm.view.login;
var flashMc:MovieClip;
internal function Flash(event):void{
flashMc=flashContent.content as MovieClip;
flashMc.addEventListener("clickAbout",clickAbout);
flashMc.addEventListener("clickGbook",clickGbook);
flashMc.addEventListener("clickAdmin",clickAdmin);
}
public function clickAbout(event:Event):void{
var _about:about = new about()
_about.x = 250;
_about.y = 120;
PopUpManager.addPopUp(_about, this, true);
}
public function clickGbook(event:Event):void{
var gbook:guestBook = new guestBook();
gbook.x = 250;
gbook.y = 120;
PopUpManager.addPopUp(gbook, this, true);
}
public function clickAdmin(event:Event):void{
var adminLogin:login = new login();
adminLogin.x = 350;
adminLogin.y = 250;
PopUpManager.addPopUp(adminLogin, this, true);
}
]]>
</mx:Script>
总结了一下
自己想得过于简单了,原本以为把flash产生的数据转换一下数据类型就可以万事大吉。唉,还是时间广播比较好啊,不再取巧了。






