Giter VIP home page Giter VIP logo

navyjs-legacy2's Introduction

NavyJS & NavyCreator

  • モバイル向けのWebアプリケーションフレームワーク & IDE
  • http://navyjs.org/

NavyJSのビルド & テスト Build Status

# リポジトリ直下に移動して作業を行う.
cd /path/to/navyjs

# 必要なnode_modulesをインストールする.
npm install

# ビルドコマンドを実行
./navyjs/tools/build.sh

# ビルド完了
ls ./navyjs/build

# テスト開始
./navyjs/spec/run.sh

NavyCreatorのビルド

  • Qt Creatorをインストール
  • creator/src/navy-creator.proをQt Creatorで開く
  • ビルド -> 実行

navyjs-legacy2's People

Contributors

h13i32maru avatar

Stargazers

 avatar shikato avatar Pantelis Koukousoulas avatar Everton Yoshitani avatar taichi avatar Daichi Hirata avatar Yuki MIZUNO avatar tatsuo sakurai avatar Takahiko Inayama avatar okazaki-s avatar Haidong Wang avatar OKAMURA Naoki aka nyarla / kalaclista avatar Shintaro Suzuki avatar MakKi (makki_d) avatar hadashiA avatar  avatar  avatar Takuya Ueda avatar Kentaro Iizuka avatar

Watchers

Takuya Ueda avatar James Cloos avatar  avatar  avatar

Forkers

neojjang lzh280

navyjs-legacy2's Issues

コードエディタの強化


  • 外部エディタのほうがどうやっても優れてるのでそっちとの連携がうまくいくようにするほうがいい気がしてきた
  • WebStormだと引数にディレクトリを渡せばディレクトリを開くし、ファイルを渡せばファイルを開く
  • 設定で外部エディタのパスを指定できるようにする
  • プロジェクトのルートディレクトリを外部エディタで開く
  • code以下のファイルをダブルクリックしたら外部エディタで開くようにする
  • とりあえずはWebStormで正常に動くようにしておく
    • 他のエディタについてはとりあえず考えない

新規レイアウトを作るとバグる

  • 新規レイアウト作るとからファイルを作ることになるのでおかしくなる
  • 空配列が格納されたファイルを作成するようにする

リスト

  • Navy.ViewGroup.ListView
var listView = this.findViewById('listView');
var items = [
  {id:0, name: 'hoge'},
  {id:1, name: 'foo'},
  {id:2, name: 'bar'}
];

// itemsの各要素をループしてプロパティ名の要素に値を設定する
listView.setItems(items);

// 独自に設定する場合はcallbackを指定する
listView.setItems(items, function(item, itemIndex, viewGroup, viewGroupIndex){
  viewGroup.findViewById('id').setText(item.id);
  viewGroup.findViewById('name').setText(item.name.toUpperCase());

  // return false;をするとデフォルトの動作が行われる
});

// 要素を追加する
listView.addItems(items, callback);

// 要素を挿入する
listView.insertItems(items, index, callback);

// itemを置き換える
listView.replaceItems(items, index, callback);

// 要素を削除する
listView.removeItems(indexes)
listView.removeItemsByViewGroup(viewGroups);

// itemを取得する
listView.getItem(index);

ボタン

  • イベントシステム
function tap(view, ev){
  alert('tapped');
}

var button = this.find('foo');
button.on('tap', tap.bind(this));

タブ

JSON

extra: {
  contents: [
    {label: "", id: "", layoutFile: ""},
    {label: "", id: "", layoutFile: ""},
    {label: "", id: "", layoutFile: ""}
  ]
}

Plugin

{
  class: "Navy.ViewGroup.Tab",
  define: [
    {
      label: "contents",
      key: "extra.contents",
      type: "array",
      columns: ["label", "id", "layoutFile"]
    }
  ]
}

  • NLayoutWidgetに配列の機能をつける
    • クリックしたら指定されたカラムをもつ配列エディタが表示される
    • データ時には生のJSONを持つので良さそう

Viewのプラグイン化

  • Viewの設定をプラグイン化してCreatorに動的に組み込めるようにする
  • プラグイン化することで新しいViewを追加するときにいちいちコードを書かなくてもすむ
  • またユーザ定義型のViewも組み込めるようになる

ファイル構成

  • manifest.json
    • プラグインについての説明など
    • とりあえずプラグイン機構としてはViewのみだけど、将来のことも考えてmanifestを作っておく
  • view.json
    • Viewについての定義ファイル
  • LICENSE
    • ライセンスファイル

manifest.json

{
  "name": "plugin name",
  "version": "plugin version",
  "description": "plugin description",
  "author": "plugin author",
  "url": "plugin url (optional)"
  "type": "view",
  "scripts": ["navy.view.view.json", "navy.view.text.json"]
}

view.json

  • 型の種類
    • string
    • number
    • boolean
    • stringList
    • numberList
    • pageList
    • sceneList
    • imageList
    • linkList
    • layoutList
{
  "class": "Navy.View.View",
  "define": [
    {
      "label": "visible",
      "key": "visible",
      "type": "boolean",
      "value": true
    },
    {
      "label": "pos(x)",
      "key": "pos.x"
      "type": "number",
      "value": 0,
    },
    {
      "name": "pos(y)",
      "key": "pos.y"
      "type": "number",
      "value": 0,
    },
    {
      "label": "sizePolicy(x)",
      "key": "sizePolicy.x", 
      "type": "stringList",
      "value": ["fixed", "wrapContent", "matchParent"],
    },
    {
      "label": "sizePolicy(y)",
      "key": "sizePolicy.y",
      "type": "stringList",
      "value": ["fixed", "wrapContent", "matchParent"],
    },
    {
      "label": "size(x)",
      "key": "size.x",
      "type": "number",
      "value": 100
    },
    {
      "label": "size(y)",
      "key": "size.y",
      "type": "number",
      "value": 100
    },
    {
      "label": "link",
      "key": "link.id"
      "type": "linkList"
    },
    {
      "label": "bg color",
      "key": "backgroundColor",
      "type": "string"
    }
  ]
}
{
  "class": "Navy.View.Text",
  "define": [
    {
      "label": "text",
      "key": "extra.text",
      "type": "string",
      "value": "text"
    },
    {
      "label": "fontSize",
      "key": "extra.fontSize",
      "type": "number",
      "value": 20
    },
    {
      "label": "fontColor",
      "key": "extra.fontColor",
      "type": "string",
      "value": "#000000"
    }
  ]
}
{
  "class": "Navy.View.Image",
  "define": [
    {
      "label": "image",
      "key": "extra.src",
      "type": "imageList"
    }
  ]
}
{
  "class": "Navy.ViewGroup.ViewGroup",
  "define": [
    {
      "label": "layout",
      "key": "extra.contentLayoutFile",
      "type": "layoutList"
    }
  ]
}

プロジェクトファイルを作る

  • ディレクトリのトップにプロジェクトファイルを作る
    • その中にプロジェクトの設定を保存する
- project_name.ncproj
- contents
  - code
  - config
  - creator
  - image
  - layout
  - navy

プロジェクトの設定として欲しいものは?

  • プロジェクト名
  • リードオンリー
    • code
    • layout
    • config

生のstyleを設定できるようにする

  • こんな感じでviewの中のelementに生のスタイルを設定できるようにする
  • elementの指定方法は対象としているviewのelementからのquerySelectorAllで設定する
{
  "$this": {
    "backgroundImage": "..."
  },
  ".hoge .foo": {
    "margin": "1px 10px"
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.