network中的image

通過twaver.Utils.registerImage***方法,具體參考Demo

view plaincopy to clipboardprint?
代碼:
[Embed(source="a.png")]
public static const imageName:Class;
Utils.registerImageByClass("a",imageName);
然後Node.image="a"設置網元的圖片。


嗯,看了代碼,有個疑問,是通過哪個語句決定哪個layer顯示在上哪個顯示在下?

LayerVectorDemo這個例子說的就是圖層的操作,這是控制代碼

view plaincopy to clipboardprint?
layerBox.moveSelectionToTop()
network.selectionModel.addSelectionChangeListener(function(e:*):void{
var node:Node = network.selectionModel.lastData as Node;
if(node != null){
var layer:ILayer = layerBox.getLayerByID(node.layerID);
layerBox.selectionModel.setSelection(layer);
}
});
...
DemoUtils.createButtonBar(layerToolbar, [
DemoUtils.createButtonInfo("move selected rows to top", DemoImages.top, layerBox.moveSelectionToTop),
DemoUtils.createButtonInfo("move selected rows to up", DemoImages.up, layerBox.moveSelectionUp),
DemoUtils.createButtonInfo("move selected rows to down", DemoImages.down, layerBox.moveSelectionDown),
DemoUtils.createButtonInfo("move selected rows to bottom", DemoImages.bottom, layerBox.moveSelectionToBottom)
]);


--通過 layer加到layerbox中的順序,最後加的在最上面,也可以調整順序(databox中的move*方法)。

我使用了network.zoomOverview();
在添加一個lay1之後,var lay1:ILayer=new Layer(lay1);
當window大小變化時,不能像未添加時那般,network大小隨着window按比例隨之變化,而是出現滾動條。這個怎麼辦?
view plaincopy to clipboardprint?
代碼:
network.addEventListener(ResizeEvent.RESIZE,function(e:ResizeEvent):void{
network.zoomOverview();
});

我的是這樣,我把程序簡化一下,其中的a.jpg就是個普通圖片。代碼運行後,zoomoverview不能達到理想效果。
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:twaver="http://www.servasoftware.com/2009/twaver/flex"
xmlns:demo="demo.common.*"
creationComplete="initApp()" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
<mx:Script>
<!--[CDATA[
import flash.events.KeyboardEvent;
import flash.net.Socket;
import flash.utils.ByteArray;
import mx.controls.Alert;
import mx.events.ListEvent;
import mx.events.ResizeEvent;
import twaver.*;
import twaver.network.Network;
import twaver.network.layout.AutoLayouter;
private var timer:Timer = new Timer(1000);
private var A1x:int=190,A2x:int=290,A3x:int=190,A4x:int=245,A5x:int=345,
B1x:int=50,B2x:int=50,B3x:int=200,B4x:int=200,B5x:int=400,B6x:int=600,B7x:int=600,B8x:int=800,B9x:int=800,B10x:int=1000,B11x:int=1000,
C1x:int=300,C2x:int=335,C3x:int=370,C4x:int=410,C5x:int=460,
D1x:int=92, D2x:int=65, D3x:int=120,D4x:int=190,D5x:int=167,D6x:int=220,
A1y:int=35, A2y:int=35, A3y:int=110,A4y:int=110,A5y:int=110,
B1y:int=150,B2y:int=250,B3y:int=150,B4y:int=250,B5y:int=250,B6y:int=200,B7y:int=300,B8y:int=150,B9y:int=350,B10y:int=100,B11y:int=400,
C1y:int=323,C2y:int=292,C3y:int=250,C4y:int=310,C5y:int=260,
D1y:int=180,D2y:int=255,D3y:int=255,D4y:int=180,D5y:int=255,D6y:int=255;

private var layerBox:LayerBox;

[Embed(source="a.jpg")]
public static const imageName:Class;
private var boxA:ElementBox,boxB:ElementBox,boxC:ElementBox,boxD:ElementBox,box:ElementBox ;//box不能在此處實例化
private function initApp():void{
Utils.registerImageByClass("a",imageName);
boxB = networkB.elementBox;
layerBox = boxB.layerBox;

var lay1:ILayer=new Layer(lay1);
var lay2:ILayer=new Layer(lay2);
var B1:Node = createNode_B("B1",B1x,B1y);
var B2:Node = createNode_B("B2",B2x,B2y);
var B3:Node = createNode_B("B3",B3x,B3y);
var B4:Node = createNode_B("B4",B4x,B4y);
var B5:Node = createNode_B("B5",B5x,B5y);
var B6:Node = createNode_B("B6",B6x,B6y);
var B7:Node = createNode_B("B7",B7x,B7y);
var B8:Node = createNode_B("B8",B8x,B8y);
var B9:Node = createNode_B("B9",B9x,B9y);
var B10:Node= createNode_B("B10",B10x,B10y);
var B11:Node= createNode_B("B11",B11x,B11y);
B1.image="a";
lay1.addChild(B1);
lay2.addChild(B2);

//layerBox.add(lay2);

//layerBox.add(lay1);
//layerBox.moveToBottom(lay1);

}
private function createNode_B(name:String,x:int,y:int):Node{
var node:Node = new Node();
node.name = name;
node.setLocation(x,y);
boxB.add(node);
return node;
}
private function networkZoomOverview(evt:ResizeEvent):void{
networkA.zoomOverview();
networkB.zoomOverview();
}

]]-->

</mx:Script>
<mx:states>
<mx:State name="C">
<mx:SetProperty target="{windowC}" name="width" value="800"/>
<mx:SetProperty target="{windowC}" name="height" value="500"/>
<mx:SetProperty target="{windowB}" name="width" value="200"/>
<mx:SetProperty target="{windowB}" name="height" value="120"/>
<mx:SetProperty target="{windowC}" name="x" value="10"/>
<mx:SetProperty target="{windowC}" name="y" value="10"/>
<mx:SetProperty target="{windowB}" name="x" value="820"/>
<mx:SetProperty target="{windowB}" name="y" value="10"/>
</mx:State>
<mx:State name="B">
<mx:SetProperty target="{windowC}" name="width" value="200"/>
<mx:SetProperty target="{windowC}" name="height" value="120"/>
<mx:SetProperty target="{windowB}" name="width" value="800"/>
<mx:SetProperty target="{windowB}" name="height" value="500"/>
<mx:SetProperty target="{windowB}" name="x" value="10"/>
<mx:SetProperty target="{windowB}" name="y" value="10"/>
<mx:SetProperty target="{windowC}" name="x" value="820"/>
<mx:SetProperty target="{windowC}" name="y" value="10"/>
</mx:State>
</mx:states>
<mx:transitions>
<mx:Transition fromState="*" toState="*">
<mx:Parallel targets="{[windowC, windowB]}">
<mx:Move />
<mx:Resize />
</mx:Parallel>
</mx:Transition>
</mx:transitions>
<mx:VBox width="100%" height="520" horizontalAlign="center" verticalAlign="middle">
<mx:Canvas id="Canv" x="0" y="0" width="100%" height="100%" >
<mx:TitleWindow x="40" y="40" width="200" height="50" layout="absolute" title="2" id="windowB" click="currentState='B'"
headerHeight="12" creationCompleteEffect="sequenceEffect" rollOverEffect="glowUp" rollOutEffect="glowDown">
<twaver:Network id="networkA" backgroundColor="0xADD8E6" width="100%" height="100%" fontSize="10"/>
</mx:TitleWindow>
<mx:TitleWindow x="40" y="40" width="200" height="50" layout="absolute" title="3" id="windowC" click="currentState='C'"
headerHeight="12" creationCompleteEffect="sequenceEffect" rollOverEffect="glowUp" rollOutEffect="glowDown">
<twaver:Network id="networkB" backgroundColor="0xADD8E6" width="300%" height="100%" fontSize="10" />
</mx:TitleWindow>
</mx:Canvas >
</mx:VBox>
</mx:Application>

按你的代碼,initApp()中添加:
代碼:
networkB.addEventListener(ResizeEvent.RESIZE, networkZoomOverview);
呃,很抱歉,我犯了個低級失誤,我簡化代碼時多刪了下面這一段:
var link:Link = new Link(B1,B10);
link.setStyle(Styles.LINK_TYPE,Consts.LINK_TYPE_FLEXIONAL_HORIZONTAL);
boxB.add(link);
networkA.addEventListener(ResizeEvent.RESIZE,networkZoomOverview);
networkB.addEventListener(ResizeEvent.RESIZE,networkZoomOverview);
把上面這段添加到initApp()中後,運行完有滾動條。
我已經找到,問題出在link上,可能是因爲B1與B10不在同一layer內吧。
具體解決方法,還請不吝賜教。。
Layer的使用有誤,不是lay1.addChild(B1);
改用
代碼:
var lay1:ILayer=new Layer(lay1);
var lay2:ILayer=new Layer(lay2);
layerBox.add(lay1);
layerBox.add(lay2);
......
B1.layerID = lay1.id;
B2.layerID = lay2.id;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章