Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/11/07 (月)

吹き出しをいろんな方向に出したい!

| 23:28 | 吹き出しをいろんな方向に出したい! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 吹き出しをいろんな方向に出したい! - 雪乃☆雫のなでしこ日和 吹き出しをいろんな方向に出したい! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なでしこには、「吹き出し表示」とか、フォームを「吹き出し変形」とかの便利な機能があって、簡単に吹き出しを出せるので、折角だから(?)と、前色を塗ったキャラ達に、色々しゃべらせて遊んでたんだけど、吹き出しの向きっていうのは変えられないみたいなんだよね。

 二人並べて漫才なんかさせようとしたら、吹き出しの向きが同じじゃ、不都合だよね~。

 画像通り変形を使って、自前でなんとかするしか無いのかね?


 ・・・とゆーわけで、なんとかしてみたんだけど、どうだろう。

#-----------------------------------------------------------------------
# 任意の方向へ吹き出し表示
#  なでしこの「吹き出し表示」やフォームの「吹き出し変形」は、
# 左上にしか出来無いっぽいので、各方向の吹き出しを作る。
#-----------------------------------------------------------------------
#『吹き出し作成』
#・フォームを「方向」へW,Hで吹出作成。
# 「上」「下」「左」「右」「右上」「右下」「左上」「左下」の八方向。
# ※「方向」は矢印の向きではなく、吹き出し自体の出る向きである事に注意。
#  (なでしこ標準の「吹き出し変形」は、「左上」ということになる)
# ※吹き出し変形と違い、直近に指定した塗り色の吹き出しとなる。
#-----------------------------------------------------------
#『吹出セリフ表示』
#・フォームをSに指定した文章のサイズに合わせて吹出作成して文章を表示。
# 「minW,minH」は、文章が短かった時の、吹き出しの最小サイズ。
# 「方向」は省略すると、直近の指定が有効になります。
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
●吹出作成({グループ=?}FをW,Hで方向へ)
  xx=0。yy=0。ww=0。hh=0。
  方向で条件分岐
    右上ならば、  #矢印は左下
      Fのポケットは「右上」
      x1=0。y1=H。x2=W/8。y2=H/4*3。x3=W/4。y3=H/8*7。
    右下ならば、  #矢印は左上
      Fのポケットは「右下」
      x1=0。y1=0。x2=W/4。y2=H/8。x3=W/8。y3=H/4。
    左上ならば、  #矢印は右下(吹出し変形と同じ)
      Fのポケットは「左上」
      x1=W。y1=H。x2=W/4*3。y2=H/8*7。x3=W/8*7。y3=H/4*3。
    左下ならば、  #矢印は右上
      Fのポケットは「左下」
      x1=W。y1=0。x2=W/4*3。y2=H/8。x3=W/8*7。y3=H/4。
    上ならば、  #矢印は下向き
      hh=H/10。Fのポケットは「上」
      x1=W/2。y1=H+hh。x2=W/2-W/20。y2=H-H/100。x3=W/2+W/20。y3=H-H/100。
    下ならば、  #矢印は上向き
      hh=H/10。yy=hh。Fのポケットは「下」
      x1=W/2。y1=0。x2=W/2-W/20。y2=hh+H/100。x3=W/2+W/20。y3=hh+H/100。
    左ならば、  #矢印は右向き
      ww=W/10。Fのポケットは「左」
      x1=W+ww。y1=H/2。x2=W-W/100。y2=H/2-H/20。x3=W-W/100。y3=H/2+H/20。
    右ならば、  #矢印は左向き
      ww=W/10。xx=ww。Fのポケットは「右」
      x1=0。y1=H/2。x2=ww+W/100。y2=H/2-H/20。x3=ww+W/100。y3=H/2+H/20。
  Fの可視はオフ。
  FのクライアントWはW+ww。FのクライアントHはH+hh。
  Fを$00FF00で画面クリア。
  線スタイルは透明。
  Fのxx,yyからxx+W,yy+Hへ。1秒待つ。
  Fの「{x1},{y1},{x2},{y2},{x3},{y3}」へ多角形。
  F→画像通り変形。
  Fの可視はオン。
#-----------------------------------------------------------
●吹出セリフ表示({グループ=?}FにSを{整数=100}minW,{整数=50}minHで{文字列=「」}方向へ)
  Aとは文字列=「」。Bとは文字列=「」。
  Sで反復
    Bはそれ。
    もし(Aの文字数)<(Bの文字数)ならば、A=B。
  swとは整数=Aの文字幅取得shとは整数=(Sの文字高さ取得)*(Sの要素数)
  fwとは整数=(Aの文字幅取得)*1.5。fhとは整数=(Sの文字高さ取得)*(Sの要素数)*1.8
  もしfw<minWならば、fw=minW。#</pp>
  もし、fh<minHならば、fh=minH。#</pp>
  sxとは整数fw/2-sw/2-10
  syとは整数=fh/2-sh/2
  もし、方向=ならば、方向=F→ポケット。
  もし、方向=ならば、方向=左上。
  もし、方向=右ならば、sx=sx+fw/10  #矢印の長さ分
  もし、方向=下ならば、sy=sy+fh/10
  Fをfw,fhで方向へ吹出作成。
  Fのsx,syへSを文字表示。
#-----------------------------------------------------------------------
#以下はテスト

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

長明=「行く川の流れは絶えずしてしかも元の水にあらず{改行}{改行}淀みに浮かぶうたかたは、かつきえかつうかみて{改行}{改行}久しく止まりたるなし」
芭蕉=「月日は百代の過客にして、行き交ふ年もまた旅人なり。{改行}船の上に生涯を浮かべ、馬の口とらへて老いを迎ふる者は、日々旅にして旅を栖とす。{改行}古人も多く旅に死せるあり。」
平家=「祇園精舎の鐘の声、{改行}諸行無常の響きあり。{改行}{改行}沙羅双樹の花の色、{改行}盛者必衰の理をあらはす。{改行}
おごれる人も久しからず、{改行}ただ春の夜の夢のごとし。{改行}{改行}たけき者も遂にはほろびぬ、{改行}ひとへに風の前の塵に同じ。」
吹出方向=「上,下,左,右,右上,右下,左上,左下」を「,」で区切ったもの。

ふきだしとはフォームこれをダブルクリックした時は~終了
#-----------------------------------------------------------
ふきだしの位置は「{400},{200}」

#塗り色赤色
#吹出方向で反復。
#  ふきだしを300,200でそれへ吹出作成。
#  2秒待つ

塗り色は$EEBBCC。文字サイズは10。
長明をふきだしに吹出セリフ表示。
3秒待つ塗り色は$BBCCEE
芭蕉をふきだしに「右上」へ吹出セリフ表示。
3秒待つ塗り色は$BBEECC
平家をふきだしに「左」へ吹出セリフ表示。
3秒待つ塗り色は$FFFF99
吹出方向で反復。
  文字サイズは24
  ふきだしにそれを300,200でそれへ吹出セリフ表示。
  2秒待つ
#-----------------------------------------------------------------------

 モノスゴク無理矢理系で、単に楕多角形で三角の矢印をくっつけているだけ;;;

 こんな方式だから、吹き出しに枠を付けるのは無理そうだけど、吹き出し変形もまあそうだから、いっかー。

 本気の吹き出しを出したければ、ふつーに画像を用意して画像通り変形すればいいだけだもね~。

 でも、取りあえず、与えた文字列に合わせて、いろんな方向に吹き出しを作成して、しゃべらすことが出来るようになったので、ご満悦~♪

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20161107