/ 親階層)  普通のプレイヤー

□投稿者/ 使ってます さん ( ) 【115.65.128.249】(2016/01/30(Sat) 13:02:46)

   
     #------------------------------------------
     #【ソフト名】 普通のプレイヤー
     #【 作 者 】 使ってます
     #【 転載 】 全て許可
     #【なでしこのバージョン】 ver.1.562
     #【  紹介   】なでしこ勉強をかねて作りました。
     #いろんなサイトやWikiを参考にさせていただきました。この場を借りてお礼申し上げます
     #使い方
     #「ファイル読込」で、フォルダ選択すると、
     #「*.mp4;*.wmv;*.flv;*.mp3;*.m4a;*.wav」のファイルが取り込まれます。
     #再生、停止、一時停止、などが出来ます
     #オプションとして
     #単曲ループ、全曲ループ、リスト表示/非表示、ランダムソートなどができます。
     #画面をクリックすると、一時停止します
     #不具合が出たら、適当に修正してください。


    !母艦設計=「母艦の可視はオフ」

    ■MCIシンプル
      ・動画種類→動画種類取得
      ・{非公開}動画種類取得〜
        仮種類とは文字列=「」
        もし(Fファイル≠「」)ならば、
          仮種類=「動画」
          エラー監視
            「status {名前} window handle」をMCI送信
          エラーならば、
            仮種類=「音声」
        それは仮種類
      
      ・長さ→長さ取得
      ・{非公開}長さ取得〜
        もし(Fファイル≠「」)ならば、
          「status {名前} length」をMCI送信
          それを整数変換
      
      ・元サイズW→元サイズW取得
      ・{非公開}元サイズW取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} source」をMCI送信
          それを「 」で区切る
          それ\(2)を整数変換
      
      ・元サイズH→元サイズH取得
      ・{非公開}元サイズH取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} source」をMCI送信
          それを「 」で区切る
          それ\(3)を整数変換
      
      
      ・{非公開}Fファイル{=「」}
      ・ファイル←ファイル設定→ファイル取得
      ・{非公開}ファイル取得〜
        それ=Fファイル
      ・{非公開}ファイル設定({文字列}S)〜
        もし(Fファイル≠「」)ならば、名前をMCI閉じる
        もし(Sの存在)ならば、
          エラー監視
            「open "{S}" alias "{名前}" type mpegvideo」をMCI送信。
          エラーならば、
            S=「」
        違えば、
          S=「」
        Fファイル=S
      
      ・閉じる〜
        もし(Fファイル≠「」)ならば、
          名前をMCI閉じる
          Fファイル=「」
      
      ・X←X設定→X取得
      ・{非公開}X取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} destination」をMCI送信
          それを「 」で区切る
          それ\(0)を整数変換
      ・{非公開}X設定(V)〜
        もし(動画種類=「動画」)ならば、
          「put {名前} destination at {V} {Y} {W} {H}」をMCI送信。
      
      ・Y←Y設定→Y取得
      ・{非公開}Y取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} destination」をMCI送信
          それを「 」で区切る
          それ\(1)を整数変換
      ・{非公開}Y設定(V)〜
        もし(動画種類=「動画」)ならば、
          「put {名前} destination at {X} {V} {W} {H}」をMCI送信。
      
      ・W←W設定→W取得
      ・{非公開}W取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} destination」をMCI送信
          それを「 」で区切る
          それ\(2)を整数変換
      ・{非公開}W設定(V)〜
        もし(動画種類=「動画」)ならば、
          「put {名前} destination at {X} {Y} {V} {H}」をMCI送信。
      
      ・H←H設定→H取得
      ・{非公開}H取得〜
        もし(動画種類=「動画」)ならば、
          「where {名前} destination」をMCI送信
          それを「 」で区切る
          それ\(3)を整数変換
      ・{非公開}H設定(V)〜
        もし(動画種類=「動画」)ならば、
          「put {名前} destination at {X} {Y} {W} {V}」をMCI送信。
      
      ・{非公開}F倍率{=1.0}
      ・倍率←倍率設定→倍率取得
      ・{非公開}倍率取得〜
        それはF倍率
      ・{非公開}倍率設定({実数}S)〜
        もし(動画種類=「動画」)ならば、
          S=Sを3で小数点切り下げ
          WWとは整数=S*元サイズWの整数部分
          HHとは整数=S*元サイズHの整数部分
          「put {名前} destination at {X} {Y} {WW} {HH}」をMCI送信。
          F倍率=S
      
      ・{非公開}F表示ハンドル
      ・表示ハンドル←表示ハンドル設定→表示ハンドル取得
      ・{非公開}表示ハンドル取得〜それ=F表示ハンドル
      ・{非公開}表示ハンドル設定({整数}V)〜
        もし(動画種類=「動画」)ならば、
          「window {名前} handle {V}」をMCI送信。
          F表示ハンドル=V
      
      
      ・状態←状態設定→状態取得
      ・{非公開}状態取得〜
        もし(Fファイル≠「」)ならば、
          「status {名前} mode」をMCI送信。
          それで条件分岐
            「playing」ならば、それ=「再生」
            「stopped」ならば、それ=「停止」
            「paused」ならば、それ=「一時停止」
          
      ・{非公開}状態設定({文字列}S)〜
        もし(Fファイル≠「」)ならば、
          Sで条件分岐
            「再生」ならば、
              名前をMCI再生
            「停止」ならば、
              「seek {名前} to start」をMCI送信
            「一時停止」ならば、
              状態で条件分岐
                「再生」ならば、「pause {名前}」をMCI送信
                「一時停止」ならば、「resume {名前}」をMCI送信
      
      
      ・位置←位置設定→位置取得
      ・{非公開}位置取得〜
        もし(Fファイル≠「」)ならば、
          「status {名前} position」をMCI送信。
          それを整数変換
      ・{非公開}位置設定({整数}V)〜
        もし(Fファイル≠「」)ならば、
          「seek {名前} to {V}」をMCI送信

    #----------------------------------------------------------------------------


    ■リストプラス+リスト
      ・拡張子←拡張子設定→拡張子取得
      ・拡張子取得〜それはF拡張子
      ・拡張子設定(S)〜F拡張子=Sを小文字変換
      ・F拡張子{=「*.*」}
      
      ・読込結果→読込結果取得
      ・F読込結果{=0}
      ・読込結果取得〜それはF読込結果
      
      ・フォルダ←フォルダ設定→フォルダ取得
      ・Fフォルダ{=「」}
      ・フォルダ取得〜それはFフォルダ
      ・フォルダ設定(S)〜
        F読込結果=オフ
        もし(Sのフォルダ存在)ならば、
          S=Sの終端パス追加
          仮配列とは配列=S&拡張子のファイル列挙
          もし(仮配列≠「」)ならば、
            Fフォルダ=S
            
            タグ=「」
            仮配列を反復
              タグにS&対象を配列追加
            アイテム=ファイル名取得
            
            F読込結果=オン
      
      ・総要素数→総要素数取得
      ・総要素数取得〜
        もし(Fフォルダ≠「」)ならば、
          それ=タグの配列要素数
        違えば
          それは0
      
      ・ファイル名取得〜
        もし(総要素数>0)ならば、
          戻配列とは配列=「」
          タグを反復
            対象からファイル名抽出
            戻配列にそれを配列追加
          戻配列を改行で配列結合
      
      ・昇順ソート〜
        もし(総要素数≧2)ならば、
          タグを配列ソート
          アイテム=ファイル名取得
      ・ランダムソート〜
        もし(総要素数≧2)ならば、
          タグを配列シャッフル
          アイテム=ファイル名取得
      ・上移動〜
        もし(値≧1)ならば、
          仮値とは整数=値
          タグの仮値と仮値-1を配列入れ替え
          アイテム=ファイル名取得
          値=仮値-1
      ・下移動〜
        もし(値≧0)&&(値≦総要素数-2)ならば、
          仮値とは整数=値
          タグの仮値と仮値+1を配列入れ替え
          アイテム=ファイル名取得
          値=仮値+1
      ・削除〜
        もし(総要素数≧2)ならば、
          仮値とは整数=値
          もし(仮値≧0)ならば、
            タグの仮値を配列削除
            アイテム=ファイル名取得
            値=仮値-(仮値=総要素数)


    #----------------------------------------------------------------------------
    #----------------------------------------------------------------------------
    ■リストプラプラ+リストプラス
      ・単リピート←単リピート設定→単リピート取得
      ・F単リピート{=0}
      ・単リピート取得〜それはF単リピート
      ・単リピート設定(V)〜
        F単リピート=(V>0)
        もし(V>0)ならば、全リピート=0
      
      ・全リピート←全リピート設定→全リピート取得
      ・F全リピート{=0}
      ・全リピート取得〜それはF全リピート
      ・全リピート設定(V)〜
        F全リピート=(V>0)
        もし(V>0)ならば、単リピート=0
      
      ・リスト前移動〜#値を返すよ
        もし(総要素数≧1)ならば、
          それは値-(値-1≧0)
      
      ・リスト次移動〜#値を返すよ
        もし(総要素数≧1)ならば、
          仮値とは整数=0
          もし(単リピート)ならば、
            仮値=値#移動しない
          違えば、
            仮値=値+1
            もし(仮値>総要素数-1)ならば、
              全リピートで条件分岐
                0ならば、仮値=-1
                1ならば、仮値=0
          それは仮値

    ■MCIプラス+MCIシンプル
      ・直接移動({整数}仮位置)〜
        もし(ファイル≠「」)ならば、
          仮状態とは文字列=状態
          位置=仮位置
          仮状態で条件分岐
            「再生」ならば、状態=「再生」
            「一時停止」ならば、
              状態=「再生」
              状態=「一時停止」
      
      ・窓収納({整数}WW,{整数}HH)〜
        もし(動画種類=「動画」)ならば、
          倍率Wとは実数=WW/元サイズW
          倍率Hとは実数=HH/元サイズH
          
          もし(倍率W>倍率H)ならば、
            倍率=倍率H
            X=(WW-W)/2の整数部分
            Y=0
          違えば、
            倍率=倍率W
            X=0
            Y=(HH-H)/2の整数部分



    ■プログレスプラス+プログレスバー
      ・バー移動({整数}仮値)〜
        限界値とは整数=最大値-5*1000
        もし(限界値<最小値)ならば、限界値=最小値
        
        もし(仮値<最小値)ならば、値=最小値。タグ=1
        違えばもし(仮値>限界値)ならば、#何もしない
        違えば、値=仮値。タグ=1
        

    #----------------------------------------------------------------------------
    #----------------------------------------------------------------------------

    一覧とはリストプラプラ
    その拡張子=「*.mp4;*.wmv;*.flv;*.mp3;*.m4a;*.wav」
    そのレイアウト=「右」
    その可視=オフ
    そのマウス入った時は〜
      母艦→タグ=0
    そのクリックした時は〜
      仮ファイルとは文字列=一覧→タグ\(一覧→値)
      KKK→ファイル=仮ファイル
      もし(KKK→ファイル=「」)ならば、
        母艦→タイトル=「ファイル読込失敗」
        
        棒→最小値=0
        棒→最大値=0
        
      違えば、
        母艦→タイトル=仮ファイルからファイル名抽出
        
        棒→最小値=0
        棒→最大値=KKK→長さ
        棒→値=0
        
        もし(KKK→動画種類=「動画」)ならば、
          KKK→表示ハンドル=枠→ハンドル
          KKK→窓収納(枠→クライアントW,枠→クライアントH)
        
        再生メニュー→クリックした時


    枠とはフォーム
    その親部品=母艦
    その可視=オン
    そのスタイル=「枠なし」
    そのレイアウト=「全体」
    そのマウス入った時は〜
      母艦→タグ=1
    そのサイズ変更した時は〜
      KKK→窓収納(枠→クライアントW,枠→クライアントH)
    そのマウスホイール回した時は〜
      仮符号とは整数=(枠→ホイール値)の符号
      それは棒→値-仮符号*5*1000
      棒→バー移動(それ)
    そのクリックした時は〜
      一時停止メニュー→クリックした時


    帯とはステータスバー
    そのレイアウト=「下」


    棒とはプログレスプラス
    そのレイアウト=「下」
    そのマウス入った時は〜
      母艦→タグ=2
    そのマウス押した時は〜
      (自身→マウスX)*(自身→最大値)/(自身→W)の整数部分
      棒→バー移動(それ)



    KKKとはMCIプラス


    時計とはタイマー
    その間隔=0.1
    その時満ちた時は〜
      帯更新処理
      もし(KKK→ファイル≠「」)ならば、
        もし(棒→タグ=0)ならば、
          棒→値=KKK→位置
        違えば、
          もし(棒→ポケット=棒→値)ならば、
            KKK→直接移動(棒→値)
            棒→タグ=0
        
        もし(KKK→位置≧KKK→長さ)&&(KKK→状態=「停止」)ならば、
          KKK→直接移動(0)
          次メニュー→クリックした時
        棒→ポケット=棒→値
        
        注目監視処理


    母艦の閉じた時は〜
      KKK→閉じる
      時計→停止





    #----------------------------------------------------------------------------
    #----------------------------------------------------------------------------

    『なし,ファイルメニュー,ファイル読込,,,
    なし,再生メニュー,再生,,,
    なし,停止メニュー,停止,,,
    なし,一時停止メニュー,一時停止,,,
    なし,前メニュー,前,,,
    なし,次メニュー,次,,,
    なし,マイナス秒メニュー,-30,,,
    なし,プラス秒メニュー,+30,,,
    なし,オプションメニュー,オプション,,,
    -,一覧メニュー,リスト表示,,,
    -,-
    -,リピートメニュー,単曲リピート,,,
    -,全曲リピートメニュー,全曲リピート,,,
    -,-
    -,ランダムソートメニュー,ランダムソート,,,
    -,昇順ソートメニュー,昇順ソート,,,
    』をメニュー一括作成

    再生メニュー→クリックした時は〜
      KKK→状態で条件分岐
        「再生」ならば、
        「一時停止」ならば、
          KKK→状態=「一時停止」
        「停止」ならば、
          KKK→状態=「再生」
        違えば、

    停止メニュー→クリックした時は〜
      KKK→状態=「停止」

    一時停止メニュー→クリックした時は〜
      KKK→状態で条件分岐
        「再生」ならば、
          KKK→状態=「一時停止」
        「一時停止」ならば、
          KKK→状態=「一時停止」
        「停止」ならば、
        違えば、

    ファイルメニュー→クリックした時は〜
      一覧→フォルダ=一覧→フォルダのフォルダ選択
      もし(一覧→読込結果)ならば、
        時計→開始
        
        一覧→値=0
        一覧→クリックした時


    前メニュー→クリックした時は〜
      一覧→値=一覧→リスト前移動
      一覧→クリックした時

    次メニュー→クリックした時は〜
      仮値とは整数=一覧→リスト次移動
      もし(仮値≧0)ならば、
        一覧→値=仮値
        一覧→クリックした時

    マイナス秒メニュー→クリックした時は〜
      それは棒→値-30*1000
      棒→バー移動(それ)

    プラス秒メニュー→クリックした時は〜
      それは棒→値+30*1000
      棒→バー移動(それ)

    リピートメニュー→クリックした時は〜
      一覧→単リピート=(一覧→単リピート=0)
      
      リピートメニュー→チェック=一覧→単リピート
      全曲リピートメニュー→チェック=一覧→全リピート

    全曲リピートメニュー→クリックした時は〜
      一覧→全リピート=(一覧→全リピート=0)
      
      リピートメニュー→チェック=一覧→単リピート
      全曲リピートメニュー→チェック=一覧→全リピート

    一覧メニュー→クリックした時は〜
      一覧→可視=(一覧→可視=0)
      
      一覧メニュー→チェック=一覧→可視

    ランダムソートメニュー→クリックした時は〜
      一覧→ランダムソート
      一覧→値=0
      一覧→クリックした時

    昇順ソートメニュー→クリックした時は〜
      一覧→昇順ソート
      一覧→値=0
      一覧→クリックした時

    #----------------------------------------------------------------------------
    #----------------------------------------------------------------------------


    ●注目監視処理
      もし(母艦→タグ=0)ならば、一覧→注目
      違えば、枠→注目

    ●帯更新処理
      仮テキストとは文字列=「」
      もし(棒→最大値>0)ならば、
        分母とは文字列=時間文字列変換(棒→最大値/1000の整数部分)
        分子とは文字列=時間文字列変換(棒→値/1000の整数部分)
        仮テキスト=「{分子}/{分母} 【{KKK→状態}】」
      
      もし(帯→テキスト≠仮テキスト)ならば、帯→テキスト=仮テキスト



    ●時間文字列変換({整数}仮値を)
      仮時間とは整数
      仮分とは整数
      仮秒とは整数
      
      仮時間=(仮値を60*60で割る)の整数部分
      仮秒=仮値を60で割った余り
      仮分=((仮値-仮時間*60*60)を60で割る)の整数部分
      
      「{仮時間を2でゼロ埋め}:{仮分を2でゼロ埋め}:{仮秒を2でゼロ埋め}」で戻る


    母艦の可視はオン



    ※(2017/01/28(Sat) 22:49:03 編集[投稿者])
削除キー/

コメントを記入

 
関連内容&回答

Nomal 普通のプレイヤー / 使ってます (16/01/30(Sat) 13:02) [#1322] 【 表 示 内 容 】


Name/
E-Mail/
Title/
URL/
Icon/ (画像を選択/サンプル一覧)
削除キー/ (半角8文字以内)
確認キー/ (”日本語でナデシコ”と記入)
 

Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版