Hatena::ブログ(Diary)

Yuki@REALbasic このページをアンテナに追加

 

11年10月01日

[]RealStudio(REALbasic)でアニメーション

最近のMacアプリはヌルヌル動くのがデフォなのに、RealStudioにはそういう機能が全然ない。。

そんな訳で作りました。


最短1行でアニメーションできます。

  NekoTweenContainer.Default.TweenFor(Self,"Top").StartTween(300)

アニメーションの種類や速度を変えたり、コールバックを設定する事も可能

  //ImgViewは画像表示を行うクラスのインスタンス
  Dim Tw as NekoTween = NekoTweenContainer.Default.TweenFor(ImgView,"Scale")
  
  //アニメーションの種類と速度を指定(オプション)
  Tw.TweenType = NekoTween.kTypeEaseOut
  Tw.DurationMiliSec = 1500
  
  //値が変わるたびに呼ぶメソッドを指定。
  //ここでは再描画を行うRedrawメソッドをコール
  Tw.OnUpdate = New NekoCallback(ImgView,"Redraw")
  
  //Scaleの値を2.0までアニメーション
  Tw.StartTween(2.0)  

サンプル作ったよ!

サンプルとソース

f:id:Mattsun:20111001202557j:image


中身的にはIntrospectionとWeakRefとTimerです。

興味がある方は覗いてみて下さい。

11年03月19日

[][]絵箱4リリース候補版

出しました。

前回β版(ver4.0.0b,build=f141)からの変更点:

  • 画像の選択機能を強化
  • バージョンチェック機能を追加
  • ヘルプメニューに「コメント・要望を送る」を追加
  • バグ取り

よろしければ試してやって下さい。

大きな問題がなければ、このまま来週には正式リリースしたいと思います。

ダウンロード:

http://nekobooks.com/tools/ebako/file/ebako4RC.dmg

11年03月08日

[]REALbasicでクラス名(String)からそのクラスのインスタンスを作る方法

REALbasicでは通常、インスタンスの作成には「New クラス名」という記述方法をする以外の方法はありません。

  Dim D as Dictuinary = New Dictionary

この時の「Dictionary」はあくまでコンパイル時に解釈されるので、実行時に変更する事はできないのだけど・・・


これがもし、

  Dim D as Dictuinary = Create("Dictionary")

みたいにできたら楽しいと思うの。


で、やってみた。

説明ややこしいのでソース全部のせます。

ポイントは、Introspectionを使ってClassInfo.Lookupメソッド(リファレンス未記載)を呼んで、文字列から該当クラスのTypeInfoを取得するところ。

未記載のクラス・メソッドを利用しているので一切公式の保証はありませんが、一応2008r5と2010r5で動作するらしいことを確認しました。

(本当に大丈夫なのかはわかりません。。)


function NewObject(ClassName as String,Params() as Variant) as Object

  '// Create a new instanse by ClassName string
  '// 2011 yuki@nekobooks.com
  '//
  '// ex: Dim o as Object = NewObject("Dictionary")
  
  
  'search 'Lookup' method
  If mLookup = Nil Then 'mLookup is Modul's property to chche ,and is null at first.
    'get an object of ClassInfo 
    'this ClassInfo object is used for calling 'Lookup' method
    Dim T as Introspection.TypeInfo = Introspection.GetType(Introspection.GetType(app)) 
    Dim Ms() as Introspection.MethodInfo = T.GetMethods
    
    'search 'Lookup' method 
    For each M as Introspection.MethodInfo In Ms
      Dim Ps() as Introspection.ParameterInfo = M.GetParameters()
      If M.Name = "Lookup" and UBound(Ps) = 0 Then
        If Ps(0).ParameterType.FullName = "String" Then
          mLookup = M 'cache Lookup method
          Exit
        End If
      End If
    Next
  End If
  
  If mLookup = Nil Then
    Return Nil 'fail to find Lookup method
  End If
  
  'Lookup target ClassInfo
  Dim LookupParam(0) as Variant
  LookupParam(0) = ClassName
  Dim TargetClassInfo as Introspection.TypeInfo = Introspection.TypeInfo(mLookup.Invoke(Nil,LookupParam))
  If TargetClassInfo = Nil Then
    Return Nil 'Class NOT Found
  End If
  
  'get constructors
  Dim CnstrI() as Introspection.ConstructorInfo = TargetClassInfo.GetConstructors()
  
  'Try each constructor
  Dim V as Variant
  For each C as Introspection.ConstructorInfo in CnstrI
    Try
      V = C.Invoke(Params) 'raise an exception if param count or type is missmatched. then try next
      Exit
    Catch TEx as TypeMismatchException
    End Try
  Next
  
  Return V.ObjectValue

End Function

面白いけど、どう使おう。。

08年05月16日

[]REALbasicでsetTimeoutみたいなの作った - Introspection使ってみた


概要:「3秒後にウインドウを閉じる」とか、一発でできるよ

以上。

ダウンロード : NekoDelay(クラス&サンプルプロジェクト)

REALbasic2008r1 or r2が必要です。2007以下では動きません


解説:というか以下蛇足

REALbasicでこの手の処理は基本Timerを使わなきゃいけないので、正直めんどい。

ウインドウがTimerだらけになって、何がなんだかわからなくなった事のある

REALbasic開発者は、多分全員。


JavaScriptだったら

setTimeout(function(){alert("にゃー")},3000);//3秒後に「にゃー」と鳴く

とかできるじゃないですか。


だから、REALbasicでもやってみた。

Call NekoDelay.CallMethod(Window1,"Close",3)//3秒後に閉じてみる

3秒後にWindow1を閉じちゃいます。

メソッドに引数を渡したり、戻り値を取得したりもOK

詳しい事はサンプル見てね。


REALbasic2008で登場した噂のIntrospection(いんとろすぺくしょん?舌が回んない)使ってます。

難しそうなイメージがあったけど、核になる部分は5行くらいで書けた。

もっと色んな使い方ができそう。


改良してくれる人、アイデア投げてくれるひと募集中。

コードは自由に使ってくださいです。

(上のサンプルプロジェクトから直接クラス引っこ抜いて使ってください)

smsm 2009/02/02 10:07 モバイルからもあなたの隠されたsm度を簡単無料診断

熟女熟女 2009/02/03 09:43 風俗の男性版のお仕事に興味のある方はぜひ当サイトへ

まんこまんこ 2009/02/04 15:29 雌犬どもが、まんこペロペロして欲しいとM字開脚で待っているサイト。

愛人募集愛人募集 2009/02/05 11:14 週末は愛玩具で遊びつくせ、愛人募集は必須事項。

08年01月26日

[]Ver3.5.2暫定リリース

先日見つかった不具合への対処と、ついでにいくつかの新機能を乗っけたver3.5.2を公開します。

とりあえずサイト上で暫定公開しますVector経由での正式公開にはしばらく時間が掛かりますので

ご了承下さいませ。



修正・新機能

  • QuickTimeをバージョンアップすると、画像保存時に絵箱が固まる問題の修正。
  • ムービー対応
    • 一覧上でムービーファイル(.mov)をプレビューできます
    • プレビューしている位置の画像からムービーファイルのアイコン・サムネイルを作成できます
  • クイックルック対応(OS10.5/試験対応)
    • ちょっと実装が無茶で、プレビューを閉じるのに裏で別シェル立ち上げて「Kill -HUP PID」みたいなことやってます。何か問題があったら教えてください。