<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Fiddler是一個微軟開發(fā)的Http代理,可以用于跟蹤調(diào)試客戶端與服務器之間的Http信息,F(xiàn)iddler監(jiān)控所有的Http往來,可以設置斷點,竄改出入數(shù)據(jù)。


    posted @ 2006-10-10 17:28 云自無心水自閑 閱讀(4389) | 評論 (3)編輯 收藏

    在ActionScript3.0中是不支持函數(shù)重載的.
    最近, 想了個辦法來模擬.
    public?function?add(obj1?:?Object?=?null,?obj2:?Object?=?null)?:?void?{
    ????
    if?(obj1?==?null?&&?obj2?==?null?)?{
    ?????????
    //?調(diào)用無參數(shù)Add函數(shù)
    ?????????AddNoArgument();
    ????}
    ????
    else?if?(?typeof(obj1).toString().toLowerCase()?==?"string")?&&?obj2?==?null?)?{
    ?????????
    //?調(diào)用String參數(shù)的Add函數(shù)
    ?????????AddString(obj1.toString());
    ????}
    }
    當然這個方法也會有一些問題.
    第二種方法
    public?function?add(?args)?:?void?{
    ????
    if?(args.length?==?0)?{
    ?????????
    //?調(diào)用無參數(shù)Add函數(shù)
    ?????????AddNoArgument();
    ????}
    ????
    else?if?(?args.length?==?1?&&?typeof(args[0])?==?"int")?)?{
    ?????????
    //?調(diào)用String參數(shù)的Add函數(shù)
    ?????????AddString(args[0].toString());
    ????}
    }

    其中addString是add函數(shù)的String類型的重載函數(shù).
    如果大家有什么更好的解決方案, 請不吝賜教.

    posted @ 2006-09-28 10:28 云自無心水自閑 閱讀(974) | 評論 (0)編輯 收藏

    XtraReports的設計器可以作為給終端用戶使用的獨立的報表設計器, 也就是說用戶可以自己編輯,預覽,甚至創(chuàng)建報表. 這個設計器和Visual Studio的集成開發(fā)環(huán)境很象, 可以定制外觀, 滿足用戶的需要. 甚至, 你可以自己創(chuàng)建報表設計器, 因為在XtraReport中設計器是一個分開獨立的控件.
    ??? 先介紹一下設計器的組成元件. 報表設計器主要是用于使用戶可以編輯報表. 標準的設計器是使用XRDesignFormEx類來展示的, 這個類提供了編輯和創(chuàng)建報表的主要功能.
    ??? 下圖是一個標準的報表設計器:


    ??? 這個Form里包含了不同的元件: 報表在XRDesignPanel對象中被編輯, 其他工具欄和停靠面板由XRDesignBarManager和XRDesignDockManager控制. 所有的這些控件都可以通過設計Form的XRDesignFormExBase.DesignPanel, XRDesignFormEx.DesignBarManager和XRDesignFormEx.DesignDockManager屬性來操作.
    ??? 下面列舉了設計器中使用的元件接口.

    Element

    Description

    Design Panel這是報表設計器的主要元件. 它展示了一個面板用于創(chuàng)建一個新的報表或者編輯原有的報表. 它顯示報表帶并控制報表帶中控件的歸屬, 并可以移動, 縮放, 復制, 粘貼這些控件, 另外還可以在控件上綁定數(shù)據(jù), 或者進行其他的操作.? 而且可以預覽報表效果.
    Main Menu展示報表設計器的主菜單. 包含了一系列的項目和子項目, 用于為用戶提供相關(guān)操作. 通常, 它復制所有的ToolBar按鈕, 格式化按鈕以及布局按鈕.
    Main Toolbar展示報表設計器的ToolBar. 包含創(chuàng)建報表, 保存裝載報表布局, 剪裁,復制,粘貼等按鈕, 以及撤銷, 重做等操作.
    Formatting Toolbar展示報表設計器的格式化Toolbar. 包含一些缺省的操作文本的按鈕.
    Layout Toolbar展示報表設計器的布局Toolbar. 包含縮放, 移動一組控件位置的按鈕.
    Status Bar

    在報表設計器底部展示StatusBar. 通常用于顯示報表編輯操作過程中的特殊信息.
    Toolbox展示報表設計器的控件工具箱. 包含所有報表控件, 可以拖放新的控件到報表區(qū)中. 可以添加自定義控件到工具箱中.
    Report Explorer展示報表設計器的Explorer. 它顯示了報表樹狀結(jié)構(gòu), 使用它可以很方便地瀏覽整個報表.
    Field List展示了報表設計器的樹狀字段列表. 顯示了數(shù)據(jù)源的樹狀結(jié)構(gòu). 用于將數(shù)據(jù)綁定到報表.
    Property Grid展示報表設計器的屬性容器. 可以修改報表元件的屬性.

    ??? 激活報表設計器: 盡管報表設計器是XRDesignFromEx的實例, 但一般不需要手工創(chuàng)建此對象. 通常使用以下代碼:
    //?Create?a?new?report.
    XtraReport1?report?=?new?XtraReport1();

    //?Invoke?the?End-User?Designer?and?load?the?report?into?it.
    report.ShowDesigner();

    //?Invoke?the?End-User?Designer?and?load?the?report?into?it,?modally.
    report.ShowDesignerDialog();

    posted @ 2006-09-26 16:53 云自無心水自閑 閱讀(3934) | 評論 (0)編輯 收藏

    在此介紹創(chuàng)建報表過程中使用到的XtraReports的控件. 所有的控件都可以在設計時,運行時,或者通過設計器添加到報表中, 本文介紹的是一些最基本的信息.

    報表控件概覽

    XtraReports中的所有報表對象都通過在Bands中的控件來表現(xiàn). 在設計時, 報表控件可以從工具箱添加到報表中, 只有點擊工具箱中需要的控件, 然后放到報表帶中即可. 另一種方式是使用字段列舉窗口添加控件, 這種情況下, 控件將和數(shù)據(jù)字段綁定.

    如果要在運行時添加報表控件, 你只需要簡單地創(chuàng)建一個相應類型的變量, 并通過XRControlCollection.Add方法添加到報表帶中即可

    所有的報表控件包括bands都是繼承自XRControl. 其中部分控件可以還作為容器, 這種情況下控件集合可以通過XRControl.Controls來獲得. 如果要獲取控件的容器, 可使用XRControl.Parent屬性.

    下面列舉了XtraReports中的標準報表控件.

    Class Description
    Subreport 用于在報表中添加子報表. 被添加的報表需要被包含在項目中, 并設置SubReport的ReportSource屬性. 子報表可用于合并報表和創(chuàng)建主從表.
    WinControlContainer 用于添加Windows Forms或者第三方的控件. 此對實際上是添加的控件的封裝, 并提供對Drawing方法的支持
    XRBarCode 用于在報表中顯示條形碼. 使用XRBarCode.Symbology和XRBarCode.SymbologyId來設置條形碼的類型
    XRChart 在報表中顯示圖形, 使用此控件來根據(jù)一個或多個SeriesViewTypes來展示不同的數(shù)據(jù).
    XRCheckBox 用于在報表中展示復選框.
    XRLabel 標簽. 可以是單行的, 也可以是多行的.
    XRLine 線條. 使用這個控件來畫線.
    XRPageBreak 換頁. 如果是Band中需要換頁, 那么使用控件的Band.PageBreak屬性比較好.
    XRPageInfo 顯示報表頁面的附加信息. 可以顯示頁碼, 日期或者其他信息.
    XRPanel 用于包含其他控件的控件. 可以使用此控件來進行控件的分組.
    XRPictureBox 在報表中顯示一個圖片
    XRRichText 顯示一個控件, 用于顯示,輸入,修改格式化的文本. 可以用XRRichText.LoadFile從文件中加載文本.
    XRTable 表格
    XRTableCell 表格單元. 與XRControl.Text綁定
    XRTableRow 表格中的行. 通過不需要用到此控件, 直接操作表格單元更普遍.
    XRZipCode 郵政編碼


    posted @ 2006-09-25 11:55 云自無心水自閑 閱讀(11820) | 評論 (5)編輯 收藏

    一個普通的XtraReport報表一般包含數(shù)個包含報表控件的帶. 在這里介紹一個XtraReports中的幾種不同類型的帶, 他們都有一些什么用途, 又是如何添加,編輯,刪除.

    Report Bands

    在把報表添加到應用之后, 缺省的樣子如下圖所示. 可以看到, 報表被初始化分為3個基本的帶(頁頭, 明細, 和頁腳), 這些帶中可以添加不同的報表控件.

    每一種帶指明了控件在報表中是怎樣定位和被打印的, 即確定了打印的順序和次數(shù). 注意, 有些<band strips>包含了帶是如何被打印的信息, 比如: PageHeader和PageFooter就說明了是每一頁都有這一帶的.

    在創(chuàng)建報表時, 可以添加或者刪除任意的帶. 在XtraReports中有很多不同類型的帶, 每一個都是<Band>的子類. 列舉如下:

    Bands類 描述
    TopMarginBand 用于放置出現(xiàn)在報表每頁頁頭最上面的控件
    ReportHeaderBand 用于放置出現(xiàn)在報表開頭的控件
    PageHeaderBand 用于放置出現(xiàn)在報表頁上面, 僅次于TopMarginBand位置的控件. 主要是用于放置需要分頁的表格的頭,
    GroupHeaderBand 用于放置明細帶中分組記錄的頭部控件.?
    DetailBand 用于顯示綁定數(shù)據(jù)的每條記錄
    DetailReportBand 用于創(chuàng)建主從報表. 主從關(guān)系由從報表的XtraReportsBase.DataMember屬性指定
    GroupFooterBand 用于放置明細帶中分組記錄下方的控件
    PageFooterBand 用于放置報表頁下方的控件
    ReportFooterBand 用于放置報表結(jié)束的控件
    BottomMarginBand 用于放置報表每頁最下方的控件

    下圖顯示了不同類型的帶的相對位置:

    TopMarginBand and BottomMarginBand

    ReportHeaderBand and ReportFooterBand

    PageHeaderBand and PageFooterBand

    GroupHeaderBand and GroupFooterBand

    DetailBand

    報表的預覽顯示的不是帶本身, 而是<PrintingSystem>的輸出. PageHeaderBand, PageFooterBand, TopMarginBand和BottomMarginBand在報表預覽的每一頁都有輸出. ReportHeaderBand和ReportFooterBand類只顯示一次. GroupHeaderBand和GroupFooterBand出現(xiàn)在每個記錄組中.



    posted @ 2006-09-22 11:05 云自無心水自閑 閱讀(8070) | 評論 (0)編輯 收藏

    在XtraReport中, 每一個報表都是XtraReport或者其子類. 打個比方說, XtraReport就好象Windows Forms. 同樣的道理, 所有的form都Form類的子類.

    ? XtraReport中的報表類可以與數(shù)據(jù)綁定也可以不綁定. 如果要創(chuàng)建一個綁定數(shù)據(jù)的報表, 需要查看<數(shù)據(jù)綁定>和<綁定數(shù)據(jù)控件>這兩個主題的幫助.
    ? 在創(chuàng)建一個報表時, 可以從已有的報表中加載樣式和布局, 樣式中包含了報表控件外觀的屬性值, 而布局包含了報表的結(jié)構(gòu)信息. 另外, 還可以從其他報表系統(tǒng)中導入報表, 比如: Access, 水晶報表等等, 如果要詳細了解XtraReport的導入功能, 請參閱<Importing Overview>主題.
    ? 報表類(XtraReport的子類)創(chuàng)建后, 就可以生成其實例. 需要注意的是, XtraReport對象可以在Windows Forms中使用也可以在Asp.net中使用. 在Windows應用中使用報表, 通常需要維護報表的<Printing System>, 這個對象提供了報表的輸出功能.

    ? 創(chuàng)建報表有兩種方式, 一種是簡單地添加一個"模板"報表, 一種是通過報表向?qū)韯?chuàng)建報表. 在報表添加到項目后, 報表設計器提供了大量的設計時元素來加快簡化報表的創(chuàng)建. XtraReport工具箱包含了所有的控件, Report Navigator可以瀏覽整個報表, Feild List可以拖放數(shù)據(jù)字段來創(chuàng)建與數(shù)據(jù)綁定的報表控件.
    ?? XtraReport的所有報表都是由<Report Band>和<Report Control>組成的.
    public?class?XtraReport1?:?DevExpress.XtraReports.UI.XtraReport
    {
    ???
    private?DevExpress.XtraReports.UI.DetailBand?Detail;
    ???
    private?DevExpress.XtraReports.UI.PageHeaderBand?PageHeader;
    ???
    private?DevExpress.XtraReports.UI.PageFooterBand?PageFooter;
    ???
    private?DevExpress.XtraReports.UI.XRLabel?xrLabel1;
    ???
    private?DevExpress.XtraReports.UI.XRLabel?xrLabel2;

    ???
    private?System.ComponentModel.Container?components?=?null;

    ???
    public?XtraReport1()
    ???{
    ??????InitializeComponent();
    ???}

    ???
    protected?override?void?Dispose(?bool?disposing?)
    ???{
    ??????
    if(?disposing?)
    ??????{
    ?????????
    if(components?!=?null)
    ?????????{
    ????????????components.Dispose();
    ?????????}
    ??????}
    ??????
    base.Dispose(?disposing?);
    ???}
    ??
    ???
    //?.
    ?
    ? 然后開始創(chuàng)建報表的結(jié)構(gòu), 首先在XtraReportBase.Bands屬性中添加Bands, 然后在相應的Bands的XRControl.Controls屬性中添加控件. 報表帶和控件的添加方法一般是這樣的
    //?Add?Detail,?PageHeader?and?PageFooter?bands?to?the?report's?collection?of?bands.
    this.Bands.AddRange(new?DevExpress.XtraReports.UI.Band[]?{this.Detail,?this.PageHeader,?this.PageFooter});

    //?Add?two?XRLabel?controls?to?the?Detail?band.
    this.Detail.Controls.AddRange(new?DevExpress.XtraReports.UI.XRControl[]?{this.xrLabel1,?this.xrLabel2});

    最后創(chuàng)建好的報表可以輸出給用戶看了
    //?Create?a?report.
    XtraReport1?report?=?new?XtraReport1();

    //?Create?the?report's?document?so?it?can?then?be?previewed,?printed?or?exported.
    //?NOTE:?Usually?you?don't?need?to?call?this?method?as?it's?automatically?called?by?all?of?the?following?methods.
    //?See?the?corresponding?member?topic?to?find?out?when?it?needs?to?be?called.
    report.CreateDocument();

    //?Show?the?form?with?the?report's?print?preview.
    report.ShowPreview();

    //?Print?the?report?in?a?dialog?and?"silent"?mode.
    report.PrintDialog();
    report.Print();

    //?Open?the?report?in?the?End-User?designer
    report.RunDesigner();

    //?Export?the?report.
    report.CreateHtmlDocument("report.html");
    report.CreatePdfDocument(
    "report.pdf");
    report.CreateImage(
    "report.jpg",?System.Drawing.Imaging.ImageFormat.Gif);

    附: XtraReport的類結(jié)構(gòu)層次圖:

    posted @ 2006-09-22 10:20 云自無心水自閑 閱讀(14553) | 評論 (1)編輯 收藏

    1. 我從未創(chuàng)建過一個不使用Cairngorm的RIA應用, 甚至是連一個Mini項目我也使用了Cairngorm.
    使用Cairngorm放大或者說是加劇了學習曲線, 大多數(shù)第一次使用Flex的開發(fā)者是從創(chuàng)建小的應用開始逐步了解Flex的思想和概念. 所以最好先從使用容器和組件,創(chuàng)建動態(tài)界面,使用WebService/HTTP Service,綁定其返回結(jié)果這樣的步驟開始.
    然后嘗試更新后臺的持久數(shù)據(jù),使用ColdFunsion/Java/C#/PHP等等.這是Flex開發(fā)者學習道路上的一個里程碑.
    接下來,可以去理解風格/狀態(tài)/效果這樣的Flex功能, 在Mxml中寫一些ActionScript.
    以上的這些步驟都不涉及到Cairngorm,直到你能熟練地使用Flex后, 可以去閱讀Cairngorm的系列文章(http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html)
    2. 你的應用與用戶的交互非常少,只有一兩個
    這主要是用于衡量應用的復雜性,如果你的應用中的用戶用例(Use-Case)比較多,那么Cairngorm對你將會非常有價值.
    相反,如果用例比較少,那么你完全可以不使用Cairngorm來完成應用.
    最好的解決方案不是無物可加,而是無物可舍!
    the best solution is not when there is nothing left to add, but when there is nothing left to take away!
    3. 你是應用的唯一開發(fā)者
    Cairngorm的優(yōu)點是可控性/可維護性/伸縮性, 在別人的工作基礎添加功能變得非常非常容易.
    而如果只有你一個開發(fā)者,那么不使用Cairngorm將會一種簡潔的做法.
    4. 你發(fā)現(xiàn)了Cairngorm的Bug
    如果你發(fā)現(xiàn)了Bug,那么就不適合在重要的項目中使用Cairngorm.
    Cairngorm并不是完全沒有Bug,在早期的Beta版中,和其他軟件產(chǎn)品一樣,我們忽略了一些偶爾出現(xiàn)的Bug.

    posted @ 2006-09-12 13:41 云自無心水自閑 閱讀(1152) | 評論 (0)編輯 收藏

    Cairngorm的組成:
    1. Model Locator:保存應用的ValueObject(數(shù)據(jù))和共享變量,與HttpSession類似,只不過是保存在客戶端而不是在服務器端而已
    2. View:一個或者多個Flex組件(按鈕、Panel、下拉框等等)組合在成一個被命名的單元。綁定Model Locator中的數(shù)據(jù),根據(jù)用戶動作(點擊、滾動、拖放)產(chǎn)生自定義的Cairngorm事件。
    3. Front Controller:接收Cairngorm事件,并映射到對應的Cairngorm命令。
    4. Command:處理業(yè)務邏輯,調(diào)用Cairngorm的代理或者其他命令,更新Model Locator中的Value Object和變量值。
    5. Delegate:在命令中創(chuàng)建,初始化一個遠程調(diào)用(Http, WebService等等),并將返回結(jié)果傳遞給Command。
    6. Service:定義遠程調(diào)用連接遠程的數(shù)據(jù)存儲。
    Cairngorm的工作方式:
    1. 客戶端界面由各個View組成,View通過綁定Model Locator的成員來顯示數(shù)據(jù)。View根據(jù)用戶操作生成事件。這些事件由Front Controller廣播并接收,然后映射到相應的命令。命令包含業(yè)務邏輯、創(chuàng)建代理來完成操作,處理代理返回的結(jié)果,并更新Model Locator的數(shù)據(jù)。因為View是與Model Locator中的數(shù)據(jù)綁定的,因此Model Locator中數(shù)據(jù)更新后,View自動反應出數(shù)據(jù)的變化。由代理調(diào)用服務并返回處理結(jié)果不是必須的,但是這是推薦做法。

    posted @ 2006-08-31 09:36 云自無心水自閑 閱讀(4225) | 評論 (4)編輯 收藏

    在Flex2中VideoDisplay取代了1.5中的MediaPlay,提供播放Flv視頻的功能.
    而且對于此組件的控制都需要自己編寫.
    最近遇到一個問題,就是想通過設置PlayheadTime來實現(xiàn)視頻播放時間的跳轉(zhuǎn)時,發(fā)現(xiàn)有時會出現(xiàn)失靈的情況.
    經(jīng)研究后發(fā)現(xiàn)主要是因為組件加載視頻不完整的原因.
    經(jīng)過測試,如果是在本地的開發(fā)環(huán)境中,視頻的加載非常快,100M的Flv幾乎是瞬間加載完畢.
    但是如果將編譯生成的SWF文件上傳到服務器,然后加載Flv文件,速度非常慢,主要是需要通過互聯(lián)網(wǎng)傳送.
    所以會出現(xiàn)在本地開發(fā)時,視頻的跳轉(zhuǎn)一切正常.但是在服務器上卻屢屢出錯.

    解決方法: 可以在視頻加載過程Progress事件中添加代碼,強制在全部加載完成后啟動播放.

    ??? if ( videoPlayer.bytesLoaded / videoPlayer.bytesTotal > 0.99 )
    ??? ??? videoPlayer.play();

    posted @ 2006-08-21 08:42 云自無心水自閑 閱讀(1820) | 評論 (4)編輯 收藏

    開源項目fluorine(Flex與.net的AMF0網(wǎng)關(guān)、WebORB的替代者)使用注意事項
    網(wǎng)站鏈接:http://fluorine.thesilentgroup.com/fluorine/index.html

    Fluorine是與AmfPHP、OpenAmf類似的但是用于.net平臺的開源AMF網(wǎng)關(guān)。可以應用在Flex2與.net(1.1與2.0)中。
    通過使用Fluorine可以在Flex中直接調(diào)用.net程序中類的相應方法,并且完成了Class Mapping。也就是說可以傳遞一個復雜對象作為參數(shù)。
    通過我的試驗發(fā)現(xiàn),.net返回的DataTable可以被正確地解析為AS3中的Array

    下面是我在使用的發(fā)現(xiàn)的一些注意事項:
    Flex端:
    1. 在VO的構(gòu)造函數(shù)中需要調(diào)用flash.net.registerClassAlias("com.ariaware.pizza.vo.OrderVO", OrderVO);
    其中第一個參數(shù)是VO在.net端的Assemble全稱,即NameSpace+類名,第二個參數(shù)是ActionScript中的VO類

    2. GateWayURL需要書寫正確,一般的形式是:var gatewayURL:String = "http://localhost/FluorinePizzaService/Gateway.aspx";

    3. 在指定.net端類名和方法名的時候,注意大小寫一致 var pizzaService:AMF0Service = new AMF0Service ( gatewayURL, "pizzaService", null );

    .net端
    1. 注意VO中的字段名稱與Flex端VO類中的名稱一定要完全對應,否則就取不到對應的值。

    2. 需要在Web.config中添加下面幾行,緊跟在<system.web>后面就行了
    ?? ?<httpModules>
    ?? ??? ?<add name="FluorineGateway" type="com.TheSilentGroup.Fluorine.FluorineGateway, com.TheSilentGroup.Fluorine" />
    ? </httpModules>
    ?
    3. 項目中需要引用com.TheSilentGroup.Fluorine這個Dll

    4. 需要在項目中添加Gateway.aspx這樣一個空的Web窗體

    使用時:
    1. 需要注意清除一下本地的Cookie,如果有一個名為.ASPXAUTH的Cookie如果不為空,會造成FormsAuthentication.Decrypt的錯誤。



    posted @ 2006-08-03 17:34 云自無心水自閑 閱讀(2642) | 評論 (4)編輯 收藏

    僅列出標題
    共29頁: First 上一頁 21 22 23 24 25 26 27 28 29 下一頁 
    主站蜘蛛池模板: 亚洲视频免费观看| 国产亚洲精品国产| 亚洲中文无码卡通动漫野外| 一级毛片免费毛片一级毛片免费 | 四虎成人免费网站在线| 亚洲乱码在线视频| 久久精品网站免费观看| 亚洲人成网站色7799| 黄a大片av永久免费| 国产精品亚洲专区一区| 亚洲日韩国产一区二区三区| 人与动性xxxxx免费| 亚洲精品tv久久久久久久久| 大地影院MV在线观看视频免费 | 精品国产免费观看| 国产精品日本亚洲777| 亚洲人成色77777在线观看大| 成av免费大片黄在线观看| 人人狠狠综合久久亚洲88| 亚洲三级在线免费观看| 亚洲人成人网站18禁| 亚洲成a人片在线观看老师| 中文字幕无线码免费人妻| 久久夜色精品国产噜噜噜亚洲AV| 四虎在线最新永久免费| 亚洲国产午夜精品理论片在线播放| 日韩亚洲精品福利| 久久免费视频观看| 亚洲一卡一卡二新区无人区| 亚洲AV无码成H人在线观看 | a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 色婷婷综合缴情综免费观看| 亚洲AV永久无码精品一百度影院 | 国产在线98福利播放视频免费| 国产精品无码永久免费888| 亚洲视频一区二区三区| 日韩在线a视频免费播放| APP在线免费观看视频| 99久久国产亚洲综合精品| 国产成人高清亚洲| 无码精品A∨在线观看免费 |