日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用DragonBones开发FLASH骨骼动画入门教程

發布時間:2024/8/1 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用DragonBones开发FLASH骨骼动画入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:使用DragonBones開發FLASH骨骼動畫入門教程


本文轉載(并略作修改)自黃竣的教程,URL是:http://dragonbones.github.com/getting_started_cn.html全文如下:


DragonBones是什么?

DragonBones是一套開源的 2D骨骼動畫框架和工具,它包含了基于Flash Pro的骨骼動畫編輯面板Skeleton Animation Design Panel及骨骼動畫ActionScript框架。

它可以讓開發者運用熟悉的Flash Pro元件及時間軸編輯方式,快速創建2D骨骼動畫,并運用到Flash或其他技術的應用中。

【朱先忠注】?Flash2Cocos2d-x正是由RainyNote(博客地址是:http://rainynote.com/2012/09/cocos2d-x-%E5%8A%A8%E7%94%BB%E5%B7%A5%E5%85%B7/)開發出的直接操作FLASH骨骼動畫及其相關文件的coco2d-x擴展框架。

Features

  • 動畫基于Flash pro時間軸,可以使用Flash傳統動畫方式制作游戲動畫;

  • 骨骼綁定可以讓動畫更精準,更真實自然,并可通過程序動態控制;

  • 可設置單個骨骼的動畫時間縮放和延時播放,使用較少的關鍵幀就可以表現復雜生動的動畫效果;

  • 動畫各部分采用拼接方式,動畫有緩動補間,占用位圖/內存資源少;

  • 骨骼顯示對象與骨骼的邏輯分離,可在不影響動畫播放的情況下動態更換;

  • 能方便用于傳統DisplayList、Starling及其他技術的2D應用。

下載與安裝設置

開源項目地址:http://dragonbones.github.com

  • 從這兒獲取Adobe Flash Pro 5.5或以上版本

  • 下載最新的DragonBones release 包,安裝支持Flash Pro的骨骼面板擴展插件SkeletonDesignPanel.zxp (注:此插件目前僅支持Flash Pro5.5及以上版本), 獲取骨骼動畫ActionScript庫SkeletonAnimationLibrary。

  • 在后續的教程中,我們將使用這套框架來動態顯示由Flash Pro設計的骨骼動畫。

教程源碼下載

接下來,我們將通過幾個簡單的教程快速了解DragonBones的用法。

請從這里下載本教程相關源碼。

教程1:針對設計師 使用DragonBones在Flash Pro中創建骨骼動畫

作為設計師,你只需要準備好動畫角色的各個部分,在Flash Pro的時間軸中把他們有序組裝起來、設置好動作關鍵幀并運用DragonBones的骨骼動畫編輯面板搞定一切。

  • 在下載并安裝完畢骨骼面板的Flash Pro擴展插件后,啟動Flash Pro。打開教程源碼下載包中的DragonBones_tutorial_Start.fla文件。

  • 打開庫面板,你可以看到此示例的相關資源。

    在parts目錄中包含的是組成動畫Dragon的各個元件,從命名可以直觀的了解到它們對應的龍的各個部分。良好的元件命名是個好習慣,不是么?:)

  • 雙擊庫面板中的MovieClip元件Dragon進入時間軸編輯模式。我們需要詳細了解這個動畫的組成,它有助于后面骨骼動畫編輯。

    注意1,請留意時間軸上的各層的命名,我們是以骨骼各個部分來命名的。骨骼動畫面板將自動根據層的命名來識別組成骨骼的各個部分。

    ,2,需要注意的是層label,我們添加了標簽“walk”用來說明當前時間軸表示的動作。如果由多個動作,請在對應動作起始位置添加標簽來說明。這一步非常重要!骨骼動畫面板將按照標簽來讀取并設定動作。

    你發現時間軸上并沒有添加補間?是的,你僅僅需要在時間軸上設置關鍵幀上各元件的位置,剩下的工作都可以在骨骼面板中完成。

    當然,作為設計師的你,可以按你的習慣做好完整的補間動畫,骨骼面板同樣可以按照你的動畫原樣導入。(注:目前版本的DragonBones僅支持傳統補間,新補間將在后續版本中支持)

  • 當你按上述要求準備好動畫,就可以點擊Flash Pro菜單中的Window>Other Panels>SkeletonAnimationDesignPanel打開骨骼動畫編輯面板。我們將在接下來的操作中詳細說明骨骼動畫編輯面板的使用。

  • 在此面板中點擊“Import”按鈕,此時將出現下圖所示窗口:

    在導入面板中你可以設置貼圖排序、貼圖高度及貼圖間距。在導入選項中,你可以導入選中的庫元件、所有庫元件以及通過骨骼面板導出的PNG/SWF/ZIP文件等

    選中Flash Pro庫中的MovieClip元件Dragon,然后在骨骼動畫編輯面板中選擇導入選中的項目,點擊OK按鈕。

  • 骨骼動畫編輯面板導入動畫元件Dragon后如下圖:

    Armature List: 導入動畫MovieClip的列表,與MovieClip在庫中的名稱一致,程序中將以此名稱來創建動畫對象。每個包含動作的MovieClip,在DragonBones里我們稱之為“骨架”(Armature)。

    Behavior. List: 對應動畫對象的各個動作/行為名稱,與MovieClip中幀標簽名稱一致,程序中將以此名稱來動態播放各種動作。

    Bone Tree: 動畫對象的各個骨骼組成部分,與MovieClip中各層名稱一致。

    Texture List: 動畫對象中各部分對應的材質名稱。

  • 對于每個動作,首先要設置的參數如下:

    Total Frame: 當前動作的總幀數。幀數越大,動作越慢。

    Tween Frame: 設置其他動作切換到此動作需要的幀數。比如,你的游戲角色有個動作為蹲下,此動作在時間軸上僅有1幀。假如設置此參數為6,那么當游戲中從其他動作切換到蹲下時候,程序會自動增加6幀的過渡,讓各個動作切換更加自然。

    Keyframe. Ease: 當前動作各關鍵幀之間的緩動系數。

    Loop: 當前動作是否循環播放。比如角色的走、跑步等。

  • A當設置好上述參數,你可以在左下方的預覽區域中看到當前編輯動作的動畫。

    預覽窗口左上角可以縮放預覽對象,便于觀察的動作。

  • OK,接下來我們在Bone Tree面板中設置動作中各個骨骼的從屬關系。下圖可以看到在默認導入的動畫中,各個骨骼沒有關聯:

    在此面板中右上角的 可以設置在預覽窗口里當前選中骨骼的高亮顏色。

    在列表里我們可以拖拽的方式,將子骨骼附著在父骨骼上。如下圖,我們將身體設置為主骨骼,而頭、尾巴、上肢和下肢都為其子骨骼。而上肢中又包含了上臂、下臂和手等。通過樹形結構我們可以非常直觀的看到他們的從屬關系。

  • 我們可以對每個骨骼的運動參數進行單獨設置。在Bone Tree面板中選中你需要設置的骨骼,調節下列參數。

    Tween Time Scale: 設置當前骨骼運動時間相對動作總時間(總幀數)的增加或減少。

    Tween Time Delay: 設置當前骨骼開始運動時間相對所屬動作的延遲或提前。

    別小看這2個參數,各個骨骼通過這2個參數微調后,你會發現角色動作哪怕在時間軸上僅有2個關鍵幀,也會產生非常復雜的動作。

    例如本例中,我們把龍的尾巴tail的Tween Delay設置為-10,尾巴尖tailTip的Tween Delay設置為-50,你可以明顯看到尾巴隨著身體的運動甩動起來,非常的生動。;)

  • 當你調整完骨骼動畫,就可以點擊”Export”按鈕導出。

    在導出格式選項中,包含多種數據格式供你實際項目需求。

    • SWF (XML Merged): 包含骨骼XML數據的SWF格式,如果游戲需要矢量的骨骼動畫可以采用此格式導出,當然前提是原始素材都是矢量的

    • PNG(XML Merged): 包含骨骼XML數據的PNG格式。

    • Zip(XML and SWF): 分開保存的骨骼XML數據和SWF資源。

    • Zip(XML and PNG): 分開保存的骨骼XML數據和PNG圖片。

    • Zip(XML and PNGs): 分開保存的骨骼XML數據和按每個骨骼獨立的PNG圖片包。

    例如在本例中,我們選擇PNG(XML Merged),點擊OK導出文件DragonWalk.png到指定的目錄。

    你會發現導出的就一個PNG文件?是的,我們選擇了合并XML數據的PNG格式,所以此文件中包含了骨骼動畫需要的所有數據。

    作為設計師,到此你的工作圓滿完成。

  •    朱先忠注:
          接下來,我們所需要了解的是,研究中的COCOS2D-X示例代碼,以便使用C++把上述FLASH數據呈現于你的COCOS2D-X游戲中。

          因此,下面的內容僅僅參考。



  • 教程2:針對程序開發 在ActionSript項目中應用骨骼動畫

    在設計師用骨骼動畫編輯面板導出好相關格式數據之后,程序開發者就可以運用DragonBones的開源動畫框架將數據資源導入到程序并讓動畫角色運動起來。只需幾步操作,非常簡單!

    接下來,你將了解如何在傳統DisplayList或支持GPU加速的Starling框架中調用骨骼動畫。

    下載Skeleton Animation Framework,將這個包導入至你的開發項目中。

    在開始代碼前,讓我們了解下骨骼動畫框架的基本概念。

    Factory: 這是構建骨骼動畫的基礎。它負責從前面骨骼面板導出的資源中解析數據格式和準備圖像資源,并且通過它創建骨骼容器Armature。

    Armature: 我們可以把它想像為一個容器,它對應在Flash Pro中編輯并通過骨骼面板導出的一個MoiveClip。通過Armature來對各骨骼進行管理,播放動畫等。

    現在我們來看看在在傳統DisplayList顯示模式中添加骨骼的示例。打開此教程對應的源文件DB_Tutorial_Walk_DisplayList.as。

  • 首先,將骨骼面板導出的資源嵌入到項目。

    ?

    [Embed(source = "../assets/Dragon1.swf", mimeType = "application/octet-stream")]?

    private static const ResourcesData:Class;

    此處嵌入的資源是由Flash Pro骨骼動畫編輯面板導出的合并了XML數據文件的PNG文件或SWF文件。當然,你也可以通過動態加載的方式在項目運行時候實時載入資源。

  • 創建factory,并通過fromRawData方法解析載入的資源格式,當解析完畢后交給對應事件textureCompleteHandler處理。

    ?

    factory = new BaseFactory();
    factory.addEventListener(Event.COMPLETE, textureCompleteHandler);
    factory.parseData(new ResourcesData());
  • 事件函數textureCompleteHandler中,首先用buildArmature方法構建骨骼動畫容器:

    ?

    armature = factory.buildArmature("Dragon");

    然后將容器的顯示內容armature.display添加到場景:

    ?

    addChild(armature.display as Sprite);

    指定要播放骨骼的某個動作:

    ?

    armature.animation.play("walk");
  • 最后,為ENTER_FRAME事件函數中添加armature.update()方法,讓SWF每幀渲染時候更新骨骼動畫。

  • OK,僅此幾行代碼,你就可以將骨骼動畫添加到已有項目。很簡單,不是么?:)

    下面我們聊聊在Starling中添加骨骼動畫的方法。Starling是一個非常不錯的開源游戲框架,它可以幫助你快速創建基于Stage 3D技術GPU加速的2D游戲。如果你對它還不了解,請訪問Starling的官方網站:http://starlingframework.org。

    使用Starling的用戶或許對用Sprite Sheet的位圖序列來構建動畫非常熟悉,這種方式最大問題是對于復雜動畫會占用過多內存。以下圖為例,一個簡單的行走動作,就會占用一大張位圖材質。

    而DragonBones解決了這個問題,不但僅需要少量骨骼素材,而且可以讓動畫更加豐富生動。

    DragonBones可以完美的結合Starling,創建基于GPU加速的2D骨骼動畫。

    打開本示例的項目DBStarlingWalk.as源碼你會發現,我們創建了一個基于Starling的factory:


    factory = new StarlingFactory();

    而余下的代碼,跟上個DisplayList的示例代碼完全一致。

    關于Starling中嵌入的骨骼動畫素材資源,可以是合并骨骼XML數據的PNG格 式,也可以是合并XML數據的SWF格式。對于SWF格式的矢量資源,Skeleton Animation Framework會自動在程序運行時轉換矢量為位圖材質,節省你項目尺寸。?


    教程3:創建并控制多個動作的骨骼動畫

    接下來你將了解到運用DragonBones創建包含多個動作的骨骼動畫,并在程序中通過鍵盤交互控制動作。

  • 打開文件 DragonBones_Tutorial_MultiBehavior.fla,雙擊庫里的動畫元件Dragon,你可以看到此動畫中有四個動 作:stand,walk,jump和fail。每個動作的起始幀上添加了對應的幀標簽,這也是DragonBones識別不同動作的標識。

  • 打開骨骼動畫編輯面板,你會看到在Behavior. List里面會有多個動作,選擇某個動作就可以為對應動作設置動畫幀數、緩動,設置此動作的某個骨骼的細節參數等。

  • 請留意Behavior編輯里的Tween Frame選項。

    這個選項是表明的其他動作切換到當前動作需要的過渡幀數。例如這里設置 的跳躍動作的Tween Frame為3,那么其他動作切換到跳躍需要3幀,DragonBones框架會自動為你添加其中的過渡幀,讓各種動作之間切換變得自然。當然,你可以在 動畫預覽窗口中看到各種動畫的切換效果。

  • 調整完畢各個動作的細節后,點擊“Export”按鈕導出骨骼動畫數據。

  • 打開DBStarlingMultiBehavior.as文件,代碼如下。此示例是在Starling框架中通過鍵盤控制骨骼動畫運動。

    ?

    package
    {
    ????import dragonBones.Armature;
    ????import dragonBones.factorys.StarlingFactory;
    ?????
    ????import flash.ui.Keyboard;
    ?????
    ????import starling.display.Sprite;
    ????import starling.events.EnterFrameEvent;
    ????import starling.events.KeyboardEvent;
    ????import starling.text.TextField;
    ?????
    ?????
    ????public class DBStarlingMultiBehavior. extends Sprite
    ????{
    ????????[Embed(source = "../assets/Dragon2.png", mimeType = "application/octet-stream")]
    ????????public static const ResourcesData:Class;
    ?????????
    ????????private var factory:StarlingFactory;
    ????????private var armature:Armature;
    ????????private var armatureClip:Sprite;
    ?
    ????????private var isLeft:Boolean;
    ????????private var isRight:Boolean;
    ????????private var isJumping:Boolean;
    ????????private var moveDir:int=0;
    ????????private var speedX:Number = 0;
    ????????private var speedY:Number = 0;
    ????????private var textField:TextField
    ?????????
    ????????public function DBStarlingMultiBehavior()
    ????????{
    ????????????factory = new StarlingFactory();
    ????????????factory.addEventListener(Event.COMPLETE, textureCompleteHandler);
    ????????????factory.parseData(new ResourcesData());
    ?
    ????????}
    ?????????
    ????????private function textureCompleteHandler():void
    ????????{
    ????????????armature = factory.buildArmature("Dragon");
    ????????????armatureClip = armature.display as Sprite;
    ????????????armatureClip.x = 400;
    ????????????armatureClip.y = 550;
    ????????????addChild(armatureClip);
    ????????????updateBehavior()
    ????????????addEventListener(EnterFrameEvent.ENTER_FRAME, onEnterFrameHandler);
    ?
    ????????????stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEventHandler);
    ????????????stage.addEventListener(KeyboardEvent.KEY_UP, onKeyEventHandler);
    ?????????????
    ????????????textField=new TextField(400,30,"A-move left,D-move right,W-jump","Verdana",16,0,true)
    ????????????textField.x=60;
    ????????????textField.y=2;
    ????????????addChild(textField);
    ????????}
    ?????????
    ????????private function onKeyEventHandler(e:KeyboardEvent):void
    ????????{
    ????????????switch (e.keyCode)
    ????????????{
    ????????????????case Keyboard.A :
    ????????????????case Keyboard.LEFT :
    ????????????????????isLeft=e.type == KeyboardEvent.KEY_DOWN;
    ????????????????????break;
    ????????????????case Keyboard.D :
    ????????????????case Keyboard.RIGHT :
    ????????????????????isRight=e.type == KeyboardEvent.KEY_DOWN;
    ????????????????????break;
    ????????????????case Keyboard.W :
    ????????????????case Keyboard.UP :
    ????????????????????jump();
    ????????????????????break;
    ????????????}
    ????????????var dir:int;
    ????????????if (isLeft && isRight)
    ????????????{
    ????????????????dir=moveDir;
    ????????????????return;
    ????????????}
    ????????????else if (isLeft)
    ????????????{
    ????????????????dir=-1;
    ????????????}
    ????????????else if (isRight)
    ????????????{
    ????????????????dir=1;
    ????????????}
    ????????????else
    ????????????{
    ????????????????dir=0;
    ????????????}
    ????????????if(dir==moveDir)
    ????????????{
    ????????????????return;
    ????????????}
    ????????????else
    ????????????{
    ????????????????moveDir=dir;
    ????????????}
    ????????????updateBehavior()
    ????????}
    ?????
    ????????private function onEnterFrameHandler(_e:EnterFrameEvent):void
    ????????{
    ????????????updateMove();
    ????????????armature.update();
    ????????}
    ?
    ????????private function updateBehavior():void
    ????????{
    ????????????if (isJumping)
    ????????????{
    ????????????????return;
    ????????????}
    ????????????if (moveDir == 0)
    ????????????{
    ????????????????speedX = 0;
    ????????????????armature.animation.gotoAndPlay("stand");
    ????????????}
    ????????????else
    ????????????{
    ????????????????speedX=6*moveDir;
    ????????????????armatureClip.scaleX = -moveDir;
    ????????????????armature.animation.gotoAndPlay("walk");
    ????????????}
    ????????}
    ????????private function updateMove():void
    ????????{
    ????????????if (speedX != 0)
    ????????????{
    ????????????????armatureClip.x += speedX;
    ????????????????if (armatureClip.x < 0)
    ????????????????{
    ????????????????????armatureClip.x = 0;
    ????????????????}
    ????????????????else if (armatureClip.x > 800)
    ????????????????{
    ????????????????????armatureClip.x = 800;
    ????????????????}
    ????????????}
    ????????????if (isJumping)
    ????????????{
    ????????????????if (speedY <= 0 && speedY + 1 > 0 )
    ????????????????{
    ????????????????????armature.animation.gotoAndPlay("fall");
    ????????????????}
    ????????????????speedY += 1;
    ????????????}
    ????????????if (speedY != 0)
    ????????????{
    ????????????????armatureClip.y += speedY;
    ????????????????if (armatureClip.y > 540)
    ????????????????{
    ????????????????????armatureClip.y = 550;
    ????????????????????isJumping = false;
    ????????????????????speedY = 0;
    ????????????????????updateBehavior();
    ????????????????}
    ????????????}
    ????????}
    ????????private function jump():void
    ????????{
    ????????????if (isJumping)
    ????????????{
    ????????????????return;
    ????????????}
    ????????????speedY = -25;
    ????????????isJumping = true;
    ????????????armature.animation.gotoAndPlay("jump");
    ????????}
    ????}
    }

    通過上面的代碼我們可以發現,我們只需要在程序中需要播放相關骨骼動畫的時候調用函數armature.animation.gotoAndPlay()即可。

    除了指定需要播放的動作名稱,你還可以通過此函數來動態指定動作的總幀數、是否循環等。

    對于每個動畫,除了指定其播放之外,DragonBones框架提供了動畫播放相關的各種事件。

    動作切換事件:

    ?

    armature.addEventListener(dragonbones.events.Event.MOVEMENT_CHANGE, aramtureEventHandler);

    動作開始事件:

    ?

    armature.addEventListener(dragonbones.events.Event.START, aramtureEventHandler);

    動作結束事件

    ?

    armature.addEventListener(dragonbones.events.Event.COMPLETE, aramtureEventHandler);

    動作循環完畢事件:

    ?

    armature.addEventListener(dragonbones.events.Event.LOOP_COMPLETE, aramtureEventHandler);

    通過各種事件與動作的配合,你可以輕松創建具有復雜運動角色的游戲。?

  • 控制骨骼框架中的每根骨頭

    對于一個有趣的游戲,僅僅播放預先設置的骨骼動畫或許不夠,我們需要角色具有動態可控的各自動作。令人高興的是DragonBones提供了訪問并控制骨骼框架里每根骨頭的方法,讓你的角色在游戲中隨意運動。

    此示例通過鼠標在場景中的移動來控制骨骼。我們創建了一個跟隨鼠標運動的小鳥,小龍人會與小鳥保持一定距離,同時小龍人的頭和胳膊會跟隨小鳥運動而做出不同姿勢,非常有趣。

    打開DBStarlingControlBone.as,代碼如下。

    ?

    package
    {
    ????import dragonBones.Armature;
    ????import dragonBones.Bone;
    ????import dragonBones.factorys.StarlingFactory;
    ?????
    ????import flash.geom.Point;
    ????import flash.ui.Mouse;
    ?????
    ????import starling.display.Image;
    ????import starling.display.Sprite;
    ????import starling.events.EnterFrameEvent;
    ????import starling.events.TouchEvent;
    ????import starling.textures.Texture;
    ?????
    ?????
    ????public class DBStarlingControlBone extends Sprite
    ????{
    ????????[Embed(source = "../assets/Dragon2.png", mimeType = "application/octet-stream")]
    ????????public static const ResourcesData:Class;
    ?????????
    ????????[Embed(source = "../assets/starling.png")]
    ????????private static const starlingImg:Class;
    ?????????
    ????????private var factory:StarlingFactory;
    ????????private var armature:Armature;
    ????????private var armatureClip:Sprite;
    ?????????
    ????????private var mouseX:Number = 0;
    ????????private var mouseY:Number = 0;
    ????????private var moveDir:int=0;
    ????????private var dist:Number;
    ????????private var speedX:Number = 0;
    ????????private var starlingBird:Image;
    ????????private var _r:Number;
    ?????????
    ????????private var _head:Bone;
    ????????private var _armR:Bone;
    ????????private var _armL:Bone;
    ?????????
    ????????public function DBStarlingControlBone()
    ????????{
    ????????????factory = new StarlingFactory();
    ????????????factory.addEventListener(Event.COMPLETE, textureCompleteHandler);
    ????????????factory.parseData(new ResourcesData());
    ????????}
    ????????private function textureCompleteHandler():void
    ????????{
    ????????????armature = factory.buildArmature("Dragon");
    ????????????armatureClip = armature.display as Sprite;
    ?????????????
    ????????????armatureClip.x = 400;
    ????????????armatureClip.y = 550;
    ????????????addChild(armatureClip);
    ????????????updateBehavior(0)
    ????????????addEventListener(EnterFrameEvent.ENTER_FRAME, onEnterFrameHandler);
    ????????????stage.addEventListener(TouchEvent.TOUCH, onMouseMoveHandler);
    ?????????????
    ????????????starlingBird=new Image(Texture.fromBitmap(new starlingImg()))
    ????????????addChild(starlingBird);
    ????????????Mouse.hide();
    ????????????//get the bones which you want to control
    ????????????_head = armature.getBone("head");
    ????????????_armR = armature.getBone("armUpperR");
    ????????????_armL = armature.getBone("armUpperL");
    ?????????????
    ????????}
    ?????????
    ????????private function onEnterFrameHandler(_e:EnterFrameEvent):void
    ????????{
    ????????????checkDist();
    ????????????updateMove();
    ????????????updateBones();
    ????????????armature.update();?????
    ????????}
    ?????????
    ????????private function checkDist():void
    ????????{
    ????????????dist = armatureClip.x-mouseX;
    ????????????if(dist<150)
    ????????????{
    ????????????????updateBehavior(1)
    ????????????}
    ????????????else if(dist>190)
    ????????????{
    ????????????????updateBehavior(-1)
    ????????????}
    ????????????else
    ????????????{
    ????????????????updateBehavior(0)
    ????????????}
    ?????????????
    ????????}
    ?????????
    ????????private function onMouseMoveHandler(_e:TouchEvent):void
    ????????{
    ????????????var _p:Point = _e.getTouch(stage).getLocation(stage);
    ????????????mouseX = _p.x;
    ????????????mouseY = _p.y;
    ????????????starlingBird.x=mouseX-73;
    ????????????starlingBird.y=mouseY-73;
    ????????}
    ????????private function updateBehavior(dir:int):void
    ????????{
    ????????????if(moveDir==dir)return;
    ????????????moveDir=dir;
    ????????????if (moveDir == 0)
    ????????????{
    ????????????????speedX = 0;
    ????????????????armature.animation.gotoAndPlay("stand");
    ????????????}
    ????????????else
    ????????????{
    ????????????????speedX=6*moveDir;
    ????????????????armature.animation.gotoAndPlay("walk");
    ????????????}
    ????????}
    ????????private function updateMove():void
    ????????{
    ????????????if (speedX != 0)
    ????????????{
    ????????????????armatureClip.x += speedX;
    ????????????????if (armatureClip.x < 0)
    ????????????????{
    ????????????????????armatureClip.x = 0;
    ????????????????}
    ????????????????else if (armatureClip.x > 800)
    ????????????????{
    ????????????????????armatureClip.x = 800;
    ????????????????}
    ????????????}
    ????????}
    ????????private function updateBones():void
    ????????{
    ????????????//update the bones' pos or rotation
    ????????????_r = Math.PI + Math.atan2(mouseY - armatureClip.y+armatureClip.height/2,

    ??????????????????????????????????????mouseX - armatureClip.x);
    ????????????if (_r > Math.PI)
    ????????????{
    ????????????????_r -= Math.PI * 2;
    ????????????}
    ????????????_head.node.rotation = _r*0.3???????
    ????????????_armR.node.rotation = _r *0.8;
    ????????????_armL.node.rotation = _r * 1.5;
    ?????????????
    ????????????starlingBird.rotation = _r*0.2;
    ????????}
    ????}
    }

    從上面代碼我們可以看到,通過方法dragonBones.Armature.getBone(_name:String):Bone來獲取某個骨骼。骨骼中的node對象包含了此骨骼的位置坐標,旋轉弧度,拉伸比例,傾斜數據等等。我們根據游戲邏輯的需要對骨骼的這些參數賦數,即可實現動態控制此骨骼的效果。

    在上面示例中,請留意updateBones()函數里,我們先獲取到當前鼠標位置與骨骼框架中心點的夾角,然后根據這個角度,來改變小龍人的頭部和胳膊的旋轉弧度,從而實現了這個有趣的效果。

    實現骨骼動畫換裝

    在游戲中我們往往有這樣的需求:角色更換服飾、裝備或武器等。對于DragonBones來說,所謂的換裝可以通過更換對應骨骼的材質來輕松實現。

    因為是更換骨骼的材質,所以我們可以在程序中動態創建新材質并賦予對應骨骼,新的材質可 以是來自其他方式創建或加載的圖片,也可以來自DragonBones骨骼動畫編輯面板導出的材質圖集(Texture Atlas)。或許你會問,如何在Flash Pro中把沒有預先放在動畫時間軸的材質一起打包在骨骼動畫編輯面板導出的材質圖集中呢?

  • 打開本教程的示例文件DragonBones_Tutorial_ChangeClothes.fla 。這個文件中,我們把動畫元件Dragon穿上了一件黃馬褂,將其放在時間軸上名為clothes的層上,并調整符合各種動作。

  • 然后請注意庫中的clothTextureTemp動畫元件,雙擊打開 它,你會發現我們把打算換裝的4件衣服放在時間軸不同層上,并分別將層名稱與其對應。這4件衣服因為大小形狀一樣,所以在層中重合了。不過實際項目中,很 多時候更換的衣服、武器或道具大小不盡相同,所以需要相對于骨骼動畫中原始服飾的位置調整好各自坐標位置。

    留意在層label上我們給第一幀的幀標簽取名為temp。因為沒有幀標簽的動畫元件,是不會被骨骼動畫編輯面板識別導入的。

  • 選中庫中的Dragon和clothTextureTemp兩個元件, 打開骨骼動畫編輯面板,點擊“Import”按鈕導入所選的元件,你會發現在面板中Armature List里有了一個名為clothTextureTemp的骨架并且包含clothes1至clothes4的骨骼。不用管它,我們將它們導入面板的目的 不是為了編輯骨骼動畫,僅僅是為了最終導出這些服裝材質與骨骼動畫材質到一個文件中。

  • 接下來你只需對Dragon這個骨架進行相關的骨骼動畫調整,然后點擊”Export”按鈕導出素材資源。這里我們導出為合并XML數據的DragonWithClothes.png 。你會發現導出的材質圖集中包含了我們需要的各自衣服。:)

  • 現在我們看看在程序中如何實現換裝。打開教程3中創建的DBStarlingMultiBehavior.as文件,我們直接在這個文件中添加換裝代碼即可。首先將嵌入的素材更改為DragonWithClothes.png:

    ?

    [Embed(source = "../assets/DragonWithClothes.png", mimeType = "application/octet-stream")]
  • 然后添加2個變量,數組textures保存了我們要更換服裝材質的名稱,整數textureIndex用來做切換材質時候的索引。

    ?

    private var textures:Array = ["parts/clothes1", "parts/clothes2", "parts/clothes3", "parts/clothes4"];
    private var textureIndex:int = 0;

    請注意這里寫的是“parts/clothes1”而不是 “clothes1”,原因是Flash Pro的庫中不同目錄的元件名稱可以相同,所以DragonBones在保存資源路徑的時候也包含了目錄結構。打開 DragonBones_Tutorial_ChangeClothes.fla看看庫里的衣服動畫元件所在的目錄你就明白了。:)

  • 在鍵盤響應函數onKeyEventHandler中添加下面代碼,這樣按下鍵盤C鍵的時候調用換裝函數。

    ?

    case Keyboard.C:
    ????if (e.type == KeyboardEvent.KEY_UP) {
    ????????changeClothes();
    ????}
    ????break;
  • 創建換裝函數changeClothes()如下:

    ?

    private function changeClothes():void {
    ????//循環更換貼圖
    ????textureIndex++;
    ????if (textureIndex >= textures.length) {
    ????????textureIndex = textureIndex - textures.length;
    ????}
    ????//從骨骼面板導出的textureData中獲取Image實例,也可以單獨從其他圖片文件中構造Image
    ????var _textureName:String = textures[textureIndex];
    ????var _image:Image = StarlingFactory.getTextureDisplay(factory.textureData, _textureName);
    ????//用image替換bone.display完成換裝(注意bone.display的回收)
    ????var _bone:Bone = armature.getBone("clothes"); _bone.display.dispose();
    ????_bone.display = _image;
    }

    這里我們用到了 dragonBones.factorys.StarlingFactory.getTextureDisplay(_textureData:TextureData, _fullName:String):Image來獲取由骨骼動畫編輯面板導出的材質數據,然后將對應的材質賦予給骨骼的display對象,實現了換 裝。當然,正如前面所說,換裝的材質可以隨意來自程序中載入的其他圖片資源。

    W另外,當你熟悉了DragonBones的開源框架,你會發現可以通過代碼實現更加靈活的變換,除了更換骨骼材質,你還可以在骨骼框架(Armature)中動態的刪除、添加骨骼,改變骨骼的從屬關系等。

  • OK,到此你掌握了如何在DragonBones中為你的游戲角色換裝,趕緊在你的游戲中試試吧。:)

    

    總結

    以上是生活随笔為你收集整理的使用DragonBones开发FLASH骨骼动画入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    avove黑丝 | 国产精品美女免费看 | 亚洲天堂自拍视频 | 99精品视频在线免费观看 | 999久久久久 | 一区二区三区韩国免费中文网站 | 99国产一区二区三精品乱码 | 深爱激情av| 黄毛片在线观看 | 东方av在线免费观看 | 中文字幕在线播放av | 国产精品岛国久久久久久久久红粉 | 黄色三级免费网址 | 主播av在线 | 在线观看国产v片 | 久久99欧美 | 日本久久久影视 | 亚洲色影爱久久精品 | 成人中心免费视频 | 国产精品va最新国产精品视频 | 日韩aⅴ视频| 亚洲午夜精品久久久 | 欧美a级在线 | www.五月天激情 | av片在线观看| 2023国产精品自产拍在线观看 | 欧美激情综合五月色丁香 | 在线观看aaa | 500部大龄熟乱视频 欧美日本三级 | 91香蕉视频好色先生 | 毛片www | 精壮的侍卫呻吟h | 国产视频一区二区在线观看 | 国产黄色免费看 | 国产精品黄色影片导航在线观看 | 国产色婷婷 | 午夜影院先 | 深爱激情av| 97人人模人人爽人人喊中文字 | 日本女人的性生活视频 | 国产亚洲精品日韩在线tv黄 | 91九色在线观看视频 | 蜜臀av性久久久久av蜜臀妖精 | 91av在线免费播放 | 国产资源免费 | 欧美特一级 | 国产亚洲精品电影 | 99视频一区二区 | 亚洲色图22p| 97偷拍视频| 999国内精品永久免费视频 | 久99久在线视频 | 人人干人人爽 | 狠狠狠狠干 | 中文字幕高清在线 | 超碰97在线人人 | 亚洲无吗视频在线 | 91视频这里只有精品 | 欧美激情综合五月色丁香小说 | 亚洲日本在线视频观看 | 久久首页 | 99精品视频免费 | 91av片| 国产在线小视频 | 久久a v电影| 欧美精品在线观看免费 | 久久综合桃花 | 国产黄在线| 天天爽人人爽夜夜爽 | 欧美日韩国产免费视频 | 日韩在线理论 | 国产高清视频色在线www | 天天拍天天操 | 蜜桃传媒一区二区 | 青青视频一区 | 一二三区av | 91亚色免费视频 | 91九色自拍| 日韩av免费在线电影 | 久久精品视频网站 | 韩国精品一区二区三区六区色诱 | 一区二区三区免费看 | 久久九精品 | 成人黄色中文字幕 | 天天操夜夜操 | 日韩免费看的电影 | 综合激情婷婷 | 国产免费又粗又猛又爽 | 国产小视频免费在线网址 | 成人污视频在线观看 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 成人免费看片98欧美 | 国产精品久久久久久久久久不蜜月 | 欧美日韩国产精品久久 | 久久精品视频99 | 在线 国产 亚洲 欧美 | 成人午夜在线电影 | 国产精品久久电影网 | 久久综合九色综合欧美狠狠 | 国产一区影院 | 一区二区三区www | 99国产成+人+综合+亚洲 欧美 | av免费在线观看1 | av在线播放免费 | 四虎影视成人永久免费观看亚洲欧美 | 色老板在线视频 | av手机在线播放 | 亚洲精品66 | 超碰个人在线 | 久久精品中文字幕 | a天堂中文在线 | 激情图片久久 | a在线一区| 久久国产精品影片 | www.久久99 | 国产精品网红直播 | 色婷婷福利 | 444av| 中文字幕在线观看第一区 | 在线亚洲精品 | 天天操天天弄 | 国产成人久| 成人av在线看 | 中文字幕日本特黄aa毛片 | www.成人精品 | 在线观看色网站 | 日韩午夜电影网 | 久久日本视频 | 在线观看亚洲视频 | 国产淫片免费看 | 日本爱爱免费 | 美女网站色免费 | 国产99视频在线观看 | 久久久国产精品麻豆 | 91理论片午午伦夜理片久久 | 日日夜精品 | 国产成人三级三级三级97 | 日本久久久亚洲精品 | 香蕉视频国产在线观看 | 久久久久久久久久久精 | 麻豆成人在线观看 | 亚洲最新精品 | 国产不卡在线 | 欧美a级片网站 | 成人av片在线观看 | 久久精品亚洲一区二区三区观看模式 | 一本一道久久a久久精品蜜桃 | 天天干夜夜爽 | 97色在线视频 | 久章草在线观看 | 国产日韩在线播放 | 亚洲日本在线视频观看 | 天天插天天干 | 在线视频观看亚洲 | 日韩r级在线 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 久久久久国产免费免费 | 午夜手机电影 | aaa亚洲精品一二三区 | 亚洲精品色婷婷 | 国产精品密入口果冻 | 精品一区三区 | 婷婷激情5月天 | 国产精品99久久久久久久久久久久 | 中文字幕中文字幕在线一区 | 少妇bbb| 精品国产一区二区在线 | 久久久99国产精品免费 | 911在线| 亚州精品在线视频 | 国产精品久久久久永久免费 | 一区二区亚洲精品 | 国产亚洲精品久久久久久移动网络 | 色免费在线 | 欧洲一区二区在线观看 | 91精品啪在线观看国产 | 国产成人一区在线 | 欧美精品久久人人躁人人爽 | 午夜精品久久久久久久久久久久 | 日本精品视频免费 | 91成人免费看 | 国产高清中文字幕 | 麻豆av一区二区三区在线观看 | 久色 网| 久久激五月天综合精品 | 在线看片a| 特级西西444www大胆高清无视频 | 成人小视频免费在线观看 | 午夜精品999 | 中文字幕一区在线 | 亚洲一区免费在线 | 国产日产精品一区二区三区四区 | 国内免费久久久久久久久久久 | 日韩免费在线观看 | 国产麻豆精品免费视频 | 久久午夜网 | 91久久久久久久一区二区 | 久久伊人婷婷 | 美女视频国产 | 在线 视频 一区二区 | 精品视频在线免费 | 爱爱av在线 | 狠狠的操你| 99热这里只有精品久久 | 色吊丝在线永久观看最新版本 | 狠狠色综合网站久久久久久久 | 久久久999| 日本中文在线 | 成人在线观看资源 | 99麻豆久久久国产精品免费 | 精品亚洲视频在线 | 久久综合九色综合97婷婷女人 | 欧美日韩在线精品一区二区 | 日韩精品久久久久久久电影99爱 | 精品亚洲欧美无人区乱码 | 中文字幕二区三区 | 亚洲视频 一区 | 91伊人久久大香线蕉蜜芽人口 | 麻豆视频在线免费观看 | 中文字幕在线观看第一页 | 在线播放一区 | 精品国产三级 | 久久夜色电影 | 精品99久久久久久 | 日韩欧美视频一区 | 激情欧美xxxx | 国产精品黑丝在线观看 | 少妇激情久久 | 久久久三级视频 | 国产在线视频导航 | 色婷婷av一区 | 国产91在线播放 | 亚洲va在线va天堂 | 日日精品 | 911国产精品| 日日摸日日爽 | 97天堂网 | 91欧美精品| 婷婷 中文字幕 | 久草在线最新免费 | 五月婷婷在线视频观看 | 国产香蕉97碰碰久久人人 | 亚洲成人精品 | 中文字幕在线看视频国产 | 久久久久欧美精品999 | 夜添久久精品亚洲国产精品 | 99精品国产高清在线观看 | 天天插日日插 | 亚洲精品国偷拍自产在线观看 | 天天插伊人 | 伊人网综合在线观看 | 伊人久久av | 国产不卡在线 | 精品国产黄色片 | 激情文学丁香 | 国产成本人视频在线观看 | 在线播放亚洲激情 | 91亚·色| 91午夜精品 | 九九热精品视频在线观看 | 国产精品色婷婷 | 高清av网站| 久久涩涩网站 | 激情深爱 | 久久精品美女视频网站 | 人人干人人添 | 一区二区网 | 色资源网在线观看 | 麻豆成人小视频 | 9在线观看免费高清完整版在线观看明 | 国产精品久久人 | 精品国产1区2区3区 国产欧美精品在线观看 | 久久久久高清毛片一级 | 午夜av电影| 久草在线资源网 | 亚洲一级黄色片 | 色噜噜狠狠色综合中国 | www.99久久.com| 日本免费久久高清视频 | 美女久久久久久久久久 | 国产免费人成xvideos视频 | 久久兔费看a级 | 国产精品理论片在线播放 | 性色av免费在线观看 | 日本久久成人中文字幕电影 | 国产欧美日韩一区 | 天天干人人干 | 亚洲视频aaa| 97在线观看免费观看 | 中日韩三级视频 | 97精品伊人 | 国产精品九九热 | 亚洲高清av在线 | 久草爱 | 又爽又黄在线观看 | 91成人网在线观看 | 99精品视频免费 | 久久精品久久国产 | 精品国产自在精品国产精野外直播 | 黄色免费网战 | 成 人 黄 色 视频播放1 | 国产精品门事件 | 午夜视频在线观看欧美 | 免费福利视频网站 | 天天操天天操天天操天天操天天操 | 丁香六月综合网 | 日韩肉感妇bbwbbwbbw | 91成年人网站 | 久久久久高清毛片一级 | 日韩一级片大全 | 国产精品九九视频 | 免费观看一级一片 | 天天色官网 | 国产色一区 | 黄色一级片视频 | 精品免费 | 久久久久网站 | 国产日产av| 97电影院在线观看 | 九九爱免费视频 | 国产精品第 | 亚洲美女在线一区 | 啪啪免费观看网站 | 日日躁夜夜躁xxxxaaaa | 免费视频资源 | 亚洲高清视频在线 | 色婷婷成人网 | 亚洲色影爱久久精品 | 99精品偷拍视频一区二区三区 | 成人亚洲综合 | 九九视频在线 | 成人免费大片黄在线播放 | 有码中文字幕在线观看 | 96av在线视频 | 激情片av | 国产高清永久免费 | 国产看片网站 | 狠狠色伊人亚洲综合成人 | 97人人模人人爽人人喊网 | 99精品成人 | 高清av中文在线字幕观看1 | 香蕉视频在线免费 | 天天操婷婷 | 国产精品观看在线亚洲人成网 | 在线天堂亚洲 | 久久精品国产v日韩v亚洲 | 国产男女爽爽爽免费视频 | 欧美a级在线免费观看 | 欧美一级片免费播放 | 亚洲色图 校园春色 | 精品av在线播放 | 色五丁香| 欧美在线观看视频一区二区三区 | 精品国自产在线观看 | 国产黄色成人 | 五月婷影院 | 少妇做爰k8经典 | 97精品视频在线 | 成年美女黄网站色大片免费看 | 国产精品va在线观看入 | 亚洲国产欧洲综合997久久, | 国产在线1区 | 开心激情网五月天 | 人人射人人射 | 国内视频在线 | 91精品国产91久久久久 | 免费日韩 | 久久伦理 | 三级在线视频观看 | 久久视频免费在线 | 国产视频第二页 | 国产成人精品一区二区三区在线观看 | 天天看天天操 | 亚洲精品合集 | 亚洲免费公开视频 | 中文字幕一区在线观看视频 | 亚洲不卡av一区二区三区 | 色婷婷亚洲 | 国产精品69av | 狠狠躁18三区二区一区ai明星 | 国产精品一区二区三区在线免费观看 | 麻豆精品传媒视频 | 17婷婷久久www | av一区二区三区在线观看 | 亚洲伊人网在线观看 | 国产视频中文字幕在线观看 | 国产小视频你懂的在线 | 九九九毛片| 国产成人在线免费观看 | 手机av片| 国产高清网站 | 98久9在线 | 免费 | 国产美女视频免费观看的网站 | 久久久久国产免费免费 | 色综合婷婷久久 | 国产91综合一区在线观看 | 亚洲精品天天 | 黄色三级网站在线观看 | 天天操天天是 | 色婷婷亚洲 | 在线久热 | 久久欧美视频 | 国产一级片播放 | 人人舔人人舔 | 亚洲精品午夜aaa久久久 | 最近中文字幕在线 | 香蕉视频18 | 九色激情网 | 亚州精品视频 | 美女在线观看av | 最新av中文字幕 | 久久久久国产成人免费精品免费 | 免费精品国产va自在自线 | 99视频免费看 | www.xxx.性狂虐| 91麻豆精品一区二区三区 | 韩国一区二区三区在线观看 | 中文视频在线播放 | 在线免费中文字幕 | 亚洲一区二区三区精品在线观看 | 久久综合五月婷婷 | 中文字幕丝袜 | 黄色一级在线免费观看 | www.久热 | 91在线资源| 中文字幕在 | 在线观看国产一区二区 | 国产资源站 | 日本久久成人中文字幕电影 | 亚洲欧美国内爽妇网 | 九九热免费在线视频 | 天海翼一区二区三区免费 | 精品国产_亚洲人成在线 | 天天搞天天 | 国产在线a免费观看 | 黄色一级大片在线免费看国产一 | 日韩最新av在线 | 久久久久国产免费免费 | 在线91色 | 国产精品99久久久久的智能播放 | 最新日韩精品 | 国产精品免费在线播放 | 国产精品九九九九九九 | 免费在线观看av的网站 | 久草免费手机视频 | 国产资源站 | 一区二区三区中文字幕在线 | 日韩一区二区三区在线观看 | 久久免费视频网站 | 国产激情免费 | 欧美日韩免费在线观看视频 | av在线免费网| 免费网站污 | 国产成人免费精品 | 成人国产网址 | 六月丁香六月婷婷 | 国产无套一区二区三区久久 | 91在线91拍拍在线91 | 国产精品久久久久久av | 视频在线播放国产 | 日韩美一区二区三区 | 久久综合国产伦精品免费 | 婷婷中文字幕 | 欧美日韩xx | 久久一区二区免费视频 | www.夜夜| 国产精品青草综合久久久久99 | 国产精品九九九九九 | 美女网站色在线观看 | 在线国产片 | 色在线高清 | 欧美日韩国产精品爽爽 | 午夜.dj高清免费观看视频 | 免费福利视频网站 | 日本黄色大片儿 | 97超碰在线视 | 黄视频网站大全 | 天天操天天摸天天干 | 国产成人三级一区二区在线观看一 | 日日爽日日操 | 99操视频 | 亚洲精品动漫久久久久 | 成人电影毛片 | 91丨九色丨国产丨porny精品 | 国产在线不卡精品 | av导航福利 | 在线最新av | 97狠狠操 | 国产成人亚洲在线观看 | 精品一二三四视频 | 免费久草视频 | 久久精品男人的天堂 | 免费av在线网 | 国产精品一区二区在线观看免费 | 亚洲精品中文在线资源 | 在线观看免费版高清版 | 国产精品免费观看视频 | 国产区欧美 | 久久久久久久久久久免费av | 天天色天天操天天爽 | 中文字幕电影高清在线观看 | 在线观看中文av | 96国产精品视频 | 中文免费 | 天天躁日日躁狠狠躁av中文 | 中文字幕亚洲国产 | 韩国一区二区av | 日日碰狠狠躁久久躁综合网 | a亚洲视频| 国产在线观看免费观看 | 亚洲一区久久久 | 久草精品视频 | 日韩在线视频线视频免费网站 | 人人澡人人模 | 黄色软件在线看 | 中文在线a√在线 | 色97在线 | 亚洲老妇xxxxxx | 国产午夜三级一区二区三桃花影视 | 99九九热只有国产精品 | 日韩欧美精品一区 | 日韩高清免费在线 | 91精品免费视频 | www.啪啪.com| 久久国内精品99久久6app | 日日日爽爽爽 | 久草视频资源 | 蜜臀av一区二区 | 亚洲尺码电影av久久 | 久久久免费观看视频 | 国产青春久久久国产毛片 | 91成人小视频 | 欧美亚洲国产精品久久高清浪潮 | 免费观看日韩 | 国产视频精选 | 91亚洲国产 | 国产精品一区二区久久久久 | 中文字幕日韩免费视频 | 国产在线观看二区 | 99久久精品国产观看 | 国产精品com | av超碰在线| 国产精品美女久久久久久久久久久 | 久久国产女人 | 国产精品 国内视频 | 日韩免费一区二区 | 成年人电影免费在线观看 | 久久国产精品影视 | 色www.| 国产特级毛片aaaaaa | 免费观看性生交 | 91免费在线播放 | 久久高清国产 | 婷婷色资源 | 黄色国产区 | 亚洲极色 | 中文字幕观看av | 一本一本久久a久久精品综合小说 | 五月香视频在线观看 | 国产在线欧美日韩 | 日韩精品在线视频免费观看 | 天天色天天操综合 | 亚洲精品乱码久久久久v最新版 | 亚洲影视九九影院在线观看 | 人人澡人人模 | 日韩中文字幕在线观看 | 国产精品久久久久影院日本 | 国产色婷婷精品综合在线手机播放 | 欧美日韩在线观看一区二区 | 日本少妇视频 | 69av免费视频 | 五月婷婷一区二区三区 | 亚洲另类视频在线 | 狠狠狠狠狠狠 | 亚洲综合国产精品 | 欧美精品亚洲精品日韩精品 | 91成熟丰满女人少妇 | 国产成人精品一区二区三区福利 | av一级片 | 在线观看的av | 国产91九色视频 | 97精品国产97久久久久久 | 国产免费视频在线 | 综合伊人av | 六月丁香激情网 | 国产精品18久久久 | 天天摸日日摸人人看 | 精品你懂的 | 激情欧美一区二区三区 | 国产特黄色片 | 日韩av影片在线观看 | 激情影院在线观看 | 亚洲国产片 | 国产精品永久久久久久久久久 | 国产精品女同一区二区三区久久夜 | 91成人国产| 五月婷婷久 | 国内久久久久久 | 岛国精品一区二区 | 欧美日韩免费看 | 在线小视频你懂的 | 在线国产一区 | 精品在线播放 | 亚洲精品激情 | 五月天综合网站 | 精品久久网站 | 久久久91精品国产一区二区精品 | a成人在线 | 亚洲一区在线看 | 亚洲精品久久久蜜桃直播 | 黄色在线观看免费网站 | 黄av免费在线观看 | av直接看 | 日韩专区 在线 | 悠悠av资源片 | 色网免费观看 | 亚洲欧美国产日韩在线观看 | 婷婷在线网站 | 成人久久18免费网站麻豆 | 亚洲欧洲精品一区二区精品久久久 | 国产视频中文字幕在线观看 | 国产91aaa | 99久热在线精品视频成人一区 | 黄网站色 | 九九热免费在线视频 | 免费观看91视频 | 日韩精品免费在线播放 | 久久黄色影视 | 日韩欧美在线一区 | 国产精品永久免费视频 | 色婷婷精品大在线视频 | 91免费网| 久久综合久久久久88 | 91九色性视频 | 亚洲人成综合 | 国产v亚洲v | 国产不卡在线视频 | 国产黄免费看 | 国产欧美精品一区二区三区 | 日韩av片免费在线观看 | 国产精品久久久久久欧美 | 亚洲最新av在线网址 | 国产91精品久久久久久 | 97在线看 | 久久综合国产伦精品免费 | 一级一片免费视频 | 91精品婷婷国产综合久久蝌蚪 | 午夜精品一区二区三区在线观看 | 日本最新中文字幕 | 免费看片网址 | 91人人人 | 一区二区精品在线 | 色资源在线观看 | 欧美色久| 天堂视频中文在线 | 亚洲成人网av | 亚洲精品在线观看的 | 亚洲日本韩国一区二区 | 天天色天天射天天干 | 亚洲免费高清视频 | 1000部国产精品成人观看 | 成人黄色小视频 | 国产高清网站 | 99久久激情视频 | 精品久久网 | 在线播放国产精品 | 天天射天天色天天干 | 日韩有码在线播放 | 黄色片网站大全 | 在线黄色av | 免费视频a | 久久综合成人 | 国产精品成人一区二区三区吃奶 | 亚洲第一av在线 | 久久久久久久久久久免费视频 | 激情综合一区 | 日韩精品免费一区二区 | 91成人欧美 | 久久欧美视频 | 日韩在线播放av | 国产中文字幕亚洲 | av三级av | 又黄又刺激的视频 | 午夜婷婷在线观看 | 操夜夜操| 91在线蜜桃臀| 一区二区理论片 | 99精品视频网站 | 国产精品一区二区电影 | 国产精品久久久久久久av电影 | 99热精品久久 | 久综合网 | 日本精品在线看 | 亚洲国内精品在线 | 亚洲影院一区 | 五月天丁香视频 | 丁香六月欧美 | 免费高清无人区完整版 | 99综合久久 | 在线视频 影院 | 免费观看成年人视频 | 久久情侣偷拍 | 五月精品 | 日韩成人精品一区二区三区 | 国产成人精品一区二区三区网站观看 | 日本一区二区不卡高清 | 久久久蜜桃| 日韩色在线观看 | 久久精品影视 | 久久精品欧美一区二区三区麻豆 | 日韩毛片精品 | 天天操天天能 | 欧美国产日韩在线观看 | 91视频国产免费 | 精品一区精品二区 | 九色精品免费永久在线 | 欧美在线观看视频一区二区三区 | 久久精品久久精品久久39 | 久久精品一区二区三区国产主播 | 91精品中文字幕 | 九九导航 | 看黄色91| 九九九九精品 | 麻豆影视网站 | 日韩中文字幕视频在线观看 | 日韩网站免费观看 | 香蕉在线视频观看 | 亚洲最新在线 | 超碰在线97观看 | 午夜精品一区二区国产 | 99国产一区 | 国产一区二区综合 | 在线观影网站 | 婷婷亚洲最大 | 色综合久久88色综合天天人守婷 | 亚洲综合成人婷婷小说 | 国产伦精品一区二区三区照片91 | 久久黄色成人 | 欧美va天堂va视频va在线 | 人人干狠狠操 | 久草视频在线新免费 | 久久字幕 | 亚洲一区不卡视频 | 亚洲五月综合 | 国产精品久久久久久久久久久久 | 狂野欧美激情性xxxx欧美 | 久久dvd | 日本一区二区免费在线观看 | 中文字幕黄色网址 | 在线不卡中文字幕播放 | 日韩理论影院 | 四虎影视4hu4虎成人 | 国产精品成久久久久 | 亚洲国产精品激情在线观看 | 中文字幕中文字幕 | 97电影网站 | 最新日韩在线观看视频 | 热久久视久久精品18亚洲精品 | 黄色av电影在线观看 | 91 在线视频 | 综合色亚洲 | 天天干 天天摸 天天操 | 欧美国产日韩一区二区三区 | 99久久精品久久亚洲精品 | 胖bbbb搡bbbb擦bbbb| 黄色福利视频网站 | 91豆花在线观看 | 五月天婷婷在线观看视频 | 蜜臀久久99静品久久久久久 | 国产精品18久久久久vr手机版特色 | 亚洲精品国产自产拍在线观看 | 色吧久久 | 欧美一级片免费播放 | 日批在线观看 | 中文字幕一区二区三区精华液 | 日韩在线视频国产 | 狠狠色丁香婷婷综合久小说久 | 精品国产一区二区三区四 | 亚洲午夜精品电影 | 五月开心六月伊人色婷婷 | 极品久久久 | 一区二区激情视频 | 狠狠狠干狠狠 | 亚州欧美视频 | 国产资源免费 | 欧美日本一二三 | 91在线免费公开视频 | 成人免费一区二区三区在线观看 | 久久精品国产精品 | 成年人在线免费看片 | 91精品成人| 操操综合 | 黄色影院在线免费观看 | 中文字幕在线观看av | 99国产情侣在线播放 | 日韩欧美一区二区三区免费观看 | 亚洲国产欧美在线人成大黄瓜 | 91爱看片 | 二区三区在线 | 日韩大片在线免费观看 | 久久电影色 | 午夜男人影院 | 中文字幕之中文字幕 | 色窝资源 | 亚洲一区黄色 | av免费看电影 | 二区在线播放 | 丁香花在线视频观看免费 | 亚洲永久av | 在线视频 91 | 日韩在线高清视频 | 成人91av | 国产精品久久久一区二区 | 911av视频| 日韩精品视频免费专区在线播放 | 人人爽网站 | 色欧美成人精品a∨在线观看 | 久青草视频 | 亚洲国产伊人 | 免费看片成人 | 麻豆一区二区三区视频 | 成年人天堂com | 九九免费在线视频 | 在线看小早川怜子av | 久久免费看a级毛毛片 | 亚洲国产成人在线播放 | 看国产黄色片 | 国产成人精品一区一区一区 | 亚洲乱码在线观看 | 欧美成人黄色片 | 91精品资源 | 在线看黄网站 | 欧美日韩精品免费观看 | 天天天天天干 | 亚洲成熟女人毛片在线 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 欧美日韩国产高清视频 | 国产精品剧情在线亚洲 | 一级黄色大片在线观看 | 国产一区欧美二区 | 国产精品美女久久久久久网站 | 久久国产影院 | 国产一区二区三区免费在线观看 | 久草在线99 | 欧美日韩国产在线一区 | 亚洲激情综合 | 亚州国产精品 | 91精品国产九九九久久久亚洲 | www.在线观看视频 | 中文av影院 | 成人cosplay福利网站 | 97视频在线免费播放 | a级国产毛片 | 亚洲 欧美 变态 国产 另类 | 中文字幕在线资源 | 免费久久精品视频 | 国产精品美女久久久 | 国产香蕉视频在线播放 | 日韩av有码在线 | 四川妇女搡bbbb搡bbbb搡 | 丁香色婷 | 亚洲五月综合 | 国产精品欧美一区二区 | 欧美日韩视频网站 | 日韩午夜剧场 | 热久久精品在线 | 欧美精品乱码久久久久久 | 五月激情视频 | 亚洲视频在线视频 | 色偷偷888欧美精品久久久 | 国产精品系列在线播放 | 一区二区三区不卡在线 | 婷婷av电影 | 99草视频| 日韩免费一级a毛片在线播放一级 | 精品视频在线播放 | 久久免费国产精品1 | 中文字幕 成人 | 天堂av网在线| 一区二区在线不卡 | 三级黄色片子 | 在线日韩| 国产成人一区二区三区电影 | 99热精品在线 | 国产视频二区三区 | 伊香蕉大综综综合久久啪 | 国产欧美综合视频 | 狠狠88综合久久久久综合网 | 99riav1国产精品视频 | 日韩一级精品 | 91av视频免费观看 | 亚洲激情久久 | 国产h片在线观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 香蕉在线视频观看 | 玖玖玖影院 | 92av视频| 日韩av手机在线看 | 精品a视频 | 久久www免费人成看片高清 | 91精品在线免费观看视频 | 欧美日韩在线精品一区二区 | 丁香婷婷综合网 | 99色在线视频 | 黄色特级片 | 亚洲 精品在线视频 | 成人毛片在线视频 | 国产亚洲精品综合一区91 | 亚洲电影久久久 | 久久久精品 一区二区三区 国产99视频在线观看 | 91视频91蝌蚪| 一级片免费观看 | 最近中文字幕高清字幕在线视频 | 波多野结衣亚洲一区二区 | 亚洲综合国产精品 | 久久久久久久久久久久久国产精品 | 日韩精品一区二 | 不卡的av在线播放 | 三级动图 | 18pao国产成视频永久免费 | 中文字幕专区高清在线观看 | 91精品免费在线观看 | 99 精品 在线 | 亚洲精品玖玖玖av在线看 | www国产精品com | 激情欧美xxxx| 一区二区三区视频 | 欧美日韩后 | 热热热热热色 | 亚洲 中文 在线 精品 | 久久久久久久久久久福利 | 黄色中文字幕在线 | 中文区中文字幕免费看 | 精品国产一区二区三区四 | 国产精品初高中精品久久 | 啪啪av在线 | 一区二区三区国产欧美 | a级一a一级在线观看 | 色av资源网 | 欧美成人在线网站 | 亚洲精品视频在线观看免费视频 | 在线观看免费成人av | 亚洲在线精品视频 | 天海冀一区二区三区 | 国产在线色 | 日日骑| 国产精品色在线 | 手机成人av | 国产精品一区二区中文字幕 | 五月综合在线观看 | 中文字幕精品三级久久久 | 欧美国产日韩在线视频 | 婷婷激情五月 | 国产精品9区 | 国产精品va在线观看入 | 麻豆精品传媒视频 | 激情小说 五月 | 91精品国产综合久久福利 | 久久不射电影网 | 97成人资源站 | www九九热| 天天色天天射天天操 | 久久久久一区 | 日韩丝袜 | 91精品欧美一区二区三区 | 国产高清成人 | 欧美va天堂在线电影 | 久久免费99精品久久久久久 | 天天操夜夜操国产精品 | 欧美成人免费在线 | 黄色福利网站 | 在线观看网站你懂的 | 干天天 | 狠狠狠狠狠色综合 | 99色免费 | 亚洲精品乱码久久久久 | 免费黄色a级毛片 | 国产无套精品久久久久久 | 精品国产_亚洲人成在线 | 69国产精品成人在线播放 | 激情五月播播久久久精品 | av播放在线| 久草在线视频在线 | 在线国产91| 日韩视频欧美视频 | 最近更新中文字幕 | 午夜精品视频一区二区三区在线看 | 最近中文国产在线视频 | 亚洲男男gaygay无套同网址 | 黄网站免费久久 | 国产精品成人av久久 | a电影免费看| 日韩av免费大片 | 欧美性色综合网站 | 久久久久婷 | 午夜私人影院 | 一区二区电影在线观看 | 精品高清美女精品国产区 |