From 8713024d66c73270f8f27411260b396d92678afe Mon Sep 17 00:00:00 2001 From: Takenori Imoto Date: Thu, 8 Sep 2016 17:28:20 +0900 Subject: [PATCH] =?UTF-8?q?=E5=90=89=E9=87=8C=E5=90=89=E9=87=8C2=20Ver2.32?= =?UTF-8?q?r2=E3=81=AB=E4=BB=98=E5=B1=9E=E3=81=AE=E3=83=89=E3=82=AD?= =?UTF-8?q?=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/browser.css | 2 + docs/browser2.css | 299 ++ docs/grad.png | Bin 0 -> 557 bytes docs/index.html | 138 + docs/kag3doc/contents/AboutBox.html | 87 + docs/kag3doc/contents/BGM.html | 78 + docs/kag3doc/contents/BG_Displayed.jpg | Bin 0 -> 22152 bytes .../kag3doc/contents/ButtonGlyphImageList.png | Bin 0 -> 249 bytes docs/kag3doc/contents/ClickableMap.html | 181 + docs/kag3doc/contents/Debug.html | 75 + docs/kag3doc/contents/DispBase.html | 71 + docs/kag3doc/contents/DispLayer.html | 97 + docs/kag3doc/contents/Distribute.html | 92 + docs/kag3doc/contents/Diverge.html | 128 + docs/kag3doc/contents/Diverge.png | Bin 0 -> 4736 bytes docs/kag3doc/contents/Folders.png | Bin 0 -> 2628 bytes docs/kag3doc/contents/GraphicFormats.html | 91 + docs/kag3doc/contents/HistoryOfStore.html | 49 + docs/kag3doc/contents/Intro.html | 49 + docs/kag3doc/contents/LayerDisplayed.jpg | Bin 0 -> 22984 bytes docs/kag3doc/contents/Layers.jpg | Bin 0 -> 27475 bytes docs/kag3doc/contents/LayersDesc.jpg | Bin 0 -> 23409 bytes docs/kag3doc/contents/Letter.html | 158 + docs/kag3doc/contents/Macro.html | 154 + docs/kag3doc/contents/Misses.html | 64 + docs/kag3doc/contents/MouseKeyboard.html | 66 + docs/kag3doc/contents/PortFromOldKAG.html | 84 + docs/kag3doc/contents/Prepare.html | 215 ++ docs/kag3doc/contents/RClick.html | 188 + docs/kag3doc/contents/ReadUnread.html | 112 + docs/kag3doc/contents/SaveData.html | 67 + docs/kag3doc/contents/SaveLoad.html | 157 + docs/kag3doc/contents/Sound.html | 41 + docs/kag3doc/contents/SubRoutine.html | 91 + docs/kag3doc/contents/TJSTips.html | 815 ++++ docs/kag3doc/contents/Tags.html | 1634 ++++++++ docs/kag3doc/contents/Trans.html | 252 ++ docs/kag3doc/contents/UsingFrame.jpg | Bin 0 -> 29340 bytes docs/kag3doc/contents/UsingVN.jpg | Bin 0 -> 27489 bytes docs/kag3doc/contents/Var.html | 313 ++ docs/kag3doc/contents/Vertical.jpg | Bin 0 -> 17394 bytes docs/kag3doc/contents/ayari.png | Bin 0 -> 15858 bytes docs/kag3doc/contents/ayari_m.png | Bin 0 -> 3098 bytes docs/kag3doc/contents/browser.css | 3 + docs/kag3doc/contents/browser2.css | 299 ++ docs/kag3doc/contents/clickable.png | Bin 0 -> 7207 bytes docs/kag3doc/contents/documentid.js | 2 + docs/kag3doc/contents/folder.png | Bin 0 -> 220 bytes docs/kag3doc/contents/frame.html | 58 + docs/kag3doc/contents/gokigen.png | Bin 0 -> 4203 bytes docs/kag3doc/contents/grad.png | Bin 0 -> 557 bytes docs/kag3doc/contents/hline.png | Bin 0 -> 123 bytes docs/kag3doc/contents/index.html | 18 + docs/kag3doc/contents/keywordgrep.js | 57 + docs/kag3doc/contents/keywords.css | 3 + docs/kag3doc/contents/keywords.html | 946 +++++ docs/kag3doc/contents/keywords2.css | 7 + docs/kag3doc/contents/keywords_p.html | 946 +++++ docs/kag3doc/contents/kiri_a.png | Bin 0 -> 25867 bytes docs/kag3doc/contents/kiri_aa.png | Bin 0 -> 33561 bytes docs/kag3doc/contents/kon-banwa.png | Bin 0 -> 2824 bytes docs/kag3doc/contents/map1.png | Bin 0 -> 3276 bytes docs/kag3doc/contents/map1_p.png | Bin 0 -> 3561 bytes docs/kag3doc/contents/postcontent.js | 1 + docs/kag3doc/contents/tagdb_xml/tags.xml | 3350 +++++++++++++++++ docs/kag3doc/contents/td.png | Bin 0 -> 95 bytes docs/kag3doc/contents/trans0b.jpg | Bin 0 -> 2267 bytes docs/kag3doc/contents/trans0f.jpg | Bin 0 -> 10326 bytes docs/kag3doc/contents/trans2b.jpg | Bin 0 -> 14837 bytes docs/kag3doc/contents/trans3f.jpg | Bin 0 -> 13305 bytes docs/kag3doc/contents/univtrans_A.png | Bin 0 -> 558 bytes docs/kag3doc/contents/univtrans_B.png | Bin 0 -> 445 bytes docs/kag3doc/contents/univtrans_R.png | Bin 0 -> 168 bytes docs/kag3doc/contents/univtrans_Snostay.png | Bin 0 -> 1137 bytes docs/kag3doc/contents/univtrans_Sstay.png | Bin 0 -> 1280 bytes docs/kag3doc/contents/univtrans_Sstaysrc.png | Bin 0 -> 1237 bytes docs/kag3doc/contents/univtrans_V1.png | Bin 0 -> 1164 bytes docs/kag3doc/contents/univtrans_V64.png | Bin 0 -> 3062 bytes docs/kag3doc/index.html | 10 + docs/kr2doc/contents/2DAffineMatrix.png | Bin 0 -> 442 bytes docs/kr2doc/contents/AutoUpdateIcon.png | Bin 0 -> 215 bytes docs/kr2doc/contents/ColorCodes.html | 84 + docs/kr2doc/contents/CommandLine.html | 400 ++ .../contents/ComputerDependentProblems.html | 93 + docs/kr2doc/contents/Configure.html | 72 + docs/kr2doc/contents/Configure.png | Bin 0 -> 19003 bytes docs/kr2doc/contents/Console.html | 44 + docs/kr2doc/contents/Console.png | Bin 0 -> 8533 bytes docs/kr2doc/contents/ConsoleIcon.png | Bin 0 -> 218 bytes docs/kr2doc/contents/Controller.html | 48 + docs/kr2doc/contents/Controller.png | Bin 0 -> 885 bytes docs/kr2doc/contents/ControllerIcon.png | Bin 0 -> 230 bytes docs/kr2doc/contents/CopyIcon.png | Bin 0 -> 216 bytes docs/kr2doc/contents/Copyrights.html | 202 + docs/kr2doc/contents/CutIcon.png | Bin 0 -> 195 bytes docs/kr2doc/contents/Debug.html | 101 + docs/kr2doc/contents/DeleteIcon.png | Bin 0 -> 225 bytes docs/kr2doc/contents/EventIcon.png | Bin 0 -> 205 bytes docs/kr2doc/contents/EventSystem.html | 95 + docs/kr2doc/contents/ExecIcon.png | Bin 0 -> 186 bytes docs/kr2doc/contents/ExitIcon.png | Bin 0 -> 216 bytes docs/kr2doc/contents/ExprWatch.html | 52 + docs/kr2doc/contents/ExprWatch.png | Bin 0 -> 5062 bytes docs/kr2doc/contents/ExprWatchIcon.png | Bin 0 -> 215 bytes docs/kr2doc/contents/FileChkTool.html | 79 + docs/kr2doc/contents/Files.html | 127 + docs/kr2doc/contents/FolderSelector.png | Bin 0 -> 8012 bytes docs/kr2doc/contents/FontMaker.html | 72 + docs/kr2doc/contents/FontMaker.png | Bin 0 -> 4044 bytes docs/kr2doc/contents/GraphicSystem.html | 280 ++ docs/kr2doc/contents/HotKeys.html | 56 + docs/kr2doc/contents/KeyCodes.html | 185 + docs/kr2doc/contents/LoopTuner.html | 299 ++ docs/kr2doc/contents/MouseCursors.html | 50 + docs/kr2doc/contents/NewExprIcon.png | Bin 0 -> 191 bytes docs/kr2doc/contents/PasteIcon.png | Bin 0 -> 232 bytes docs/kr2doc/contents/Plugins.html | 164 + docs/kr2doc/contents/Releaser.html | 113 + docs/kr2doc/contents/ReleaserExeSettings.png | Bin 0 -> 20302 bytes docs/kr2doc/contents/ReleaserFiles.png | Bin 0 -> 4761 bytes docs/kr2doc/contents/ReleaserOutput.png | Bin 0 -> 3827 bytes docs/kr2doc/contents/ReleaserSelect.png | Bin 0 -> 3231 bytes docs/kr2doc/contents/ReleaserSettings.png | Bin 0 -> 4087 bytes docs/kr2doc/contents/SaveIcon.png | Bin 0 -> 205 bytes docs/kr2doc/contents/ScriptEditor.html | 53 + docs/kr2doc/contents/ScriptEditor.png | Bin 0 -> 4508 bytes docs/kr2doc/contents/ScriptEditorIcon.png | Bin 0 -> 217 bytes docs/kr2doc/contents/SignTool.html | 130 + docs/kr2doc/contents/SoundSystem.html | 48 + docs/kr2doc/contents/Startup.html | 75 + docs/kr2doc/contents/StorageSystem.html | 69 + docs/kr2doc/contents/TJSDumpIcon.png | Bin 0 -> 239 bytes docs/kr2doc/contents/TPC.html | 253 ++ docs/kr2doc/contents/TPC.png | Bin 0 -> 14805 bytes docs/kr2doc/contents/Transition.html | 228 ++ docs/kr2doc/contents/UndoIcon.png | Bin 0 -> 192 bytes docs/kr2doc/contents/UpdateIcon.png | Bin 0 -> 192 bytes docs/kr2doc/contents/about.html | 36 + docs/kr2doc/contents/browser.css | 2 + docs/kr2doc/contents/browser2.css | 299 ++ docs/kr2doc/contents/crAppStart.png | Bin 0 -> 186 bytes docs/kr2doc/contents/crArrow.png | Bin 0 -> 155 bytes docs/kr2doc/contents/crCross.png | Bin 0 -> 119 bytes docs/kr2doc/contents/crDrag.png | Bin 0 -> 170 bytes docs/kr2doc/contents/crHBeam.png | Bin 0 -> 121 bytes docs/kr2doc/contents/crHSplit.png | Bin 0 -> 137 bytes docs/kr2doc/contents/crHandPoint.png | Bin 0 -> 170 bytes docs/kr2doc/contents/crHelp.png | Bin 0 -> 181 bytes docs/kr2doc/contents/crHourGlass.png | Bin 0 -> 163 bytes docs/kr2doc/contents/crIBeam.png | Bin 0 -> 121 bytes docs/kr2doc/contents/crMultiDrag.png | Bin 0 -> 185 bytes docs/kr2doc/contents/crNo.png | Bin 0 -> 172 bytes docs/kr2doc/contents/crNoDrop.png | Bin 0 -> 175 bytes docs/kr2doc/contents/crSQLWait.png | Bin 0 -> 211 bytes docs/kr2doc/contents/crSize.png | Bin 0 -> 158 bytes docs/kr2doc/contents/crSizeNESW.png | Bin 0 -> 144 bytes docs/kr2doc/contents/crSizeNS.png | Bin 0 -> 132 bytes docs/kr2doc/contents/crSizeNWSE.png | Bin 0 -> 147 bytes docs/kr2doc/contents/crSizeWE.png | Bin 0 -> 133 bytes docs/kr2doc/contents/crUpArrow.png | Bin 0 -> 125 bytes docs/kr2doc/contents/crVSplit.png | Bin 0 -> 139 bytes docs/kr2doc/contents/documentid.js | 2 + docs/kr2doc/contents/f_AsyncTrigger.html | 46 + .../contents/f_AsyncTrigger_AsyncTrigger.html | 57 + .../contents/f_AsyncTrigger_cached.html | 39 + .../contents/f_AsyncTrigger_cancel.html | 49 + docs/kr2doc/contents/f_AsyncTrigger_mode.html | 46 + .../contents/f_AsyncTrigger_onFire.html | 44 + .../contents/f_AsyncTrigger_trigger.html | 50 + docs/kr2doc/contents/f_CDDASoundBuffer.html | 54 + .../f_CDDASoundBuffer_CDDASoundBuffer.html | 53 + .../contents/f_CDDASoundBuffer_fade.html | 60 + .../contents/f_CDDASoundBuffer_looping.html | 38 + .../f_CDDASoundBuffer_onFadeCompleted.html | 44 + .../f_CDDASoundBuffer_onStatusChanged.html | 49 + .../contents/f_CDDASoundBuffer_open.html | 56 + .../contents/f_CDDASoundBuffer_paused.html | 39 + .../contents/f_CDDASoundBuffer_play.html | 48 + .../contents/f_CDDASoundBuffer_position.html | 38 + .../contents/f_CDDASoundBuffer_status.html | 40 + .../contents/f_CDDASoundBuffer_stop.html | 48 + .../contents/f_CDDASoundBuffer_stopFade.html | 49 + .../contents/f_CDDASoundBuffer_totalTime.html | 38 + .../contents/f_CDDASoundBuffer_volume.html | 37 + .../contents/f_CDDASoundBuffer_volume2.html | 42 + docs/kr2doc/contents/f_Clipboard.html | 43 + docs/kr2doc/contents/f_Clipboard_asText.html | 38 + .../contents/f_Clipboard_hasFormat.html | 53 + docs/kr2doc/contents/f_Console.html | 43 + docs/kr2doc/contents/f_Console_visible.html | 37 + docs/kr2doc/contents/f_Controller.html | 43 + .../kr2doc/contents/f_Controller_visible.html | 37 + docs/kr2doc/contents/f_Debug.html | 53 + .../contents/f_Debug_clearLogFileOnError.html | 42 + docs/kr2doc/contents/f_Debug_console.html | 40 + docs/kr2doc/contents/f_Debug_controller.html | 40 + docs/kr2doc/contents/f_Debug_logAsError.html | 60 + docs/kr2doc/contents/f_Debug_logLocation.html | 38 + .../contents/f_Debug_logToFileOnError.html | 43 + docs/kr2doc/contents/f_Debug_message.html | 52 + docs/kr2doc/contents/f_Debug_notice.html | 55 + .../contents/f_Debug_startLogToFile.html | 58 + docs/kr2doc/contents/f_Font.html | 61 + docs/kr2doc/contents/f_Font_angle.html | 39 + docs/kr2doc/contents/f_Font_bold.html | 37 + docs/kr2doc/contents/f_Font_doUserSelect.html | 71 + docs/kr2doc/contents/f_Font_face.html | 38 + .../kr2doc/contents/f_Font_getEscHeightX.html | 60 + .../kr2doc/contents/f_Font_getEscHeightY.html | 60 + docs/kr2doc/contents/f_Font_getEscWidthX.html | 60 + docs/kr2doc/contents/f_Font_getEscWidthY.html | 60 + docs/kr2doc/contents/f_Font_getList.html | 53 + .../kr2doc/contents/f_Font_getTextHeight.html | 55 + docs/kr2doc/contents/f_Font_getTextWidth.html | 56 + docs/kr2doc/contents/f_Font_height.html | 36 + docs/kr2doc/contents/f_Font_italic.html | 37 + .../contents/f_Font_mapPrerenderedFont.html | 58 + docs/kr2doc/contents/f_Font_strikeout.html | 38 + docs/kr2doc/contents/f_Font_underline.html | 38 + .../contents/f_Font_unmapPrerenderedFont.html | 52 + docs/kr2doc/contents/f_KAGParser.html | 70 + .../contents/f_KAGParser_KAGParser.html | 48 + docs/kr2doc/contents/f_KAGParser_assign.html | 52 + .../contents/f_KAGParser_callLabel.html | 53 + .../contents/f_KAGParser_callStackDepth.html | 36 + docs/kr2doc/contents/f_KAGParser_clear.html | 48 + .../contents/f_KAGParser_clearCallStack.html | 48 + .../kr2doc/contents/f_KAGParser_curLabel.html | 36 + docs/kr2doc/contents/f_KAGParser_curLine.html | 36 + .../contents/f_KAGParser_curLineStr.html | 36 + docs/kr2doc/contents/f_KAGParser_curPos.html | 36 + .../contents/f_KAGParser_curStorage.html | 37 + .../contents/f_KAGParser_debugLevel.html | 41 + .../contents/f_KAGParser_getNextTag.html | 59 + .../contents/f_KAGParser_goToLabel.html | 52 + .../kr2doc/contents/f_KAGParser_ignoreCR.html | 38 + .../contents/f_KAGParser_interrupt.html | 54 + .../contents/f_KAGParser_loadScenario.html | 53 + .../contents/f_KAGParser_macroParams.html | 36 + docs/kr2doc/contents/f_KAGParser_macros.html | 37 + .../contents/f_KAGParser_onAfterReturn.html | 44 + docs/kr2doc/contents/f_KAGParser_onCall.html | 53 + docs/kr2doc/contents/f_KAGParser_onJump.html | 53 + docs/kr2doc/contents/f_KAGParser_onLabel.html | 51 + .../kr2doc/contents/f_KAGParser_onReturn.html | 53 + .../contents/f_KAGParser_onScenarioLoad.html | 55 + .../f_KAGParser_onScenarioLoaded.html | 53 + .../kr2doc/contents/f_KAGParser_onScript.html | 62 + .../f_KAGParser_processSpecialTags.html | 39 + .../contents/f_KAGParser_resetInterrupt.html | 53 + docs/kr2doc/contents/f_KAGParser_restore.html | 56 + docs/kr2doc/contents/f_KAGParser_store.html | 51 + docs/kr2doc/contents/f_Layer.html | 173 + docs/kr2doc/contents/f_Layer_Layer.html | 64 + docs/kr2doc/contents/f_Layer_absolute.html | 46 + .../contents/f_Layer_absoluteOrderMode.html | 47 + docs/kr2doc/contents/f_Layer_adjustGamma.html | 81 + docs/kr2doc/contents/f_Layer_affineBlend.html | 136 + docs/kr2doc/contents/f_Layer_affineCopy.html | 141 + docs/kr2doc/contents/f_Layer_affinePile.html | 134 + .../kr2doc/contents/f_Layer_assignImages.html | 55 + .../contents/f_Layer_attentionLeft.html | 41 + .../kr2doc/contents/f_Layer_attentionTop.html | 41 + .../contents/f_Layer_beginTransition.html | 95 + docs/kr2doc/contents/f_Layer_blendRect.html | 81 + docs/kr2doc/contents/f_Layer_bringToBack.html | 56 + .../kr2doc/contents/f_Layer_bringToFront.html | 56 + docs/kr2doc/contents/f_Layer_cached.html | 40 + docs/kr2doc/contents/f_Layer_callOnPaint.html | 40 + docs/kr2doc/contents/f_Layer_children.html | 37 + docs/kr2doc/contents/f_Layer_clipHeight.html | 41 + docs/kr2doc/contents/f_Layer_clipLeft.html | 41 + docs/kr2doc/contents/f_Layer_clipTop.html | 41 + docs/kr2doc/contents/f_Layer_clipWidth.html | 41 + docs/kr2doc/contents/f_Layer_colorRect.html | 81 + docs/kr2doc/contents/f_Layer_convertType.html | 58 + docs/kr2doc/contents/f_Layer_copyRect.html | 79 + docs/kr2doc/contents/f_Layer_cursor.html | 39 + docs/kr2doc/contents/f_Layer_cursorX.html | 42 + docs/kr2doc/contents/f_Layer_cursorY.html | 42 + docs/kr2doc/contents/f_Layer_doBoxBlur.html | 58 + docs/kr2doc/contents/f_Layer_doGrayScale.html | 48 + docs/kr2doc/contents/f_Layer_drawText.html | 91 + docs/kr2doc/contents/f_Layer_enabled.html | 38 + docs/kr2doc/contents/f_Layer_face.html | 42 + docs/kr2doc/contents/f_Layer_fillRect.html | 70 + docs/kr2doc/contents/f_Layer_flipLR.html | 50 + docs/kr2doc/contents/f_Layer_flipUD.html | 50 + docs/kr2doc/contents/f_Layer_focus.html | 54 + docs/kr2doc/contents/f_Layer_focusNext.html | 47 + docs/kr2doc/contents/f_Layer_focusPrev.html | 47 + docs/kr2doc/contents/f_Layer_focusable.html | 38 + docs/kr2doc/contents/f_Layer_focused.html | 37 + docs/kr2doc/contents/f_Layer_font.html | 37 + docs/kr2doc/contents/f_Layer_getLayerAt.html | 78 + .../kr2doc/contents/f_Layer_getMainPixel.html | 55 + .../kr2doc/contents/f_Layer_getMaskPixel.html | 55 + .../contents/f_Layer_getProvincePixel.html | 55 + docs/kr2doc/contents/f_Layer_hasImage.html | 44 + docs/kr2doc/contents/f_Layer_height.html | 41 + docs/kr2doc/contents/f_Layer_hint.html | 43 + .../kr2doc/contents/f_Layer_hitThreshold.html | 41 + docs/kr2doc/contents/f_Layer_hitType.html | 42 + docs/kr2doc/contents/f_Layer_holdAlpha.html | 69 + docs/kr2doc/contents/f_Layer_imageHeight.html | 41 + docs/kr2doc/contents/f_Layer_imageLeft.html | 41 + .../contents/f_Layer_imageModified.html | 40 + docs/kr2doc/contents/f_Layer_imageTop.html | 41 + docs/kr2doc/contents/f_Layer_imageWidth.html | 41 + docs/kr2doc/contents/f_Layer_imeMode.html | 55 + .../contents/f_Layer_independMainImage.html | 64 + .../f_Layer_independProvinceImage.html | 64 + docs/kr2doc/contents/f_Layer_isPrimary.html | 37 + .../contents/f_Layer_joinFocusChain.html | 40 + docs/kr2doc/contents/f_Layer_left.html | 41 + docs/kr2doc/contents/f_Layer_loadImages.html | 77 + .../contents/f_Layer_loadProvinceImage.html | 53 + .../contents/f_Layer_mainImageBuffer.html | 52 + .../f_Layer_mainImageBufferForWrite.html | 53 + .../f_Layer_mainImageBufferPitch.html | 50 + docs/kr2doc/contents/f_Layer_moveBefore.html | 54 + docs/kr2doc/contents/f_Layer_moveBehind.html | 54 + docs/kr2doc/contents/f_Layer_name.html | 37 + .../kr2doc/contents/f_Layer_neutralColor.html | 39 + .../contents/f_Layer_nextFocusable.html | 37 + docs/kr2doc/contents/f_Layer_nodeEnabled.html | 38 + docs/kr2doc/contents/f_Layer_nodeVisible.html | 38 + .../contents/f_Layer_onBeforeFocus.html | 60 + docs/kr2doc/contents/f_Layer_onBlur.html | 48 + docs/kr2doc/contents/f_Layer_onClick.html | 56 + .../contents/f_Layer_onDoubleClick.html | 55 + docs/kr2doc/contents/f_Layer_onFocus.html | 52 + docs/kr2doc/contents/f_Layer_onHitTest.html | 64 + docs/kr2doc/contents/f_Layer_onKeyDown.html | 65 + docs/kr2doc/contents/f_Layer_onKeyPress.html | 54 + docs/kr2doc/contents/f_Layer_onKeyUp.html | 62 + docs/kr2doc/contents/f_Layer_onMouseDown.html | 68 + .../kr2doc/contents/f_Layer_onMouseEnter.html | 48 + .../kr2doc/contents/f_Layer_onMouseLeave.html | 48 + docs/kr2doc/contents/f_Layer_onMouseMove.html | 61 + docs/kr2doc/contents/f_Layer_onMouseUp.html | 64 + .../kr2doc/contents/f_Layer_onMouseWheel.html | 67 + .../contents/f_Layer_onNodeDisabled.html | 45 + .../contents/f_Layer_onNodeEnabled.html | 45 + docs/kr2doc/contents/f_Layer_onPaint.html | 50 + .../f_Layer_onSearchNextFocusable.html | 52 + .../f_Layer_onSearchPrevFocusable.html | 52 + .../f_Layer_onTransitionCompleted.html | 52 + docs/kr2doc/contents/f_Layer_opacity.html | 37 + .../contents/f_Layer_operateAffine.html | 158 + docs/kr2doc/contents/f_Layer_operateRect.html | 106 + .../contents/f_Layer_operateStretch.html | 125 + docs/kr2doc/contents/f_Layer_order.html | 45 + docs/kr2doc/contents/f_Layer_parent.html | 39 + docs/kr2doc/contents/f_Layer_pileRect.html | 82 + docs/kr2doc/contents/f_Layer_piledCopy.html | 73 + .../contents/f_Layer_prevFocusable.html | 37 + .../contents/f_Layer_provinceImageBuffer.html | 53 + .../f_Layer_provinceImageBufferForWrite.html | 54 + .../f_Layer_provinceImageBufferPitch.html | 49 + .../contents/f_Layer_releaseCapture.html | 52 + docs/kr2doc/contents/f_Layer_removeMode.html | 48 + .../contents/f_Layer_saveLayerImage.html | 63 + .../contents/f_Layer_setAttentionPos.html | 63 + docs/kr2doc/contents/f_Layer_setClip.html | 73 + .../kr2doc/contents/f_Layer_setCursorPos.html | 57 + docs/kr2doc/contents/f_Layer_setImagePos.html | 60 + .../kr2doc/contents/f_Layer_setImageSize.html | 59 + .../kr2doc/contents/f_Layer_setMainPixel.html | 59 + .../kr2doc/contents/f_Layer_setMaskPixel.html | 59 + docs/kr2doc/contents/f_Layer_setMode.html | 49 + docs/kr2doc/contents/f_Layer_setPos.html | 68 + .../contents/f_Layer_setProvincePixel.html | 59 + docs/kr2doc/contents/f_Layer_setSize.html | 57 + .../contents/f_Layer_setSizeToImageSize.html | 50 + .../contents/f_Layer_showParentHint.html | 42 + .../contents/f_Layer_stopTransition.html | 48 + .../kr2doc/contents/f_Layer_stretchBlend.html | 103 + docs/kr2doc/contents/f_Layer_stretchCopy.html | 98 + docs/kr2doc/contents/f_Layer_stretchPile.html | 104 + docs/kr2doc/contents/f_Layer_top.html | 41 + docs/kr2doc/contents/f_Layer_type.html | 44 + docs/kr2doc/contents/f_Layer_update.html | 67 + .../kr2doc/contents/f_Layer_useAttention.html | 44 + docs/kr2doc/contents/f_Layer_visible.html | 37 + docs/kr2doc/contents/f_Layer_width.html | 41 + docs/kr2doc/contents/f_Layer_window.html | 36 + docs/kr2doc/contents/f_MIDISoundBuffer.html | 55 + .../f_MIDISoundBuffer_MIDISoundBuffer.html | 53 + .../contents/f_MIDISoundBuffer_fade.html | 60 + .../contents/f_MIDISoundBuffer_looping.html | 38 + .../contents/f_MIDISoundBuffer_midiOut.html | 53 + .../f_MIDISoundBuffer_onFadeCompleted.html | 44 + .../f_MIDISoundBuffer_onStatusChanged.html | 49 + .../contents/f_MIDISoundBuffer_open.html | 55 + .../contents/f_MIDISoundBuffer_paused.html | 39 + .../contents/f_MIDISoundBuffer_play.html | 48 + .../contents/f_MIDISoundBuffer_position.html | 38 + .../contents/f_MIDISoundBuffer_status.html | 40 + .../contents/f_MIDISoundBuffer_stop.html | 48 + .../contents/f_MIDISoundBuffer_stopFade.html | 49 + .../contents/f_MIDISoundBuffer_totalTime.html | 38 + .../contents/f_MIDISoundBuffer_volume.html | 37 + .../contents/f_MIDISoundBuffer_volume2.html | 42 + docs/kr2doc/contents/f_MenuItem.html | 60 + docs/kr2doc/contents/f_MenuItem_HMENU.html | 40 + docs/kr2doc/contents/f_MenuItem_MenuItem.html | 58 + docs/kr2doc/contents/f_MenuItem_add.html | 55 + docs/kr2doc/contents/f_MenuItem_caption.html | 37 + docs/kr2doc/contents/f_MenuItem_checked.html | 46 + docs/kr2doc/contents/f_MenuItem_children.html | 37 + docs/kr2doc/contents/f_MenuItem_enabled.html | 37 + docs/kr2doc/contents/f_MenuItem_group.html | 40 + docs/kr2doc/contents/f_MenuItem_index.html | 39 + docs/kr2doc/contents/f_MenuItem_insert.html | 55 + docs/kr2doc/contents/f_MenuItem_onClick.html | 44 + docs/kr2doc/contents/f_MenuItem_parent.html | 36 + docs/kr2doc/contents/f_MenuItem_popup.html | 84 + docs/kr2doc/contents/f_MenuItem_radio.html | 38 + docs/kr2doc/contents/f_MenuItem_remove.html | 52 + docs/kr2doc/contents/f_MenuItem_root.html | 36 + docs/kr2doc/contents/f_MenuItem_shortcut.html | 51 + docs/kr2doc/contents/f_MenuItem_visible.html | 37 + docs/kr2doc/contents/f_MenuItem_window.html | 36 + docs/kr2doc/contents/f_Pad.html | 64 + docs/kr2doc/contents/f_Pad_Pad.html | 48 + docs/kr2doc/contents/f_Pad_borderStyle.html | 37 + docs/kr2doc/contents/f_Pad_color.html | 36 + docs/kr2doc/contents/f_Pad_fileName.html | 37 + docs/kr2doc/contents/f_Pad_fontBold.html | 38 + docs/kr2doc/contents/f_Pad_fontColor.html | 37 + docs/kr2doc/contents/f_Pad_fontFace.html | 37 + docs/kr2doc/contents/f_Pad_fontHeight.html | 37 + docs/kr2doc/contents/f_Pad_fontItalic.html | 38 + docs/kr2doc/contents/f_Pad_fontSize.html | 37 + docs/kr2doc/contents/f_Pad_fontStrikeOut.html | 38 + docs/kr2doc/contents/f_Pad_fontUnderline.html | 38 + docs/kr2doc/contents/f_Pad_height.html | 36 + docs/kr2doc/contents/f_Pad_left.html | 36 + docs/kr2doc/contents/f_Pad_readOnly.html | 37 + .../kr2doc/contents/f_Pad_showScrollBars.html | 42 + docs/kr2doc/contents/f_Pad_showStatusBar.html | 37 + docs/kr2doc/contents/f_Pad_statusText.html | 36 + docs/kr2doc/contents/f_Pad_text.html | 36 + docs/kr2doc/contents/f_Pad_title.html | 36 + docs/kr2doc/contents/f_Pad_top.html | 36 + docs/kr2doc/contents/f_Pad_visible.html | 37 + docs/kr2doc/contents/f_Pad_width.html | 36 + docs/kr2doc/contents/f_Pad_wordWrap.html | 41 + docs/kr2doc/contents/f_Plugins.html | 45 + docs/kr2doc/contents/f_Plugins_getList.html | 47 + docs/kr2doc/contents/f_Plugins_link.html | 52 + docs/kr2doc/contents/f_Plugins_unlink.html | 52 + docs/kr2doc/contents/f_Scripts.html | 48 + docs/kr2doc/contents/f_Scripts_dump.html | 51 + docs/kr2doc/contents/f_Scripts_eval.html | 58 + .../contents/f_Scripts_evalStorage.html | 57 + docs/kr2doc/contents/f_Scripts_exec.html | 58 + .../contents/f_Scripts_execStorage.html | 57 + .../contents/f_Scripts_getTraceString.html | 53 + docs/kr2doc/contents/f_Storages.html | 54 + .../contents/f_Storages_addAutoPath.html | 63 + .../contents/f_Storages_chopStorageExt.html | 57 + .../f_Storages_extractStorageExt.html | 58 + .../f_Storages_extractStorageName.html | 57 + .../f_Storages_extractStoragePath.html | 58 + .../contents/f_Storages_getFullPath.html | 57 + .../contents/f_Storages_getLocalName.html | 52 + .../contents/f_Storages_getPlacedPath.html | 56 + .../f_Storages_isExistentStorage.html | 56 + .../contents/f_Storages_removeAutoPath.html | 56 + docs/kr2doc/contents/f_Storages_searchCD.html | 53 + .../contents/f_Storages_selectFile.html | 105 + docs/kr2doc/contents/f_System.html | 82 + .../f_System_addContinuousHandler.html | 57 + .../kr2doc/contents/f_System_appDataPath.html | 47 + .../contents/f_System_assignMessage.html | 58 + .../contents/f_System_createAppLock.html | 56 + docs/kr2doc/contents/f_System_createUUID.html | 53 + docs/kr2doc/contents/f_System_dataPath.html | 38 + .../contents/f_System_desktopHeight.html | 44 + .../kr2doc/contents/f_System_desktopLeft.html | 44 + docs/kr2doc/contents/f_System_desktopTop.html | 44 + .../contents/f_System_desktopWidth.html | 44 + docs/kr2doc/contents/f_System_doCompact.html | 59 + .../contents/f_System_drawThreadNum.html | 40 + .../contents/f_System_eventDisabled.html | 39 + .../contents/f_System_exceptionHandler.html | 71 + docs/kr2doc/contents/f_System_exeName.html | 36 + docs/kr2doc/contents/f_System_exePath.html | 41 + docs/kr2doc/contents/f_System_exit.html | 50 + .../contents/f_System_exitOnWindowClose.html | 37 + .../kr2doc/contents/f_System_getArgument.html | 62 + .../kr2doc/contents/f_System_getKeyState.html | 52 + .../contents/f_System_getTickCount.html | 48 + .../contents/f_System_graphicCacheLimit.html | 40 + docs/kr2doc/contents/f_System_inform.html | 56 + .../kr2doc/contents/f_System_inputString.html | 59 + docs/kr2doc/contents/f_System_onActivate.html | 46 + .../contents/f_System_onDeactivate.html | 46 + docs/kr2doc/contents/f_System_osName.html | 36 + .../contents/f_System_personalPath.html | 44 + .../contents/f_System_platformName.html | 36 + .../contents/f_System_readRegValue.html | 64 + .../f_System_removeContinuousHandler.html | 52 + .../contents/f_System_screenHeight.html | 44 + .../kr2doc/contents/f_System_screenWidth.html | 44 + .../kr2doc/contents/f_System_setArgument.html | 62 + .../contents/f_System_shellExecute.html | 57 + docs/kr2doc/contents/f_System_terminate.html | 50 + docs/kr2doc/contents/f_System_title.html | 41 + .../contents/f_System_toActualColor.html | 52 + .../kr2doc/contents/f_System_touchImages.html | 89 + .../contents/f_System_versionInformation.html | 39 + .../contents/f_System_versionString.html | 38 + docs/kr2doc/contents/f_Timer.html | 46 + docs/kr2doc/contents/f_Timer_Timer.html | 58 + docs/kr2doc/contents/f_Timer_capacity.html | 43 + docs/kr2doc/contents/f_Timer_enabled.html | 37 + docs/kr2doc/contents/f_Timer_interval.html | 42 + docs/kr2doc/contents/f_Timer_mode.html | 44 + docs/kr2doc/contents/f_Timer_onTimer.html | 44 + docs/kr2doc/contents/f_VideoOverlay.html | 111 + .../contents/f_VideoOverlay_VideoOverlay.html | 53 + .../contents/f_VideoOverlay_audioBalance.html | 40 + .../contents/f_VideoOverlay_audioVolume.html | 38 + .../contents/f_VideoOverlay_brightness.html | 37 + ...f_VideoOverlay_brightnessDefaultValue.html | 37 + .../f_VideoOverlay_brightnessRangeMax.html | 37 + .../f_VideoOverlay_brightnessRangeMin.html | 37 + .../f_VideoOverlay_brightnessStepSize.html | 38 + .../f_VideoOverlay_cancelPeriodEvent.html | 53 + .../f_VideoOverlay_cancelSegmentLoop.html | 53 + .../kr2doc/contents/f_VideoOverlay_close.html | 53 + .../contents/f_VideoOverlay_contrast.html | 37 + .../f_VideoOverlay_contrastDefaultValue.html | 37 + .../f_VideoOverlay_contrastRangeMax.html | 37 + .../f_VideoOverlay_contrastRangeMin.html | 37 + .../f_VideoOverlay_contrastStepSize.html | 38 + .../f_VideoOverlay_enabledAudioStream.html | 43 + docs/kr2doc/contents/f_VideoOverlay_fps.html | 37 + .../kr2doc/contents/f_VideoOverlay_frame.html | 42 + .../contents/f_VideoOverlay_height.html | 43 + docs/kr2doc/contents/f_VideoOverlay_hue.html | 37 + .../f_VideoOverlay_hueDefaultValue.html | 37 + .../contents/f_VideoOverlay_hueRangeMax.html | 37 + .../contents/f_VideoOverlay_hueRangeMin.html | 37 + .../contents/f_VideoOverlay_hueStepSize.html | 38 + .../contents/f_VideoOverlay_layer1.html | 37 + .../contents/f_VideoOverlay_layer2.html | 36 + docs/kr2doc/contents/f_VideoOverlay_left.html | 41 + docs/kr2doc/contents/f_VideoOverlay_loop.html | 38 + .../f_VideoOverlay_mixingMovieAlpha.html | 37 + .../f_VideoOverlay_mixingMovieBGColor.html | 37 + docs/kr2doc/contents/f_VideoOverlay_mode.html | 38 + .../f_VideoOverlay_numberOfAudioStream.html | 42 + .../f_VideoOverlay_numberOfFrame.html | 37 + .../f_VideoOverlay_onCallbackCommand.html | 53 + .../f_VideoOverlay_onFrameUpdate.html | 51 + .../contents/f_VideoOverlay_onPeriod.html | 61 + .../f_VideoOverlay_onStatusChanged.html | 54 + docs/kr2doc/contents/f_VideoOverlay_open.html | 54 + .../kr2doc/contents/f_VideoOverlay_pause.html | 48 + .../f_VideoOverlay_periodEventFrame.html | 37 + docs/kr2doc/contents/f_VideoOverlay_play.html | 48 + .../contents/f_VideoOverlay_playRate.html | 40 + .../contents/f_VideoOverlay_position.html | 42 + .../contents/f_VideoOverlay_prepare.html | 54 + .../f_VideoOverlay_resetMixingLayer.html | 49 + .../contents/f_VideoOverlay_rewind.html | 48 + .../contents/f_VideoOverlay_saturation.html | 37 + ...f_VideoOverlay_saturationDefaultValue.html | 37 + .../f_VideoOverlay_saturationRangeMax.html | 37 + .../f_VideoOverlay_saturationRangeMin.html | 37 + .../f_VideoOverlay_saturationStepSize.html | 38 + .../f_VideoOverlay_segmentLoopEndFrame.html | 40 + .../f_VideoOverlay_segmentLoopStartFrame.html | 41 + .../f_VideoOverlay_selectAudioStream.html | 58 + .../contents/f_VideoOverlay_setBounds.html | 64 + .../f_VideoOverlay_setMixingLayer.html | 58 + .../f_VideoOverlay_setPeriodEvent.html | 59 + .../contents/f_VideoOverlay_setPos.html | 57 + .../f_VideoOverlay_setSegmentLoop.html | 67 + .../contents/f_VideoOverlay_setSize.html | 56 + docs/kr2doc/contents/f_VideoOverlay_stop.html | 48 + docs/kr2doc/contents/f_VideoOverlay_top.html | 41 + .../contents/f_VideoOverlay_totalTime.html | 37 + .../contents/f_VideoOverlay_visible.html | 37 + .../kr2doc/contents/f_VideoOverlay_width.html | 42 + .../f_WaveSoundBuffer.PhaseVocoder.html | 48 + ...SoundBuffer.PhaseVocoder_PhaseVocoder.html | 50 + ...aveSoundBuffer.PhaseVocoder_interface.html | 36 + ..._WaveSoundBuffer.PhaseVocoder_overlap.html | 41 + .../f_WaveSoundBuffer.PhaseVocoder_pitch.html | 42 + .../f_WaveSoundBuffer.PhaseVocoder_time.html | 42 + ...f_WaveSoundBuffer.PhaseVocoder_window.html | 41 + docs/kr2doc/contents/f_WaveSoundBuffer.html | 69 + .../f_WaveSoundBuffer_WaveSoundBuffer.html | 53 + .../contents/f_WaveSoundBuffer_bits.html | 38 + .../contents/f_WaveSoundBuffer_channels.html | 38 + .../contents/f_WaveSoundBuffer_fade.html | 60 + .../contents/f_WaveSoundBuffer_filters.html | 46 + .../contents/f_WaveSoundBuffer_flags.html | 48 + .../f_WaveSoundBuffer_freeDirectSound.html | 52 + .../contents/f_WaveSoundBuffer_frequency.html | 39 + .../f_WaveSoundBuffer_getVisBuffer.html | 79 + .../f_WaveSoundBuffer_globalFocusMode.html | 42 + .../f_WaveSoundBuffer_globalVolume.html | 39 + .../contents/f_WaveSoundBuffer_labels.html | 43 + .../contents/f_WaveSoundBuffer_looping.html | 38 + .../f_WaveSoundBuffer_onFadeCompleted.html | 44 + .../contents/f_WaveSoundBuffer_onLabel.html | 48 + .../f_WaveSoundBuffer_onStatusChanged.html | 49 + .../contents/f_WaveSoundBuffer_open.html | 55 + .../contents/f_WaveSoundBuffer_pan.html | 38 + .../contents/f_WaveSoundBuffer_paused.html | 39 + .../contents/f_WaveSoundBuffer_play.html | 48 + .../contents/f_WaveSoundBuffer_position.html | 38 + .../f_WaveSoundBuffer_samplePosition.html | 36 + .../contents/f_WaveSoundBuffer_status.html | 40 + .../contents/f_WaveSoundBuffer_stop.html | 48 + .../contents/f_WaveSoundBuffer_stopFade.html | 49 + .../contents/f_WaveSoundBuffer_totalTime.html | 38 + .../f_WaveSoundBuffer_useVisBuffer.html | 40 + .../contents/f_WaveSoundBuffer_volume.html | 37 + .../contents/f_WaveSoundBuffer_volume2.html | 42 + docs/kr2doc/contents/f_Window.html | 108 + docs/kr2doc/contents/f_Window_HWND.html | 44 + docs/kr2doc/contents/f_Window_Window.html | 49 + docs/kr2doc/contents/f_Window_add.html | 57 + docs/kr2doc/contents/f_Window_beginMove.html | 55 + .../kr2doc/contents/f_Window_borderStyle.html | 43 + .../contents/f_Window_bringToFront.html | 49 + docs/kr2doc/contents/f_Window_caption.html | 37 + docs/kr2doc/contents/f_Window_close.html | 53 + docs/kr2doc/contents/f_Window_drawDevice.html | 42 + docs/kr2doc/contents/f_Window_focusable.html | 45 + .../contents/f_Window_focusedLayer.html | 39 + docs/kr2doc/contents/f_Window_fullScreen.html | 39 + docs/kr2doc/contents/f_Window_height.html | 41 + .../contents/f_Window_hideMouseCursor.html | 50 + docs/kr2doc/contents/f_Window_imeMode.html | 39 + .../kr2doc/contents/f_Window_innerHeight.html | 42 + .../kr2doc/contents/f_Window_innerSunken.html | 46 + docs/kr2doc/contents/f_Window_innerWidth.html | 42 + docs/kr2doc/contents/f_Window_layerLeft.html | 41 + docs/kr2doc/contents/f_Window_layerTop.html | 41 + docs/kr2doc/contents/f_Window_left.html | 42 + docs/kr2doc/contents/f_Window_mainWindow.html | 36 + docs/kr2doc/contents/f_Window_maxHeight.html | 46 + docs/kr2doc/contents/f_Window_maxWidth.html | 46 + docs/kr2doc/contents/f_Window_menu.html | 37 + docs/kr2doc/contents/f_Window_minHeight.html | 46 + docs/kr2doc/contents/f_Window_minWidth.html | 46 + .../contents/f_Window_mouseCursorState.html | 39 + docs/kr2doc/contents/f_Window_onActivate.html | 51 + docs/kr2doc/contents/f_Window_onClick.html | 56 + .../contents/f_Window_onCloseQuery.html | 51 + .../contents/f_Window_onDeactivate.html | 51 + .../contents/f_Window_onDoubleClick.html | 55 + docs/kr2doc/contents/f_Window_onFileDrop.html | 50 + docs/kr2doc/contents/f_Window_onKeyDown.html | 61 + docs/kr2doc/contents/f_Window_onKeyPress.html | 50 + docs/kr2doc/contents/f_Window_onKeyUp.html | 58 + .../kr2doc/contents/f_Window_onMouseDown.html | 68 + .../contents/f_Window_onMouseEnter.html | 48 + .../contents/f_Window_onMouseLeave.html | 48 + .../kr2doc/contents/f_Window_onMouseMove.html | 61 + docs/kr2doc/contents/f_Window_onMouseUp.html | 64 + .../contents/f_Window_onMouseWheel.html | 66 + .../kr2doc/contents/f_Window_onPopupHide.html | 50 + docs/kr2doc/contents/f_Window_onResize.html | 45 + .../contents/f_Window_postInputEvent.html | 61 + .../contents/f_Window_primaryLayer.html | 36 + .../f_Window_registerMessageReceiver.html | 79 + docs/kr2doc/contents/f_Window_remove.html | 56 + .../contents/f_Window_removeMaskRegion.html | 52 + .../contents/f_Window_setInnerSize.html | 65 + .../kr2doc/contents/f_Window_setLayerPos.html | 62 + .../contents/f_Window_setMaskRegion.html | 61 + docs/kr2doc/contents/f_Window_setMaxSize.html | 62 + docs/kr2doc/contents/f_Window_setMinSize.html | 62 + docs/kr2doc/contents/f_Window_setPos.html | 64 + docs/kr2doc/contents/f_Window_setSize.html | 67 + docs/kr2doc/contents/f_Window_setZoom.html | 63 + docs/kr2doc/contents/f_Window_showModal.html | 53 + .../contents/f_Window_showScrollBars.html | 37 + docs/kr2doc/contents/f_Window_stayOnTop.html | 38 + docs/kr2doc/contents/f_Window_top.html | 42 + docs/kr2doc/contents/f_Window_trapKey.html | 42 + docs/kr2doc/contents/f_Window_update.html | 54 + .../kr2doc/contents/f_Window_useMouseKey.html | 39 + docs/kr2doc/contents/f_Window_visible.html | 37 + docs/kr2doc/contents/f_Window_width.html | 41 + docs/kr2doc/contents/f_Window_zoomDenom.html | 44 + docs/kr2doc/contents/f_Window_zoomNumer.html | 44 + docs/kr2doc/contents/frame.html | 90 + docs/kr2doc/contents/funcref.css | 3 + docs/kr2doc/contents/funcref2.css | 17 + docs/kr2doc/contents/grad.png | Bin 0 -> 557 bytes docs/kr2doc/contents/hline.png | Bin 0 -> 123 bytes docs/kr2doc/contents/icons.png | Bin 0 -> 1589 bytes docs/kr2doc/contents/index.html | 18 + docs/kr2doc/contents/keywordgrep.js | 57 + docs/kr2doc/contents/keywords.css | 3 + docs/kr2doc/contents/keywords.html | 1292 +++++++ docs/kr2doc/contents/keywords2.css | 7 + docs/kr2doc/contents/keywords_p.html | 1292 +++++++ docs/kr2doc/contents/lt_1_step_left.png | Bin 0 -> 108 bytes docs/kr2doc/contents/lt_1_step_right.png | Bin 0 -> 112 bytes docs/kr2doc/contents/lt_20_step_left.png | Bin 0 -> 131 bytes docs/kr2doc/contents/lt_20_step_right.png | Bin 0 -> 133 bytes docs/kr2doc/contents/lt_clear_all_labels.png | Bin 0 -> 965 bytes docs/kr2doc/contents/lt_complex_loop.png | Bin 0 -> 7823 bytes docs/kr2doc/contents/lt_delete.png | Bin 0 -> 185 bytes docs/kr2doc/contents/lt_edit_flags.png | Bin 0 -> 138 bytes docs/kr2doc/contents/lt_edit_label.png | Bin 0 -> 124 bytes docs/kr2doc/contents/lt_edit_link.png | Bin 0 -> 157 bytes docs/kr2doc/contents/lt_follow.png | Bin 0 -> 110 bytes docs/kr2doc/contents/lt_ignore_links.png | Bin 0 -> 115 bytes docs/kr2doc/contents/lt_left_cross_point.png | Bin 0 -> 114 bytes docs/kr2doc/contents/lt_link_tuner.png | Bin 0 -> 11901 bytes .../contents/lt_link_tuner_wave_match.png | Bin 0 -> 5435 bytes docs/kr2doc/contents/lt_main_window.png | Bin 0 -> 30849 bytes docs/kr2doc/contents/lt_new_label.png | Bin 0 -> 121 bytes docs/kr2doc/contents/lt_new_label_on_play.png | Bin 0 -> 921 bytes docs/kr2doc/contents/lt_new_link.png | Bin 0 -> 106 bytes docs/kr2doc/contents/lt_open.png | Bin 0 -> 164 bytes docs/kr2doc/contents/lt_play.png | Bin 0 -> 123 bytes docs/kr2doc/contents/lt_play_before.png | Bin 0 -> 233 bytes docs/kr2doc/contents/lt_play_from_current.png | Bin 0 -> 235 bytes docs/kr2doc/contents/lt_play_from_first.png | Bin 0 -> 218 bytes docs/kr2doc/contents/lt_redo.png | Bin 0 -> 123 bytes docs/kr2doc/contents/lt_right_cross_point.png | Bin 0 -> 117 bytes docs/kr2doc/contents/lt_save.png | Bin 0 -> 137 bytes docs/kr2doc/contents/lt_seamless_loop.png | Bin 0 -> 13088 bytes docs/kr2doc/contents/lt_smooth.png | Bin 0 -> 127 bytes docs/kr2doc/contents/lt_stop.png | Bin 0 -> 178 bytes docs/kr2doc/contents/lt_undo.png | Bin 0 -> 118 bytes docs/kr2doc/contents/lt_zoom_in.png | Bin 0 -> 133 bytes docs/kr2doc/contents/lt_zoom_out.png | Bin 0 -> 124 bytes docs/kr2doc/contents/mosaic_trans.png | Bin 0 -> 8312 bytes docs/kr2doc/contents/postcontent.js | 1 + docs/kr2doc/contents/ripple_trans.jpg | Bin 0 -> 23790 bytes docs/kr2doc/contents/rotateswap_trans.jpg | Bin 0 -> 20334 bytes docs/kr2doc/contents/rotatevanish_trans.jpg | Bin 0 -> 26327 bytes docs/kr2doc/contents/rotatezoom_trans.jpg | Bin 0 -> 30263 bytes docs/kr2doc/contents/sigchk.png | Bin 0 -> 5040 bytes docs/kr2doc/contents/sign0.png | Bin 0 -> 13837 bytes docs/kr2doc/contents/sign1.png | Bin 0 -> 10164 bytes docs/kr2doc/contents/sign2.png | Bin 0 -> 10351 bytes docs/kr2doc/contents/td.png | Bin 0 -> 95 bytes docs/kr2doc/contents/turn_trans.jpg | Bin 0 -> 28206 bytes docs/kr2doc/contents/wave_trans.jpg | Bin 0 -> 22005 bytes docs/kr2doc/index.html | 10 + docs/tjs2doc/contents/about.html | 31 + docs/tjs2doc/contents/array.html | 349 ++ docs/tjs2doc/contents/basictypes.html | 73 + docs/tjs2doc/contents/browser.css | 3 + docs/tjs2doc/contents/browser2.css | 299 ++ docs/tjs2doc/contents/class.html | 360 ++ docs/tjs2doc/contents/date.html | 48 + docs/tjs2doc/contents/dictionary.html | 108 + docs/tjs2doc/contents/documentid.js | 2 + docs/tjs2doc/contents/exception.html | 41 + docs/tjs2doc/contents/expr_and_op.html | 254 ++ docs/tjs2doc/contents/factor.html | 97 + docs/tjs2doc/contents/for.html | 61 + docs/tjs2doc/contents/frame.html | 64 + docs/tjs2doc/contents/function.html | 251 ++ docs/tjs2doc/contents/grad.png | Bin 0 -> 557 bytes docs/tjs2doc/contents/hline.png | Bin 0 -> 123 bytes docs/tjs2doc/contents/if.html | 96 + docs/tjs2doc/contents/index.html | 18 + docs/tjs2doc/contents/interface.html | 905 +++++ docs/tjs2doc/contents/keywordgrep.js | 57 + docs/tjs2doc/contents/keywords.css | 3 + docs/tjs2doc/contents/keywords.html | 635 ++++ docs/tjs2doc/contents/keywords2.css | 7 + docs/tjs2doc/contents/keywords_p.html | 635 ++++ docs/tjs2doc/contents/math.html | 54 + docs/tjs2doc/contents/octet.html | 61 + docs/tjs2doc/contents/postcontent.js | 1 + docs/tjs2doc/contents/pp.html | 79 + docs/tjs2doc/contents/property.html | 127 + docs/tjs2doc/contents/randomgenerator.html | 101 + docs/tjs2doc/contents/regexp.html | 175 + docs/tjs2doc/contents/simple.html | 537 +++ .../tjs2doc/contents/statement_and_block.html | 97 + docs/tjs2doc/contents/string.html | 246 ++ docs/tjs2doc/contents/style.html | 104 + docs/tjs2doc/contents/switch.html | 99 + docs/tjs2doc/contents/td.png | Bin 0 -> 98 bytes docs/tjs2doc/contents/token.html | 246 ++ docs/tjs2doc/contents/try.html | 161 + docs/tjs2doc/contents/ttjs.html | 252 ++ docs/tjs2doc/contents/types.html | 59 + docs/tjs2doc/contents/variable.html | 117 + docs/tjs2doc/contents/variant.html | 88 + docs/tjs2doc/contents/vmcodes.html | 695 ++++ docs/tjs2doc/contents/while.html | 108 + docs/tjs2doc/contents/with.html | 137 + docs/tjs2doc/index.html | 10 + 804 files changed, 52818 insertions(+), 1 deletion(-) create mode 100644 docs/browser.css create mode 100644 docs/browser2.css create mode 100644 docs/grad.png create mode 100644 docs/index.html create mode 100644 docs/kag3doc/contents/AboutBox.html create mode 100644 docs/kag3doc/contents/BGM.html create mode 100644 docs/kag3doc/contents/BG_Displayed.jpg create mode 100644 docs/kag3doc/contents/ButtonGlyphImageList.png create mode 100644 docs/kag3doc/contents/ClickableMap.html create mode 100644 docs/kag3doc/contents/Debug.html create mode 100644 docs/kag3doc/contents/DispBase.html create mode 100644 docs/kag3doc/contents/DispLayer.html create mode 100644 docs/kag3doc/contents/Distribute.html create mode 100644 docs/kag3doc/contents/Diverge.html create mode 100644 docs/kag3doc/contents/Diverge.png create mode 100644 docs/kag3doc/contents/Folders.png create mode 100644 docs/kag3doc/contents/GraphicFormats.html create mode 100644 docs/kag3doc/contents/HistoryOfStore.html create mode 100644 docs/kag3doc/contents/Intro.html create mode 100644 docs/kag3doc/contents/LayerDisplayed.jpg create mode 100644 docs/kag3doc/contents/Layers.jpg create mode 100644 docs/kag3doc/contents/LayersDesc.jpg create mode 100644 docs/kag3doc/contents/Letter.html create mode 100644 docs/kag3doc/contents/Macro.html create mode 100644 docs/kag3doc/contents/Misses.html create mode 100644 docs/kag3doc/contents/MouseKeyboard.html create mode 100644 docs/kag3doc/contents/PortFromOldKAG.html create mode 100644 docs/kag3doc/contents/Prepare.html create mode 100644 docs/kag3doc/contents/RClick.html create mode 100644 docs/kag3doc/contents/ReadUnread.html create mode 100644 docs/kag3doc/contents/SaveData.html create mode 100644 docs/kag3doc/contents/SaveLoad.html create mode 100644 docs/kag3doc/contents/Sound.html create mode 100644 docs/kag3doc/contents/SubRoutine.html create mode 100644 docs/kag3doc/contents/TJSTips.html create mode 100644 docs/kag3doc/contents/Tags.html create mode 100644 docs/kag3doc/contents/Trans.html create mode 100644 docs/kag3doc/contents/UsingFrame.jpg create mode 100644 docs/kag3doc/contents/UsingVN.jpg create mode 100644 docs/kag3doc/contents/Var.html create mode 100644 docs/kag3doc/contents/Vertical.jpg create mode 100644 docs/kag3doc/contents/ayari.png create mode 100644 docs/kag3doc/contents/ayari_m.png create mode 100644 docs/kag3doc/contents/browser.css create mode 100644 docs/kag3doc/contents/browser2.css create mode 100644 docs/kag3doc/contents/clickable.png create mode 100644 docs/kag3doc/contents/documentid.js create mode 100644 docs/kag3doc/contents/folder.png create mode 100644 docs/kag3doc/contents/frame.html create mode 100644 docs/kag3doc/contents/gokigen.png create mode 100644 docs/kag3doc/contents/grad.png create mode 100644 docs/kag3doc/contents/hline.png create mode 100644 docs/kag3doc/contents/index.html create mode 100644 docs/kag3doc/contents/keywordgrep.js create mode 100644 docs/kag3doc/contents/keywords.css create mode 100644 docs/kag3doc/contents/keywords.html create mode 100644 docs/kag3doc/contents/keywords2.css create mode 100644 docs/kag3doc/contents/keywords_p.html create mode 100644 docs/kag3doc/contents/kiri_a.png create mode 100644 docs/kag3doc/contents/kiri_aa.png create mode 100644 docs/kag3doc/contents/kon-banwa.png create mode 100644 docs/kag3doc/contents/map1.png create mode 100644 docs/kag3doc/contents/map1_p.png create mode 100644 docs/kag3doc/contents/postcontent.js create mode 100644 docs/kag3doc/contents/tagdb_xml/tags.xml create mode 100644 docs/kag3doc/contents/td.png create mode 100644 docs/kag3doc/contents/trans0b.jpg create mode 100644 docs/kag3doc/contents/trans0f.jpg create mode 100644 docs/kag3doc/contents/trans2b.jpg create mode 100644 docs/kag3doc/contents/trans3f.jpg create mode 100644 docs/kag3doc/contents/univtrans_A.png create mode 100644 docs/kag3doc/contents/univtrans_B.png create mode 100644 docs/kag3doc/contents/univtrans_R.png create mode 100644 docs/kag3doc/contents/univtrans_Snostay.png create mode 100644 docs/kag3doc/contents/univtrans_Sstay.png create mode 100644 docs/kag3doc/contents/univtrans_Sstaysrc.png create mode 100644 docs/kag3doc/contents/univtrans_V1.png create mode 100644 docs/kag3doc/contents/univtrans_V64.png create mode 100644 docs/kag3doc/index.html create mode 100644 docs/kr2doc/contents/2DAffineMatrix.png create mode 100644 docs/kr2doc/contents/AutoUpdateIcon.png create mode 100644 docs/kr2doc/contents/ColorCodes.html create mode 100644 docs/kr2doc/contents/CommandLine.html create mode 100644 docs/kr2doc/contents/ComputerDependentProblems.html create mode 100644 docs/kr2doc/contents/Configure.html create mode 100644 docs/kr2doc/contents/Configure.png create mode 100644 docs/kr2doc/contents/Console.html create mode 100644 docs/kr2doc/contents/Console.png create mode 100644 docs/kr2doc/contents/ConsoleIcon.png create mode 100644 docs/kr2doc/contents/Controller.html create mode 100644 docs/kr2doc/contents/Controller.png create mode 100644 docs/kr2doc/contents/ControllerIcon.png create mode 100644 docs/kr2doc/contents/CopyIcon.png create mode 100644 docs/kr2doc/contents/Copyrights.html create mode 100644 docs/kr2doc/contents/CutIcon.png create mode 100644 docs/kr2doc/contents/Debug.html create mode 100644 docs/kr2doc/contents/DeleteIcon.png create mode 100644 docs/kr2doc/contents/EventIcon.png create mode 100644 docs/kr2doc/contents/EventSystem.html create mode 100644 docs/kr2doc/contents/ExecIcon.png create mode 100644 docs/kr2doc/contents/ExitIcon.png create mode 100644 docs/kr2doc/contents/ExprWatch.html create mode 100644 docs/kr2doc/contents/ExprWatch.png create mode 100644 docs/kr2doc/contents/ExprWatchIcon.png create mode 100644 docs/kr2doc/contents/FileChkTool.html create mode 100644 docs/kr2doc/contents/Files.html create mode 100644 docs/kr2doc/contents/FolderSelector.png create mode 100644 docs/kr2doc/contents/FontMaker.html create mode 100644 docs/kr2doc/contents/FontMaker.png create mode 100644 docs/kr2doc/contents/GraphicSystem.html create mode 100644 docs/kr2doc/contents/HotKeys.html create mode 100644 docs/kr2doc/contents/KeyCodes.html create mode 100644 docs/kr2doc/contents/LoopTuner.html create mode 100644 docs/kr2doc/contents/MouseCursors.html create mode 100644 docs/kr2doc/contents/NewExprIcon.png create mode 100644 docs/kr2doc/contents/PasteIcon.png create mode 100644 docs/kr2doc/contents/Plugins.html create mode 100644 docs/kr2doc/contents/Releaser.html create mode 100644 docs/kr2doc/contents/ReleaserExeSettings.png create mode 100644 docs/kr2doc/contents/ReleaserFiles.png create mode 100644 docs/kr2doc/contents/ReleaserOutput.png create mode 100644 docs/kr2doc/contents/ReleaserSelect.png create mode 100644 docs/kr2doc/contents/ReleaserSettings.png create mode 100644 docs/kr2doc/contents/SaveIcon.png create mode 100644 docs/kr2doc/contents/ScriptEditor.html create mode 100644 docs/kr2doc/contents/ScriptEditor.png create mode 100644 docs/kr2doc/contents/ScriptEditorIcon.png create mode 100644 docs/kr2doc/contents/SignTool.html create mode 100644 docs/kr2doc/contents/SoundSystem.html create mode 100644 docs/kr2doc/contents/Startup.html create mode 100644 docs/kr2doc/contents/StorageSystem.html create mode 100644 docs/kr2doc/contents/TJSDumpIcon.png create mode 100644 docs/kr2doc/contents/TPC.html create mode 100644 docs/kr2doc/contents/TPC.png create mode 100644 docs/kr2doc/contents/Transition.html create mode 100644 docs/kr2doc/contents/UndoIcon.png create mode 100644 docs/kr2doc/contents/UpdateIcon.png create mode 100644 docs/kr2doc/contents/about.html create mode 100644 docs/kr2doc/contents/browser.css create mode 100644 docs/kr2doc/contents/browser2.css create mode 100644 docs/kr2doc/contents/crAppStart.png create mode 100644 docs/kr2doc/contents/crArrow.png create mode 100644 docs/kr2doc/contents/crCross.png create mode 100644 docs/kr2doc/contents/crDrag.png create mode 100644 docs/kr2doc/contents/crHBeam.png create mode 100644 docs/kr2doc/contents/crHSplit.png create mode 100644 docs/kr2doc/contents/crHandPoint.png create mode 100644 docs/kr2doc/contents/crHelp.png create mode 100644 docs/kr2doc/contents/crHourGlass.png create mode 100644 docs/kr2doc/contents/crIBeam.png create mode 100644 docs/kr2doc/contents/crMultiDrag.png create mode 100644 docs/kr2doc/contents/crNo.png create mode 100644 docs/kr2doc/contents/crNoDrop.png create mode 100644 docs/kr2doc/contents/crSQLWait.png create mode 100644 docs/kr2doc/contents/crSize.png create mode 100644 docs/kr2doc/contents/crSizeNESW.png create mode 100644 docs/kr2doc/contents/crSizeNS.png create mode 100644 docs/kr2doc/contents/crSizeNWSE.png create mode 100644 docs/kr2doc/contents/crSizeWE.png create mode 100644 docs/kr2doc/contents/crUpArrow.png create mode 100644 docs/kr2doc/contents/crVSplit.png create mode 100644 docs/kr2doc/contents/documentid.js create mode 100644 docs/kr2doc/contents/f_AsyncTrigger.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_AsyncTrigger.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_cached.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_cancel.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_mode.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_onFire.html create mode 100644 docs/kr2doc/contents/f_AsyncTrigger_trigger.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_CDDASoundBuffer.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_fade.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_looping.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_onFadeCompleted.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_onStatusChanged.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_open.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_paused.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_play.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_position.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_status.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_stop.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_stopFade.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_totalTime.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_volume.html create mode 100644 docs/kr2doc/contents/f_CDDASoundBuffer_volume2.html create mode 100644 docs/kr2doc/contents/f_Clipboard.html create mode 100644 docs/kr2doc/contents/f_Clipboard_asText.html create mode 100644 docs/kr2doc/contents/f_Clipboard_hasFormat.html create mode 100644 docs/kr2doc/contents/f_Console.html create mode 100644 docs/kr2doc/contents/f_Console_visible.html create mode 100644 docs/kr2doc/contents/f_Controller.html create mode 100644 docs/kr2doc/contents/f_Controller_visible.html create mode 100644 docs/kr2doc/contents/f_Debug.html create mode 100644 docs/kr2doc/contents/f_Debug_clearLogFileOnError.html create mode 100644 docs/kr2doc/contents/f_Debug_console.html create mode 100644 docs/kr2doc/contents/f_Debug_controller.html create mode 100644 docs/kr2doc/contents/f_Debug_logAsError.html create mode 100644 docs/kr2doc/contents/f_Debug_logLocation.html create mode 100644 docs/kr2doc/contents/f_Debug_logToFileOnError.html create mode 100644 docs/kr2doc/contents/f_Debug_message.html create mode 100644 docs/kr2doc/contents/f_Debug_notice.html create mode 100644 docs/kr2doc/contents/f_Debug_startLogToFile.html create mode 100644 docs/kr2doc/contents/f_Font.html create mode 100644 docs/kr2doc/contents/f_Font_angle.html create mode 100644 docs/kr2doc/contents/f_Font_bold.html create mode 100644 docs/kr2doc/contents/f_Font_doUserSelect.html create mode 100644 docs/kr2doc/contents/f_Font_face.html create mode 100644 docs/kr2doc/contents/f_Font_getEscHeightX.html create mode 100644 docs/kr2doc/contents/f_Font_getEscHeightY.html create mode 100644 docs/kr2doc/contents/f_Font_getEscWidthX.html create mode 100644 docs/kr2doc/contents/f_Font_getEscWidthY.html create mode 100644 docs/kr2doc/contents/f_Font_getList.html create mode 100644 docs/kr2doc/contents/f_Font_getTextHeight.html create mode 100644 docs/kr2doc/contents/f_Font_getTextWidth.html create mode 100644 docs/kr2doc/contents/f_Font_height.html create mode 100644 docs/kr2doc/contents/f_Font_italic.html create mode 100644 docs/kr2doc/contents/f_Font_mapPrerenderedFont.html create mode 100644 docs/kr2doc/contents/f_Font_strikeout.html create mode 100644 docs/kr2doc/contents/f_Font_underline.html create mode 100644 docs/kr2doc/contents/f_Font_unmapPrerenderedFont.html create mode 100644 docs/kr2doc/contents/f_KAGParser.html create mode 100644 docs/kr2doc/contents/f_KAGParser_KAGParser.html create mode 100644 docs/kr2doc/contents/f_KAGParser_assign.html create mode 100644 docs/kr2doc/contents/f_KAGParser_callLabel.html create mode 100644 docs/kr2doc/contents/f_KAGParser_callStackDepth.html create mode 100644 docs/kr2doc/contents/f_KAGParser_clear.html create mode 100644 docs/kr2doc/contents/f_KAGParser_clearCallStack.html create mode 100644 docs/kr2doc/contents/f_KAGParser_curLabel.html create mode 100644 docs/kr2doc/contents/f_KAGParser_curLine.html create mode 100644 docs/kr2doc/contents/f_KAGParser_curLineStr.html create mode 100644 docs/kr2doc/contents/f_KAGParser_curPos.html create mode 100644 docs/kr2doc/contents/f_KAGParser_curStorage.html create mode 100644 docs/kr2doc/contents/f_KAGParser_debugLevel.html create mode 100644 docs/kr2doc/contents/f_KAGParser_getNextTag.html create mode 100644 docs/kr2doc/contents/f_KAGParser_goToLabel.html create mode 100644 docs/kr2doc/contents/f_KAGParser_ignoreCR.html create mode 100644 docs/kr2doc/contents/f_KAGParser_interrupt.html create mode 100644 docs/kr2doc/contents/f_KAGParser_loadScenario.html create mode 100644 docs/kr2doc/contents/f_KAGParser_macroParams.html create mode 100644 docs/kr2doc/contents/f_KAGParser_macros.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onAfterReturn.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onCall.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onJump.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onLabel.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onReturn.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onScenarioLoad.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onScenarioLoaded.html create mode 100644 docs/kr2doc/contents/f_KAGParser_onScript.html create mode 100644 docs/kr2doc/contents/f_KAGParser_processSpecialTags.html create mode 100644 docs/kr2doc/contents/f_KAGParser_resetInterrupt.html create mode 100644 docs/kr2doc/contents/f_KAGParser_restore.html create mode 100644 docs/kr2doc/contents/f_KAGParser_store.html create mode 100644 docs/kr2doc/contents/f_Layer.html create mode 100644 docs/kr2doc/contents/f_Layer_Layer.html create mode 100644 docs/kr2doc/contents/f_Layer_absolute.html create mode 100644 docs/kr2doc/contents/f_Layer_absoluteOrderMode.html create mode 100644 docs/kr2doc/contents/f_Layer_adjustGamma.html create mode 100644 docs/kr2doc/contents/f_Layer_affineBlend.html create mode 100644 docs/kr2doc/contents/f_Layer_affineCopy.html create mode 100644 docs/kr2doc/contents/f_Layer_affinePile.html create mode 100644 docs/kr2doc/contents/f_Layer_assignImages.html create mode 100644 docs/kr2doc/contents/f_Layer_attentionLeft.html create mode 100644 docs/kr2doc/contents/f_Layer_attentionTop.html create mode 100644 docs/kr2doc/contents/f_Layer_beginTransition.html create mode 100644 docs/kr2doc/contents/f_Layer_blendRect.html create mode 100644 docs/kr2doc/contents/f_Layer_bringToBack.html create mode 100644 docs/kr2doc/contents/f_Layer_bringToFront.html create mode 100644 docs/kr2doc/contents/f_Layer_cached.html create mode 100644 docs/kr2doc/contents/f_Layer_callOnPaint.html create mode 100644 docs/kr2doc/contents/f_Layer_children.html create mode 100644 docs/kr2doc/contents/f_Layer_clipHeight.html create mode 100644 docs/kr2doc/contents/f_Layer_clipLeft.html create mode 100644 docs/kr2doc/contents/f_Layer_clipTop.html create mode 100644 docs/kr2doc/contents/f_Layer_clipWidth.html create mode 100644 docs/kr2doc/contents/f_Layer_colorRect.html create mode 100644 docs/kr2doc/contents/f_Layer_convertType.html create mode 100644 docs/kr2doc/contents/f_Layer_copyRect.html create mode 100644 docs/kr2doc/contents/f_Layer_cursor.html create mode 100644 docs/kr2doc/contents/f_Layer_cursorX.html create mode 100644 docs/kr2doc/contents/f_Layer_cursorY.html create mode 100644 docs/kr2doc/contents/f_Layer_doBoxBlur.html create mode 100644 docs/kr2doc/contents/f_Layer_doGrayScale.html create mode 100644 docs/kr2doc/contents/f_Layer_drawText.html create mode 100644 docs/kr2doc/contents/f_Layer_enabled.html create mode 100644 docs/kr2doc/contents/f_Layer_face.html create mode 100644 docs/kr2doc/contents/f_Layer_fillRect.html create mode 100644 docs/kr2doc/contents/f_Layer_flipLR.html create mode 100644 docs/kr2doc/contents/f_Layer_flipUD.html create mode 100644 docs/kr2doc/contents/f_Layer_focus.html create mode 100644 docs/kr2doc/contents/f_Layer_focusNext.html create mode 100644 docs/kr2doc/contents/f_Layer_focusPrev.html create mode 100644 docs/kr2doc/contents/f_Layer_focusable.html create mode 100644 docs/kr2doc/contents/f_Layer_focused.html create mode 100644 docs/kr2doc/contents/f_Layer_font.html create mode 100644 docs/kr2doc/contents/f_Layer_getLayerAt.html create mode 100644 docs/kr2doc/contents/f_Layer_getMainPixel.html create mode 100644 docs/kr2doc/contents/f_Layer_getMaskPixel.html create mode 100644 docs/kr2doc/contents/f_Layer_getProvincePixel.html create mode 100644 docs/kr2doc/contents/f_Layer_hasImage.html create mode 100644 docs/kr2doc/contents/f_Layer_height.html create mode 100644 docs/kr2doc/contents/f_Layer_hint.html create mode 100644 docs/kr2doc/contents/f_Layer_hitThreshold.html create mode 100644 docs/kr2doc/contents/f_Layer_hitType.html create mode 100644 docs/kr2doc/contents/f_Layer_holdAlpha.html create mode 100644 docs/kr2doc/contents/f_Layer_imageHeight.html create mode 100644 docs/kr2doc/contents/f_Layer_imageLeft.html create mode 100644 docs/kr2doc/contents/f_Layer_imageModified.html create mode 100644 docs/kr2doc/contents/f_Layer_imageTop.html create mode 100644 docs/kr2doc/contents/f_Layer_imageWidth.html create mode 100644 docs/kr2doc/contents/f_Layer_imeMode.html create mode 100644 docs/kr2doc/contents/f_Layer_independMainImage.html create mode 100644 docs/kr2doc/contents/f_Layer_independProvinceImage.html create mode 100644 docs/kr2doc/contents/f_Layer_isPrimary.html create mode 100644 docs/kr2doc/contents/f_Layer_joinFocusChain.html create mode 100644 docs/kr2doc/contents/f_Layer_left.html create mode 100644 docs/kr2doc/contents/f_Layer_loadImages.html create mode 100644 docs/kr2doc/contents/f_Layer_loadProvinceImage.html create mode 100644 docs/kr2doc/contents/f_Layer_mainImageBuffer.html create mode 100644 docs/kr2doc/contents/f_Layer_mainImageBufferForWrite.html create mode 100644 docs/kr2doc/contents/f_Layer_mainImageBufferPitch.html create mode 100644 docs/kr2doc/contents/f_Layer_moveBefore.html create mode 100644 docs/kr2doc/contents/f_Layer_moveBehind.html create mode 100644 docs/kr2doc/contents/f_Layer_name.html create mode 100644 docs/kr2doc/contents/f_Layer_neutralColor.html create mode 100644 docs/kr2doc/contents/f_Layer_nextFocusable.html create mode 100644 docs/kr2doc/contents/f_Layer_nodeEnabled.html create mode 100644 docs/kr2doc/contents/f_Layer_nodeVisible.html create mode 100644 docs/kr2doc/contents/f_Layer_onBeforeFocus.html create mode 100644 docs/kr2doc/contents/f_Layer_onBlur.html create mode 100644 docs/kr2doc/contents/f_Layer_onClick.html create mode 100644 docs/kr2doc/contents/f_Layer_onDoubleClick.html create mode 100644 docs/kr2doc/contents/f_Layer_onFocus.html create mode 100644 docs/kr2doc/contents/f_Layer_onHitTest.html create mode 100644 docs/kr2doc/contents/f_Layer_onKeyDown.html create mode 100644 docs/kr2doc/contents/f_Layer_onKeyPress.html create mode 100644 docs/kr2doc/contents/f_Layer_onKeyUp.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseDown.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseEnter.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseLeave.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseMove.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseUp.html create mode 100644 docs/kr2doc/contents/f_Layer_onMouseWheel.html create mode 100644 docs/kr2doc/contents/f_Layer_onNodeDisabled.html create mode 100644 docs/kr2doc/contents/f_Layer_onNodeEnabled.html create mode 100644 docs/kr2doc/contents/f_Layer_onPaint.html create mode 100644 docs/kr2doc/contents/f_Layer_onSearchNextFocusable.html create mode 100644 docs/kr2doc/contents/f_Layer_onSearchPrevFocusable.html create mode 100644 docs/kr2doc/contents/f_Layer_onTransitionCompleted.html create mode 100644 docs/kr2doc/contents/f_Layer_opacity.html create mode 100644 docs/kr2doc/contents/f_Layer_operateAffine.html create mode 100644 docs/kr2doc/contents/f_Layer_operateRect.html create mode 100644 docs/kr2doc/contents/f_Layer_operateStretch.html create mode 100644 docs/kr2doc/contents/f_Layer_order.html create mode 100644 docs/kr2doc/contents/f_Layer_parent.html create mode 100644 docs/kr2doc/contents/f_Layer_pileRect.html create mode 100644 docs/kr2doc/contents/f_Layer_piledCopy.html create mode 100644 docs/kr2doc/contents/f_Layer_prevFocusable.html create mode 100644 docs/kr2doc/contents/f_Layer_provinceImageBuffer.html create mode 100644 docs/kr2doc/contents/f_Layer_provinceImageBufferForWrite.html create mode 100644 docs/kr2doc/contents/f_Layer_provinceImageBufferPitch.html create mode 100644 docs/kr2doc/contents/f_Layer_releaseCapture.html create mode 100644 docs/kr2doc/contents/f_Layer_removeMode.html create mode 100644 docs/kr2doc/contents/f_Layer_saveLayerImage.html create mode 100644 docs/kr2doc/contents/f_Layer_setAttentionPos.html create mode 100644 docs/kr2doc/contents/f_Layer_setClip.html create mode 100644 docs/kr2doc/contents/f_Layer_setCursorPos.html create mode 100644 docs/kr2doc/contents/f_Layer_setImagePos.html create mode 100644 docs/kr2doc/contents/f_Layer_setImageSize.html create mode 100644 docs/kr2doc/contents/f_Layer_setMainPixel.html create mode 100644 docs/kr2doc/contents/f_Layer_setMaskPixel.html create mode 100644 docs/kr2doc/contents/f_Layer_setMode.html create mode 100644 docs/kr2doc/contents/f_Layer_setPos.html create mode 100644 docs/kr2doc/contents/f_Layer_setProvincePixel.html create mode 100644 docs/kr2doc/contents/f_Layer_setSize.html create mode 100644 docs/kr2doc/contents/f_Layer_setSizeToImageSize.html create mode 100644 docs/kr2doc/contents/f_Layer_showParentHint.html create mode 100644 docs/kr2doc/contents/f_Layer_stopTransition.html create mode 100644 docs/kr2doc/contents/f_Layer_stretchBlend.html create mode 100644 docs/kr2doc/contents/f_Layer_stretchCopy.html create mode 100644 docs/kr2doc/contents/f_Layer_stretchPile.html create mode 100644 docs/kr2doc/contents/f_Layer_top.html create mode 100644 docs/kr2doc/contents/f_Layer_type.html create mode 100644 docs/kr2doc/contents/f_Layer_update.html create mode 100644 docs/kr2doc/contents/f_Layer_useAttention.html create mode 100644 docs/kr2doc/contents/f_Layer_visible.html create mode 100644 docs/kr2doc/contents/f_Layer_width.html create mode 100644 docs/kr2doc/contents/f_Layer_window.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_MIDISoundBuffer.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_fade.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_looping.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_midiOut.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_onFadeCompleted.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_onStatusChanged.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_open.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_paused.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_play.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_position.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_status.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_stop.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_stopFade.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_totalTime.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_volume.html create mode 100644 docs/kr2doc/contents/f_MIDISoundBuffer_volume2.html create mode 100644 docs/kr2doc/contents/f_MenuItem.html create mode 100644 docs/kr2doc/contents/f_MenuItem_HMENU.html create mode 100644 docs/kr2doc/contents/f_MenuItem_MenuItem.html create mode 100644 docs/kr2doc/contents/f_MenuItem_add.html create mode 100644 docs/kr2doc/contents/f_MenuItem_caption.html create mode 100644 docs/kr2doc/contents/f_MenuItem_checked.html create mode 100644 docs/kr2doc/contents/f_MenuItem_children.html create mode 100644 docs/kr2doc/contents/f_MenuItem_enabled.html create mode 100644 docs/kr2doc/contents/f_MenuItem_group.html create mode 100644 docs/kr2doc/contents/f_MenuItem_index.html create mode 100644 docs/kr2doc/contents/f_MenuItem_insert.html create mode 100644 docs/kr2doc/contents/f_MenuItem_onClick.html create mode 100644 docs/kr2doc/contents/f_MenuItem_parent.html create mode 100644 docs/kr2doc/contents/f_MenuItem_popup.html create mode 100644 docs/kr2doc/contents/f_MenuItem_radio.html create mode 100644 docs/kr2doc/contents/f_MenuItem_remove.html create mode 100644 docs/kr2doc/contents/f_MenuItem_root.html create mode 100644 docs/kr2doc/contents/f_MenuItem_shortcut.html create mode 100644 docs/kr2doc/contents/f_MenuItem_visible.html create mode 100644 docs/kr2doc/contents/f_MenuItem_window.html create mode 100644 docs/kr2doc/contents/f_Pad.html create mode 100644 docs/kr2doc/contents/f_Pad_Pad.html create mode 100644 docs/kr2doc/contents/f_Pad_borderStyle.html create mode 100644 docs/kr2doc/contents/f_Pad_color.html create mode 100644 docs/kr2doc/contents/f_Pad_fileName.html create mode 100644 docs/kr2doc/contents/f_Pad_fontBold.html create mode 100644 docs/kr2doc/contents/f_Pad_fontColor.html create mode 100644 docs/kr2doc/contents/f_Pad_fontFace.html create mode 100644 docs/kr2doc/contents/f_Pad_fontHeight.html create mode 100644 docs/kr2doc/contents/f_Pad_fontItalic.html create mode 100644 docs/kr2doc/contents/f_Pad_fontSize.html create mode 100644 docs/kr2doc/contents/f_Pad_fontStrikeOut.html create mode 100644 docs/kr2doc/contents/f_Pad_fontUnderline.html create mode 100644 docs/kr2doc/contents/f_Pad_height.html create mode 100644 docs/kr2doc/contents/f_Pad_left.html create mode 100644 docs/kr2doc/contents/f_Pad_readOnly.html create mode 100644 docs/kr2doc/contents/f_Pad_showScrollBars.html create mode 100644 docs/kr2doc/contents/f_Pad_showStatusBar.html create mode 100644 docs/kr2doc/contents/f_Pad_statusText.html create mode 100644 docs/kr2doc/contents/f_Pad_text.html create mode 100644 docs/kr2doc/contents/f_Pad_title.html create mode 100644 docs/kr2doc/contents/f_Pad_top.html create mode 100644 docs/kr2doc/contents/f_Pad_visible.html create mode 100644 docs/kr2doc/contents/f_Pad_width.html create mode 100644 docs/kr2doc/contents/f_Pad_wordWrap.html create mode 100644 docs/kr2doc/contents/f_Plugins.html create mode 100644 docs/kr2doc/contents/f_Plugins_getList.html create mode 100644 docs/kr2doc/contents/f_Plugins_link.html create mode 100644 docs/kr2doc/contents/f_Plugins_unlink.html create mode 100644 docs/kr2doc/contents/f_Scripts.html create mode 100644 docs/kr2doc/contents/f_Scripts_dump.html create mode 100644 docs/kr2doc/contents/f_Scripts_eval.html create mode 100644 docs/kr2doc/contents/f_Scripts_evalStorage.html create mode 100644 docs/kr2doc/contents/f_Scripts_exec.html create mode 100644 docs/kr2doc/contents/f_Scripts_execStorage.html create mode 100644 docs/kr2doc/contents/f_Scripts_getTraceString.html create mode 100644 docs/kr2doc/contents/f_Storages.html create mode 100644 docs/kr2doc/contents/f_Storages_addAutoPath.html create mode 100644 docs/kr2doc/contents/f_Storages_chopStorageExt.html create mode 100644 docs/kr2doc/contents/f_Storages_extractStorageExt.html create mode 100644 docs/kr2doc/contents/f_Storages_extractStorageName.html create mode 100644 docs/kr2doc/contents/f_Storages_extractStoragePath.html create mode 100644 docs/kr2doc/contents/f_Storages_getFullPath.html create mode 100644 docs/kr2doc/contents/f_Storages_getLocalName.html create mode 100644 docs/kr2doc/contents/f_Storages_getPlacedPath.html create mode 100644 docs/kr2doc/contents/f_Storages_isExistentStorage.html create mode 100644 docs/kr2doc/contents/f_Storages_removeAutoPath.html create mode 100644 docs/kr2doc/contents/f_Storages_searchCD.html create mode 100644 docs/kr2doc/contents/f_Storages_selectFile.html create mode 100644 docs/kr2doc/contents/f_System.html create mode 100644 docs/kr2doc/contents/f_System_addContinuousHandler.html create mode 100644 docs/kr2doc/contents/f_System_appDataPath.html create mode 100644 docs/kr2doc/contents/f_System_assignMessage.html create mode 100644 docs/kr2doc/contents/f_System_createAppLock.html create mode 100644 docs/kr2doc/contents/f_System_createUUID.html create mode 100644 docs/kr2doc/contents/f_System_dataPath.html create mode 100644 docs/kr2doc/contents/f_System_desktopHeight.html create mode 100644 docs/kr2doc/contents/f_System_desktopLeft.html create mode 100644 docs/kr2doc/contents/f_System_desktopTop.html create mode 100644 docs/kr2doc/contents/f_System_desktopWidth.html create mode 100644 docs/kr2doc/contents/f_System_doCompact.html create mode 100644 docs/kr2doc/contents/f_System_drawThreadNum.html create mode 100644 docs/kr2doc/contents/f_System_eventDisabled.html create mode 100644 docs/kr2doc/contents/f_System_exceptionHandler.html create mode 100644 docs/kr2doc/contents/f_System_exeName.html create mode 100644 docs/kr2doc/contents/f_System_exePath.html create mode 100644 docs/kr2doc/contents/f_System_exit.html create mode 100644 docs/kr2doc/contents/f_System_exitOnWindowClose.html create mode 100644 docs/kr2doc/contents/f_System_getArgument.html create mode 100644 docs/kr2doc/contents/f_System_getKeyState.html create mode 100644 docs/kr2doc/contents/f_System_getTickCount.html create mode 100644 docs/kr2doc/contents/f_System_graphicCacheLimit.html create mode 100644 docs/kr2doc/contents/f_System_inform.html create mode 100644 docs/kr2doc/contents/f_System_inputString.html create mode 100644 docs/kr2doc/contents/f_System_onActivate.html create mode 100644 docs/kr2doc/contents/f_System_onDeactivate.html create mode 100644 docs/kr2doc/contents/f_System_osName.html create mode 100644 docs/kr2doc/contents/f_System_personalPath.html create mode 100644 docs/kr2doc/contents/f_System_platformName.html create mode 100644 docs/kr2doc/contents/f_System_readRegValue.html create mode 100644 docs/kr2doc/contents/f_System_removeContinuousHandler.html create mode 100644 docs/kr2doc/contents/f_System_screenHeight.html create mode 100644 docs/kr2doc/contents/f_System_screenWidth.html create mode 100644 docs/kr2doc/contents/f_System_setArgument.html create mode 100644 docs/kr2doc/contents/f_System_shellExecute.html create mode 100644 docs/kr2doc/contents/f_System_terminate.html create mode 100644 docs/kr2doc/contents/f_System_title.html create mode 100644 docs/kr2doc/contents/f_System_toActualColor.html create mode 100644 docs/kr2doc/contents/f_System_touchImages.html create mode 100644 docs/kr2doc/contents/f_System_versionInformation.html create mode 100644 docs/kr2doc/contents/f_System_versionString.html create mode 100644 docs/kr2doc/contents/f_Timer.html create mode 100644 docs/kr2doc/contents/f_Timer_Timer.html create mode 100644 docs/kr2doc/contents/f_Timer_capacity.html create mode 100644 docs/kr2doc/contents/f_Timer_enabled.html create mode 100644 docs/kr2doc/contents/f_Timer_interval.html create mode 100644 docs/kr2doc/contents/f_Timer_mode.html create mode 100644 docs/kr2doc/contents/f_Timer_onTimer.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_VideoOverlay.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_audioBalance.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_audioVolume.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_brightness.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_brightnessDefaultValue.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMax.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMin.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_brightnessStepSize.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_cancelPeriodEvent.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_cancelSegmentLoop.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_close.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_contrast.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_contrastDefaultValue.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_contrastRangeMax.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_contrastRangeMin.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_contrastStepSize.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_enabledAudioStream.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_fps.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_frame.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_height.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_hue.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_hueDefaultValue.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_hueRangeMax.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_hueRangeMin.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_hueStepSize.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_layer1.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_layer2.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_left.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_loop.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_mixingMovieAlpha.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_mixingMovieBGColor.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_mode.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_numberOfAudioStream.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_numberOfFrame.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_onCallbackCommand.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_onFrameUpdate.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_onPeriod.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_onStatusChanged.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_open.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_pause.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_periodEventFrame.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_play.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_playRate.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_position.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_prepare.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_resetMixingLayer.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_rewind.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_saturation.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_saturationDefaultValue.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_saturationRangeMax.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_saturationRangeMin.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_saturationStepSize.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_segmentLoopEndFrame.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_segmentLoopStartFrame.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_selectAudioStream.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setBounds.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setMixingLayer.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setPeriodEvent.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setPos.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setSegmentLoop.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_setSize.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_stop.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_top.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_totalTime.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_visible.html create mode 100644 docs/kr2doc/contents/f_VideoOverlay_width.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_PhaseVocoder.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_interface.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_overlap.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_pitch.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_time.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_window.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_WaveSoundBuffer.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_bits.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_channels.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_fade.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_filters.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_flags.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_freeDirectSound.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_frequency.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_getVisBuffer.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_globalFocusMode.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_globalVolume.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_labels.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_looping.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_onFadeCompleted.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_onLabel.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_onStatusChanged.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_open.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_pan.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_paused.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_play.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_position.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_samplePosition.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_status.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_stop.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_stopFade.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_totalTime.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_useVisBuffer.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_volume.html create mode 100644 docs/kr2doc/contents/f_WaveSoundBuffer_volume2.html create mode 100644 docs/kr2doc/contents/f_Window.html create mode 100644 docs/kr2doc/contents/f_Window_HWND.html create mode 100644 docs/kr2doc/contents/f_Window_Window.html create mode 100644 docs/kr2doc/contents/f_Window_add.html create mode 100644 docs/kr2doc/contents/f_Window_beginMove.html create mode 100644 docs/kr2doc/contents/f_Window_borderStyle.html create mode 100644 docs/kr2doc/contents/f_Window_bringToFront.html create mode 100644 docs/kr2doc/contents/f_Window_caption.html create mode 100644 docs/kr2doc/contents/f_Window_close.html create mode 100644 docs/kr2doc/contents/f_Window_drawDevice.html create mode 100644 docs/kr2doc/contents/f_Window_focusable.html create mode 100644 docs/kr2doc/contents/f_Window_focusedLayer.html create mode 100644 docs/kr2doc/contents/f_Window_fullScreen.html create mode 100644 docs/kr2doc/contents/f_Window_height.html create mode 100644 docs/kr2doc/contents/f_Window_hideMouseCursor.html create mode 100644 docs/kr2doc/contents/f_Window_imeMode.html create mode 100644 docs/kr2doc/contents/f_Window_innerHeight.html create mode 100644 docs/kr2doc/contents/f_Window_innerSunken.html create mode 100644 docs/kr2doc/contents/f_Window_innerWidth.html create mode 100644 docs/kr2doc/contents/f_Window_layerLeft.html create mode 100644 docs/kr2doc/contents/f_Window_layerTop.html create mode 100644 docs/kr2doc/contents/f_Window_left.html create mode 100644 docs/kr2doc/contents/f_Window_mainWindow.html create mode 100644 docs/kr2doc/contents/f_Window_maxHeight.html create mode 100644 docs/kr2doc/contents/f_Window_maxWidth.html create mode 100644 docs/kr2doc/contents/f_Window_menu.html create mode 100644 docs/kr2doc/contents/f_Window_minHeight.html create mode 100644 docs/kr2doc/contents/f_Window_minWidth.html create mode 100644 docs/kr2doc/contents/f_Window_mouseCursorState.html create mode 100644 docs/kr2doc/contents/f_Window_onActivate.html create mode 100644 docs/kr2doc/contents/f_Window_onClick.html create mode 100644 docs/kr2doc/contents/f_Window_onCloseQuery.html create mode 100644 docs/kr2doc/contents/f_Window_onDeactivate.html create mode 100644 docs/kr2doc/contents/f_Window_onDoubleClick.html create mode 100644 docs/kr2doc/contents/f_Window_onFileDrop.html create mode 100644 docs/kr2doc/contents/f_Window_onKeyDown.html create mode 100644 docs/kr2doc/contents/f_Window_onKeyPress.html create mode 100644 docs/kr2doc/contents/f_Window_onKeyUp.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseDown.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseEnter.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseLeave.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseMove.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseUp.html create mode 100644 docs/kr2doc/contents/f_Window_onMouseWheel.html create mode 100644 docs/kr2doc/contents/f_Window_onPopupHide.html create mode 100644 docs/kr2doc/contents/f_Window_onResize.html create mode 100644 docs/kr2doc/contents/f_Window_postInputEvent.html create mode 100644 docs/kr2doc/contents/f_Window_primaryLayer.html create mode 100644 docs/kr2doc/contents/f_Window_registerMessageReceiver.html create mode 100644 docs/kr2doc/contents/f_Window_remove.html create mode 100644 docs/kr2doc/contents/f_Window_removeMaskRegion.html create mode 100644 docs/kr2doc/contents/f_Window_setInnerSize.html create mode 100644 docs/kr2doc/contents/f_Window_setLayerPos.html create mode 100644 docs/kr2doc/contents/f_Window_setMaskRegion.html create mode 100644 docs/kr2doc/contents/f_Window_setMaxSize.html create mode 100644 docs/kr2doc/contents/f_Window_setMinSize.html create mode 100644 docs/kr2doc/contents/f_Window_setPos.html create mode 100644 docs/kr2doc/contents/f_Window_setSize.html create mode 100644 docs/kr2doc/contents/f_Window_setZoom.html create mode 100644 docs/kr2doc/contents/f_Window_showModal.html create mode 100644 docs/kr2doc/contents/f_Window_showScrollBars.html create mode 100644 docs/kr2doc/contents/f_Window_stayOnTop.html create mode 100644 docs/kr2doc/contents/f_Window_top.html create mode 100644 docs/kr2doc/contents/f_Window_trapKey.html create mode 100644 docs/kr2doc/contents/f_Window_update.html create mode 100644 docs/kr2doc/contents/f_Window_useMouseKey.html create mode 100644 docs/kr2doc/contents/f_Window_visible.html create mode 100644 docs/kr2doc/contents/f_Window_width.html create mode 100644 docs/kr2doc/contents/f_Window_zoomDenom.html create mode 100644 docs/kr2doc/contents/f_Window_zoomNumer.html create mode 100644 docs/kr2doc/contents/frame.html create mode 100644 docs/kr2doc/contents/funcref.css create mode 100644 docs/kr2doc/contents/funcref2.css create mode 100644 docs/kr2doc/contents/grad.png create mode 100644 docs/kr2doc/contents/hline.png create mode 100644 docs/kr2doc/contents/icons.png create mode 100644 docs/kr2doc/contents/index.html create mode 100644 docs/kr2doc/contents/keywordgrep.js create mode 100644 docs/kr2doc/contents/keywords.css create mode 100644 docs/kr2doc/contents/keywords.html create mode 100644 docs/kr2doc/contents/keywords2.css create mode 100644 docs/kr2doc/contents/keywords_p.html create mode 100644 docs/kr2doc/contents/lt_1_step_left.png create mode 100644 docs/kr2doc/contents/lt_1_step_right.png create mode 100644 docs/kr2doc/contents/lt_20_step_left.png create mode 100644 docs/kr2doc/contents/lt_20_step_right.png create mode 100644 docs/kr2doc/contents/lt_clear_all_labels.png create mode 100644 docs/kr2doc/contents/lt_complex_loop.png create mode 100644 docs/kr2doc/contents/lt_delete.png create mode 100644 docs/kr2doc/contents/lt_edit_flags.png create mode 100644 docs/kr2doc/contents/lt_edit_label.png create mode 100644 docs/kr2doc/contents/lt_edit_link.png create mode 100644 docs/kr2doc/contents/lt_follow.png create mode 100644 docs/kr2doc/contents/lt_ignore_links.png create mode 100644 docs/kr2doc/contents/lt_left_cross_point.png create mode 100644 docs/kr2doc/contents/lt_link_tuner.png create mode 100644 docs/kr2doc/contents/lt_link_tuner_wave_match.png create mode 100644 docs/kr2doc/contents/lt_main_window.png create mode 100644 docs/kr2doc/contents/lt_new_label.png create mode 100644 docs/kr2doc/contents/lt_new_label_on_play.png create mode 100644 docs/kr2doc/contents/lt_new_link.png create mode 100644 docs/kr2doc/contents/lt_open.png create mode 100644 docs/kr2doc/contents/lt_play.png create mode 100644 docs/kr2doc/contents/lt_play_before.png create mode 100644 docs/kr2doc/contents/lt_play_from_current.png create mode 100644 docs/kr2doc/contents/lt_play_from_first.png create mode 100644 docs/kr2doc/contents/lt_redo.png create mode 100644 docs/kr2doc/contents/lt_right_cross_point.png create mode 100644 docs/kr2doc/contents/lt_save.png create mode 100644 docs/kr2doc/contents/lt_seamless_loop.png create mode 100644 docs/kr2doc/contents/lt_smooth.png create mode 100644 docs/kr2doc/contents/lt_stop.png create mode 100644 docs/kr2doc/contents/lt_undo.png create mode 100644 docs/kr2doc/contents/lt_zoom_in.png create mode 100644 docs/kr2doc/contents/lt_zoom_out.png create mode 100644 docs/kr2doc/contents/mosaic_trans.png create mode 100644 docs/kr2doc/contents/postcontent.js create mode 100644 docs/kr2doc/contents/ripple_trans.jpg create mode 100644 docs/kr2doc/contents/rotateswap_trans.jpg create mode 100644 docs/kr2doc/contents/rotatevanish_trans.jpg create mode 100644 docs/kr2doc/contents/rotatezoom_trans.jpg create mode 100644 docs/kr2doc/contents/sigchk.png create mode 100644 docs/kr2doc/contents/sign0.png create mode 100644 docs/kr2doc/contents/sign1.png create mode 100644 docs/kr2doc/contents/sign2.png create mode 100644 docs/kr2doc/contents/td.png create mode 100644 docs/kr2doc/contents/turn_trans.jpg create mode 100644 docs/kr2doc/contents/wave_trans.jpg create mode 100644 docs/kr2doc/index.html create mode 100644 docs/tjs2doc/contents/about.html create mode 100644 docs/tjs2doc/contents/array.html create mode 100644 docs/tjs2doc/contents/basictypes.html create mode 100644 docs/tjs2doc/contents/browser.css create mode 100644 docs/tjs2doc/contents/browser2.css create mode 100644 docs/tjs2doc/contents/class.html create mode 100644 docs/tjs2doc/contents/date.html create mode 100644 docs/tjs2doc/contents/dictionary.html create mode 100644 docs/tjs2doc/contents/documentid.js create mode 100644 docs/tjs2doc/contents/exception.html create mode 100644 docs/tjs2doc/contents/expr_and_op.html create mode 100644 docs/tjs2doc/contents/factor.html create mode 100644 docs/tjs2doc/contents/for.html create mode 100644 docs/tjs2doc/contents/frame.html create mode 100644 docs/tjs2doc/contents/function.html create mode 100644 docs/tjs2doc/contents/grad.png create mode 100644 docs/tjs2doc/contents/hline.png create mode 100644 docs/tjs2doc/contents/if.html create mode 100644 docs/tjs2doc/contents/index.html create mode 100644 docs/tjs2doc/contents/interface.html create mode 100644 docs/tjs2doc/contents/keywordgrep.js create mode 100644 docs/tjs2doc/contents/keywords.css create mode 100644 docs/tjs2doc/contents/keywords.html create mode 100644 docs/tjs2doc/contents/keywords2.css create mode 100644 docs/tjs2doc/contents/keywords_p.html create mode 100644 docs/tjs2doc/contents/math.html create mode 100644 docs/tjs2doc/contents/octet.html create mode 100644 docs/tjs2doc/contents/postcontent.js create mode 100644 docs/tjs2doc/contents/pp.html create mode 100644 docs/tjs2doc/contents/property.html create mode 100644 docs/tjs2doc/contents/randomgenerator.html create mode 100644 docs/tjs2doc/contents/regexp.html create mode 100644 docs/tjs2doc/contents/simple.html create mode 100644 docs/tjs2doc/contents/statement_and_block.html create mode 100644 docs/tjs2doc/contents/string.html create mode 100644 docs/tjs2doc/contents/style.html create mode 100644 docs/tjs2doc/contents/switch.html create mode 100644 docs/tjs2doc/contents/td.png create mode 100644 docs/tjs2doc/contents/token.html create mode 100644 docs/tjs2doc/contents/try.html create mode 100644 docs/tjs2doc/contents/ttjs.html create mode 100644 docs/tjs2doc/contents/types.html create mode 100644 docs/tjs2doc/contents/variable.html create mode 100644 docs/tjs2doc/contents/variant.html create mode 100644 docs/tjs2doc/contents/vmcodes.html create mode 100644 docs/tjs2doc/contents/while.html create mode 100644 docs/tjs2doc/contents/with.html create mode 100644 docs/tjs2doc/index.html diff --git a/README.md b/README.md index ca55f70..6b8ddf9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# krkr2doc +# 蜷蛾悟翠驥2 繝峨く繝・繝。繝ウ繝 蜷蛾悟翠驥2繝峨く繝・繝。繝ウ繝医Α繝ゥ繝シ diff --git a/docs/browser.css b/docs/browser.css new file mode 100644 index 0000000..e31c12e --- /dev/null +++ b/docs/browser.css @@ -0,0 +1,2 @@ +@charset "shift_jis"; +@import url("browser2.css"); diff --git a/docs/browser2.css b/docs/browser2.css new file mode 100644 index 0000000..b24b709 --- /dev/null +++ b/docs/browser2.css @@ -0,0 +1,299 @@ +@charset "shift_jis"; + +body{ + padding: 0px; + background-color: white; + background-attachment: fixed; + color: black; + line-height: 127%; +} + +h1:before{ + content: "◆ "; +} + +h1{ + background-color: #001591; + color: white; + background-image: url("./grad.png"); + background-position: left; + background-repeat: repeat-y; + margin: 0em 0em 1em 0em; + padding: 0.1em; + border-top: 1px solid #70a0e0; + border-left: 1px solid #70a0e0; + border-bottom: 1px solid #002040; + border-right: 1px solid #002040; + font-size: 1.04em; + letter-spacing: 0.05em; +} + + +img{ + border: 0; + vertical-align: middle; +} + +div.para { + margin: 0px; + border: 0px; + padding: 0em 0em 4em 0em; +} + +dt { + display: list-item; + list-style: disc; +} + +dl dt{ + margin-left: 2em; + margin-top: 1em; + font-weight: bold; +} + +dl dd{ + margin-left: 3em; +} + +dl{ + margin-bottom: 1em; +} + +div.taggenre{ + text-align: right; +} + +span.b{ + font-weight: bold; +} + +span.i{ + font-style: italic; +} + +span.comlink{ + font-size: 0.85em; +} + +code.inlinecode{ + padding-left: 0.5em; + padding-right: 0.5em; + font-family: monospace; + white-space: pre; +} + +code em { + font-style: normal; + font-weight: bold; +} + +div.descimg{ + background-color: transparent; + color: #303030; + text-align: center; +} + +span.weak{ + background-color: transparent; + color: gray; +} + +span.comment{ + background-color: transparent; + color: #0000a0; +} + +span.linenumber{ + background-color: transparent; + color: gray; +} + +span.arg{ + background-color: transparent; + color:blue; +} + +span.defarg{ + background-color: transparent; + color:gray; +} + +span.defargval{ + background-color: transparent; + color:red; +} + + +span.tagrequiredattrib{ + background-color: transparent; + color:red; +} + + +code.bq{ + display: block; + overflow: auto; + padding: 0.3em; + border: 2px solid #808080; + margin-top: 0em; + margin-bottom: 0em; + font-family: monospace; + white-space: nowrap; +} + +dfn{ + font-style: normal; +} + +div a.jump{ + background-color: transparent; + color: #2d903c; + text-decoration: underline; + border: 0px; + padding: 1px 2px 1px 2px; +} + +div a.jump:visited{ + background-color: transparent; + color: #2d608c; +} + +div a.jump:hover{ + background : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + + + +table.keywords a{ + background-color: transparent; + color: #2d903c; + text-decoration: none; + border: 0px; + padding: 1px 2px 1px 2px; +} + +table.keywords a:visited{ + background-color: transparent; + color: #2d608c; +} + +table.keywords a:hover{ + background-color : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + +ol > li{ + list-style-type: decimal; +} + +div.note{ + margin-left: 4em; + margin-right: 4em; + margin-top: 0em; + margin-bottom: 0em; + border-left: 0.1em solid #808080; + padding-left: 1em; + font-size: 0.8em; + line-height: 110%; +} + +div.note div.notehead{ + margin: 0em; + border: 0em; + padding: 0em 0em 1em 0em; +} + +div.note div.notehead span.noteheadspan { + margin: 0em; + border-top: 0em; + border-left: 0em; + border-right: 0em; + border-bottom: 1px solid black; + padding: 0em 1em 0em 1em; +} + +table.keywords{ + font-size: 0.9em; + line-height: 1em; + margin: 1em 0em 1em 0em; + border: 0px; + padding: 0px; +} + +table.keywords td{ + white-space: nowrap; + margin: 0px; + border: 0px; + padding: 0px; +} + +table.keywords a span{ + background-color: transparent; + color: black; +} + +table.tagparams { + width: 100%; + margin-bottom: 1em; +} + +table.tagparams td{ + border-top: 1px solid black; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.5em; + padding-right: 0.5em; +} + +table.tagparams td.tagattribname{ + background-color: transparent; + color: blue; +} + +div.tagremarks { + margin-bottom: 1em; +} + +span.toindexanchor:before { + content: "△ "; +} + +span.toindexanchor:after { + content: " △"; +} + +div.toindex{ + margin-top: 1em; + text-align: center; +} + +div.toindex a{ + text-decoration: none; +} + +div.taggenrehead { + font-weight: bold; + background-color: transparent; + color: #000080; + margin-top: 1em; +} + +span.taglistlink { + font-weight: bold; +} + +table.taglist td.taglistodd{ + background-color: #f0f0ff; + color: black; +} +table.taglist td.taglisteven{ + background-color: #f0fff0; + color: black; +} diff --git a/docs/grad.png b/docs/grad.png new file mode 100644 index 0000000000000000000000000000000000000000..42bc41c118fa029651be32b188cf2cf820fa1c3b GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0y~yU~>Sn6CMi_TT5yy|*Ub zJYF!WW`psu&kCXV#tHvi-+*c92|f^n0Gn>im!Q;`gn7 z+ioQc(lcH3{>7QMw8GbG-PF)}<@#u70jmNDiH1A~GoqZph0hGTzf85kV0ZZhdKPrNC*;Udsubrnpf-*7R! z+s44KMC}06nRN}lEI=jP>=Au;B3dJo6L^^z44C~BEK8bmSwNZ(GETcG%CKnXZ6=0- z@_7fCHftv={yBkx!Na$K^_Wt#{51&%h6%G6PCsCO5X25P^bpW|i0KhMOMtR7dKrLL zPSb>{PHI=s%`4tIwU`dm544z&%xrfnmdG_Rp`5&AGd) R<}=U)22WQ%mvv4FO#sz-+35fP literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..5bab85e --- /dev/null +++ b/docs/index.html @@ -0,0 +1,138 @@ + + + + + + 吉里吉里2 ドキュメント + + + + + + + +
+
+
+

吉里吉里2 ドキュメント

+ +
+
+
+

吉里吉里2 ライセンス文

+---------------------------------------------------------------------------
+

吉里吉里および KAG のライセンス

+---------------------------------------------------------------------------
+
2005/7/21 W.Dee

+ 以下のライセンスをよくお読みになった上でこのソフトウェアを使用してください。
+ 以下のライセンスに同意できない場合はこのソフトウェアを使用することはできません。
+
+ また、吉里吉里1と吉里吉里2ではライセンスが異なりますのでご注意ください。
+ このライセンスは吉里吉里2 (および KAG 3) に適用されるものです。
+
+

● デュアルライセンス

+ このソフトウェアのライセンスは、以下に示す吉里吉里独自のライセンスと、GNUGeneral Public License ( GNU GPL ) のデュアルライセンスとして提供されます。
+ユーザーは、以下のライセンスか、GNU GPL のいずれかを選択して、それに従ってこのソフトウェアを使用することができます。
+
+ GNU GPL に関しては www.gnu.org または、添付されている
+
+ gpl-2e-plain.txt (原文; 英語)
+ gpl-2j-plain.txt (日本語訳)
+
+ を参照してください。
+
+ 吉里吉里関連ツールの一部は他のライセンスで提供されるものがあります ( それぞれのドキュメントをお読みください )。
+
+
+
+---------------------------------------------------------------------------
+
+以下は吉里吉里独自のライセンスに関する説明です。
+ここに明記されていない条件については、該当国の著作権法に従う物とします。
+
+

● 著作権

+ このソフトウェアの著作権は、作者 W.Dee が保有します。
+
+

● 無償

+ このソフトウェアは無償で使用できます。ユーザは、このソフトウェアの作者に金銭を支払う必要はありません。
+ これは、このソフトウェアの利用対象がどのようであっても (商用、フリー、シェアウェアなど) 同じです。
+
+ ここで「ユーザ」とは、このソフトウェアを用いて作られた、一次ユーザの著作物を利用する二次ユーザや、このソフトウェアのソースを利用するユーザも含みます。
+
+

● ライセンスの終了

+ ユーザが本ライセンスに違反した場合、ユーザがこのソフトウェアを使用する権利は、直ちに、通知なく消失します。ライセンスが消失した場合、ユーザはこのソフトウェアおよび、このソフトウェアを使用して作成されたユーザの著作物のうち、このソフトウェアに関わる部分を直ちに破棄しなければなりません。
+
+

● 無保証・無責任

+ このソフトウェアは無保証です。いかなる人・物が被ったいかなる損害にも、このソフトウェアの作者は関知しません。
+ また、作者は、このソフトウェアに対するバージョンアップ、バグ修正などのいっさいの責任を負わないものとします。
+
+

● 著作権の表示と使用通知

+ このソフトウェアを使用するにあたり、このソフトウェアを使用した、ということを二次ユーザに改めて示す義務はありません。また、このソフトウェアを使用していることを、このソフトウェアの作者に対して通知する義務はありません。
+
+ ソフトウェアに含まれる著作権の表示や、吉里吉里本体のバージョン情報のリソース(バージョン番号を除く)を改変して再配布することを禁じます。
+ また、吉里吉里本体を '-about' オプション付きで起動すると著作権表示の詳細が表示されますが、これを抑止するような改変を禁じます。
+
+ 例外として、二次ユーザに配布するドキュメントに、吉里吉里を使っている旨と、'-about' オプションを付けて吉里吉里を起動するとバージョン情報の詳細を見ることができる旨を付記するのであれば、吉里吉里本体のバージョン情報のリソースを書き換えて配布することを許可します。
+
+

● 二次配布

+ このソフトウェアを、このライセンス書を伴わずに二次的に配布することはできません。また、このソフトウェア自体の配布に際し金銭的なやりとりを伴うことはできません (メディア代金等の必要経費を除く)。
+
+ ただし、以下の例外があります。
+
+ ・吉里吉里2の実行コア (krkr.eXe)
+ ・吉里吉里 SDK 配布ファイルに付属する吉里吉里用プラグイン
+ ・KAG のシステム (kag3\template以下の各ファイル)
+ ・吉里吉里 SDK 配布ファイルに付属する KAG 用プラグイン
+
+ 上記の項目に該当するファイルは、これらの実行コアなどを利用するユーザの著作物とともに、このライセンス書を伴わずに配布することができます。この際、配布物全体としては、そのユーザ指定の配布ライセンスに基づいて配布することができます。
+ユーザ指定の配布ライセンスは、有償配布に基づくもの、無償配布に基づくもの、また、オープンソース、クローズドソースの別を問いません。
+ ただし、上記の項目そのもののライセンスが変わるわけではありません。これらの実行コアあるいはシステムを、その配布物から分離した場合、あるいは分離して考える場合は、元々のライセンスを保つものとします。
+
+ エンドユーザ向け吉里吉里設定 (エンジン設定.exe) は、二次ユーザが吉里吉里の設定を二次ユーザ自身で行えるようにする目的において配布する場合のみ、このライセンス書を伴わずに配布することができます。
+
+ ファイル破損チェックツール は、二次ユーザがファイルの破損のチェックを二次ユーザ自身で行えるようにする目的において配布する場合のみ、このライセンス書を伴わずに配布することができます。
+
+

● 流用・改造とライセンスの変更

+ このソフトウェアはオープンソースです。ソフトウェアのソースは 吉里吉里Support Page から入手するか、それが不可能な場合は、作者に連絡を取ってください。
+
+ このソフトウェアのソース、あるいはその断片を、他のソフトウェアに組み込んで流用することができます。これは、オープンソース、クローズドソースの別を問いません。
+ ここで流用とは、このソフトウェアの一部が他のソフトウェアに組み込まれることを示します。
+
+ このソフトウェアを改造して配布することができますが、この場合は、このソフトウェアのライセンスと同じライセンス、またはこのソフトウェアの作者が特に認めたライセンスのみにて配布することができます。
+
+ 改造とはこのソフトウェアに変更を加えることを示します。ただし、このソフトウェアの作者から一次配布されているままのバイナリをそのまま変更を加えずに (付属ツールによるカスタマイズ等の変更、上記[著作権の表示と使用通知]の条件にて許可された吉里吉里本体のバージョン情報のリソースの改変を除く) 用いる場合は改造とは見なしません。
+
+ 流用の場合も改造の場合も、このソフトウェアに含まれるソース、あるいはバイナリを使用している旨をドキュメント等に表記することか、あるいは、このソフトウェアの作者に配布を行う旨を事前に連絡し確認をとることの、どちらかあるいは両方を行う必要があります。
+ 前文に関し作者は、「このソフトウェアの作者に配布を行う旨を事前に連絡し確認をとること」が行われたソフトウェアのリストを希望者に対してのみ公開する場合があります。
+
+ ただし、例外として KAG のシステム (kag3\template以下の各ファイル) はオープンソースですが、流用、改造について何ら制限や義務はありません。
+
+

● プラグインの作成

+ プラグインを作成する為に、吉里吉里のソースに含まれている tp_stub.h やtp_stub.cpp、tvpsnd.h をプラグインで使用することができます。
+ これらのファイルを、プラグインで使用する目的でプラグインに組み込んで使用する際には、上記の流用や改造とはみなしません。そのため、この場合は上記「このソフトウェアに含まれるソースを使用している旨をドキュメント等に表記することか、あるいは、このソフトウェアの作者に配布を行う旨を事前に連絡し確認をとることの、どちらかあるいは両方」は行う必要はありません。また、プラグインのソースを公開する必要はありません。
+ ただし、これらのファイル以外の吉里吉里のソースの一部をプラグインに組み込んだ場合や、これらのファイルをプラグインを作成する目的以外で使用した場合は、上記の流用として見なします。
+
+

● パッチ/コードの適用

+ 作者以外の方からパッチや追加のコードをこのソフトウェアのオリジナルのソースに適用し、作者にフィードバックする場合 (コントリビュートする場合) は、そのパッチやコードのライセンスが、このソフトウェアのライセンス(GNU GPLと本ライセンスのデュアルライセンス)下で適用できることが条件となります。
+
+

● 作者によるライセンスの変更

+ このソフトウェアの作者は、このライセンスを予告無しに変更/改変する可能性があります。ただし、旧ライセンスとともに配布された旧ソフトウェアにまでさかのぼって、新ライセンスがその旧ソフトウェアに適用されることはありません。
+
+

● ERI (恵理ちゃん) に関して

+ 吉里吉里本体は L.Entis 氏による画像形式である「恵理ちゃん」の展開ライブラリが含まれています。この形式を使用する場合は、特に恵理ちゃんに関するライセンスにも注意してください。この形式を使用しない場合は関係ありません。
+ 詳細は恵理ちゃん club
+ http://www.entis.jp/eri/
+ を参照してください。
+
+

● 作者の連絡先

+ W.Dee
+ 吉里吉里/KAG 推進委員会 : http://www.piass.com/kpc/
+ 吉里吉里 ダウンロード ページ : http://kikyou.info/tvp/
+
+ + diff --git a/docs/kag3doc/contents/AboutBox.html b/docs/kag3doc/contents/AboutBox.html new file mode 100644 index 0000000..128c86d --- /dev/null +++ b/docs/kag3doc/contents/AboutBox.html @@ -0,0 +1,87 @@ + + + + + + + バージョン情報ダイアログの作成について + + + + + + + + +

バージョン情報ダイアログとは +

+ よくソフトウェアの「ヘルプ - バージョン情報」ででてくるウィンドウです。KAG の場合はこれを KAG のシナリオファイルで書くことができます。
+ 使用するには、Config.tjshelpMenu.visiblehelpAboutMenuItem.visible をともに true に設定する必要があります。
+ また、バージョン情報ダイアログのサイズは aboutWidthaboutHeight で指定したサイズになります。
+ バージョン情報ダイアログに表示する KAG シナリオファイルは about.ks という名前になります。
+
+ 通常は、バージョン情報の内容を書いた画像を背景に表示するだけでも十分ですが、作り方によっては凝ったものも作れると思います。
+
+

about.ks の制限 +

+ about.ks は通常の KAG シナリオにはない制限があります。
+ 下に記した以外の制限もあります ( Config.tjs の設定のほとんどに従わない等 )。
+
+
+
BGM、効果音、ビデオなど
+
 基本的に使用できますが、効果音バッファの数は 1 つに固定されます。ムービー(AVI や SWF など) は使用できません。
+
メッセージレイヤ
+
 メッセージレイヤの数は 1 つに固定されます。メッセージ履歴は表示できません。メッセージレイヤ0は初期状態で表示されていますが、サイズは不定ですので、非表示にするか、position タグで位置やサイズを指定してから使ってください。
+

バージョン情報ダイアログの例 +

+ 単純に背景に画像を表示するだけの例です。
+ +
+@title name="このソフトについて"
+@layopt layer=message0 page=fore visible=false
+@image storage=about.png layer=base page=fore
+@s
+
+
+ +
+ もうちょっと複雑で、メッセージレイヤに情報をトランジションを使って表示するものです。また、サポートページを link タグで作成したリンクをクリックすることで開くことができるようにしています。また、「閉じる」をクリックするとダイアログを閉じることができるようにしています。
+ +
+@title name="このソフトについて"
+@rclick enabled=false
+@clickskip enabled=false
+@position left=0 top=0 width=320 height=200 color=0xffffff opacity=255 marginl=0 margint=0 marginr=0 marginb=0
+@style align=center
+@font size=24 shadow=false color=0
+@wait time=200
+@nowait
+@backlay
+@current page=back
+吉里吉里2
+[emb exp="System.versionString"]
+@trans method=crossfade time=500
+@wt
+KAG3
+[emb exp="kagVersion"]
+@trans method=crossfade time=500
+@wt
+[font size=12]ダウンロードページ
+[link hint="クリックするとダウンロードページを開きます" exp="System.shellExecute('http://kikyou.info/tvp/')"]http://kikyou.info/tvp/[endlink]
+@trans method=crossfade time=500
+@wt
+[link target=*exit]閉じる[endlink]
+@trans method=crossfade time=500
+@wt
+@s
+*exit
+@close
+
+
+ +
+ + + + diff --git a/docs/kag3doc/contents/BGM.html b/docs/kag3doc/contents/BGM.html new file mode 100644 index 0000000..0bea6db --- /dev/null +++ b/docs/kag3doc/contents/BGM.html @@ -0,0 +1,78 @@ + + + + + + + BGM を使おう + + + + + + + + +

BGM の準備 +

+ KAG では、BGM として Wave系 ( 無圧縮 Wave と Ogg Vorbis 等 ) と MIDI シーケンスデータと CD-XA の オーディオトラックを再生できます。
+ 準備をしよう を読んで、準備してください。
+
+ ここでは ( 一応チュートリアルっぽいものなので ) 、CD-DA を使う方法で行きますので、Config.tjs 内で type"CDDA"doubleBuffered=false に設定します。
+
+ あれ、cdVolume は指定しなくていいの? CD-XA じゃなくていいの?ということですが、今回は CD-ROM のドライブをこちらで指定していく方法にしますので、cdVolume は設定の必要はありませんし、ドライブ検索に必要な情報を持っている CD-XA を使う必要もありません。
+
+ さて、適当な音楽 CD を CD-ROM ドライブに挿入してください。
+
+

とりあえず鳴らしてみよう +

+ 再生するために playbgm というタグを使います。また、再生停止には stopbgm というタグを使います。すると・・・
+ +
+[wait time=200]
+*start|スタート
+[cm]
+[playbgm storage="e:3"]
+再生中・・・停止するにはクリックしてください。[l]
+[stopbgm]
+
+
+ + さて、ここで playbgm の属性 storage に e:3 と指定されています。e: は CD-ROM を再生させる CD-ROM ドライブ文字ですので、あなたの環境にあわせてください。その次の 3 は再生させるトラックです。
+
+ ここではチュートリアルなので e: をつけていますが、本来は Config.tjs の cdVolume で指定したボリュームラベルを持つ CD が再生します。e: のように再生するドライブを指定しないで単にトラック番号の数字のみをかくと、KAG は cdVolume で指定されたボリュームラベルを持つ CD-ROM ドライブを探しに行きます。
+
+ また、CD-DA でない形式、たとえば MIDI シーケンスデータを再生させたい場合は、storage 属性に再生させたいファイル名を指定するだけで OK です。
+
+

フェードイン・フェードアウト +

+ フェードイン・フェードアウトを行うには、fadeinbgm タグと fadeoutbgm タグを使います。
+ このとき、time 属性がありますが、これはフェードイン・フェードアウトを行っている間の時間を指定します。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+[fadeinbgm storage="e:3" time=5000]
+再生中・・・停止するにはクリックしてください。[l]
+[fadeoutbgm time=5000]
+
+
+ + なお、これらのタグはフェードイン・フェードアウトの終了を待たないので、終了を待つには [wb] タグを使う必要があります。
+
+

そのほかの BGM に関するタグ +

+ BGM を入れ替える xchgbgm というタグがあります。Wave 系や MIDI 系では、クロスフェードも可能です (Config.tjs 内を参照してください)。
+
+ Wave 系で OggVorbis や TCWF 、 Micsoroft ADPCM を利用する場合はプラグインを指定する必要があるので注意してください ( 準備をしよう を参照してください )。これは 効果音も同じです。
+
+
Note
+ MIDI 系でクロスフェードを行うには「クロスフェードされることを意図して作られた」データが必要になります ( たとえば同時に再生する2つの曲では同じチャネルを使わない、など )。しかし、あまり現実的ではありません。
+

+
+ + + + diff --git a/docs/kag3doc/contents/BG_Displayed.jpg b/docs/kag3doc/contents/BG_Displayed.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8774df926da6b7df4c0a0ac9c4c31053f14dae19 GIT binary patch literal 22152 zcmb@t1yG#L*F8A61`F;m_~7mk+}$C;-Q7J9+$DGj?!ny&?(R0YyUX(KZhiZ`zpeWI zyIb2;GgVVh&+T*ip1$3EyPx;P_e}trjD)lV0OF(2L(l^N?<)XN01Ol~G&B^<#}^C? z3@jWnJlsb?MM6SAMn}cKKu1MK|BOwD^BEH#3mqMo3>Tk>h=hdXGY&ZgIWYwxF$wWM zMj$@^3I_{^0uPTujERm({QtVVcLC7hArK(Mp&-ZskmwLl=n(IH01^NI0_GpI5D zvp_&XL4TlxM?ggSs8EjvfP{d8g8ab$LExjd@5gfhG&&3h8Os;g&&q~yFMqJ z+dnWkG(0^sJ2$_uxU{^r4c^(^+dnuwy1cr+xxKr8czpVY7X$$6|Dg3>%>IKH`Ufw_ z54S+W{lg0a(*5HDg$@lv#sZ7+MH$Y}@iRGVAUvi>d~S6&0+3DR0?Wv03K5%veT(w) zA8P+Qv;Swrg8n}-`!8bu7q4XiG8Dvz^PtcHLV$rw)ChhJAMfo*Z|_b##ZQIB^LK|v z2Mp*ec#GWYdXW2odj+2TXkxC*g4?%F43CMvWzf>VU8Jn;Siv29Bs$e;283A{D0`gS z&hgCayjLG_^`Y|UNp{R^{T-m1wQt(c>Z;Ofx7UUHEqrKz%zL{zsf^vX;-$tG*UyF*NDls#Zqw8fK4yWnXPL=WQ@I7@jKO*adnv@KKIEhPaj8cU7}J0 z3A!t6!i03_jpAN%s3oO`Oz9qTm(5Sq3=(FFIJ(A&HpfdovHBT1p)Ibt0@*S(Pg&mF z7$ZG?VOL7dti(_`$f>1Cgv?X{aWewLRV^M6x%H^lel(>ol^>L#D!;j+IK*X{v#buZI1K6J7CMsN9G-n zJEHau=nQ_Lc?X0vUxMC#FsQ!0pN&8v;y|^2KRq$$t z$?x+Ed2QNuQ?R~-WT>EqpN=L?fKTR5$)V)ky6QVXu=7fdc-(ga30|6L-qimeyRELVCnuz=q(0bUoff50(aMA% z!d~r~ZGZx6$G}jbc7nNavpEr0SUkEoX28ra_%quLrDI+53z1EU)VN!s~+!XJ1>|&WJGc?;g8a}zoGID=<59#8MeDZ*T?Sw z$}cDTtB(u+5?1VkZVpE0fzzDO`Q|$S@d@;XcfPgo@_eNKfa~8A`(WPrL;w1`#DCN9 zfM*M$C!6Le7ZAAb8c&i@__uB-m#w*TLB)sgt%?QUPMVr)Y6uh&$G3um&-=68HafxDZA4qVwE*h8 zs+w#Pkv`Im70F6QxKwCsP35-zQsXHAioME6u7KJ! zb^BGh1uyOm zYOH$e-y|KOJY|}`Ru|z#L0p|uKxMa~IKY1XE6CJ(F%ZW1HsGP5xz68FRviu}z`TS9 zm+5%?jdEKNP0Qa>@ouRvVSG<>6@h*rbH^*)AwRvth}++l`|0_who4V$t)qt^sWa$!STnW$ zt>}y}WaeRB^!YYMuxbsLMVV`(WtVGsSl8jBdg>*14uGVSwNU~>i)`=+q$!c(Bvi-3 zs{=ao-}A-J7Pts0{Mqn(`_OP%tyQ!sp>OwRcDaHybqSAvb$ZQ$AO4cGmu;23al$c` z2KKO&0VcM7>h5!ni%(lNukl}#OQK-0(tA11{oTh{Xg6?$seFaj@R`_2Yb*)vAnudO z9s6@CvK^J~U*CzB37;SRLMY4A41y$R)>3g3L|s~jEaoFxbC@B*oW;@H16D2_Ob=$2 z_aw_)L2mI>FA(bc8S z`ze6Q%({+>cJD~`=VOggcKh3QD`N9M_vaw$e$COgJ`QKJ<4*KVQBGx)IbDizzuNEs zS5b4`oZ~&9Kr`5GGbnnDAjrWJIOARo?DX<1LQqqL`rJ}=7}d4cUOU*~eynCpK7y>i zyvQ`(_xM%9m|!@eADHb?eBX~}b%BT0`eEx(LEfQ>+MP|(3pnWVCWyn1L0TuP-j|sW zT>t>A=R@$Oct~_-1P5F3*{FN1PPHjvRz9ilFx%wqa%&?DWQRw}(>(e5*Cie(9*wTM z!rqc)Nm39gw7Dg`=L?Hu^$$mSaakK*o?kEW7ufLzDS4_{8%XVc%ZiPPiRB$2`icQW`lo+S5d=U_$f`Yk z4=L)6=Ep><_@I{!H7-_XP#L^WN`m8Sk~&^5 zsu#h$}}{?QwBg9W|3ex&o~fX z9>-RQmHfpW!O|8;U7aY}za0Mo|GL!-2RKDH{o_Rlm8p*Xkh4YEr0eYJxW@?~{_^Gv z>H%M_a&bAV1~eq}2XIF~CGW?fumvF;dA@+Yf%Pv6UN)BT^J{%`5uDxu=0Kp3!>>nQ zf3h)y_KnyJxX7|8KjhnihrBK5#1ZSEU}Nqpc?uHDHZry(+2(tQrqF;Y;RpnOf%~u6os~E5?&WSrCJ&Uxg zgDwRl<~UkW(GEFz3)6t@wfxngE_6<<&fQN_dR4vKsJ*r{kG3RF>f>Jo-sGl4r?Ts5 zdAg-MsWGDZII)5FF<7{!2M?b<^7}4V>`Mdpr81h z%i9)dZaJdyN+Xso%MNpXX~Y?xtz{>34uG7w^|7 zZdsT4TyIw~yhmk|<$z3x-%O+<}g~4bo&GrpqfArR6DU?Tp9q_K= z=xQ81V;T@OS;ss48hR5IZ)gMqn0NpjylQF>uC_hOU0|4sNgqD zJ%Te_YMwEzdX1$f$zAaMuYo}UNh{>thTsOYVKs>0!Bd5wahin4 zQ!Ivb@jZzNeBLt=vCQVsXq>N(Uve@?T`UnC+{m9)O@{~KV5fa~ILs{$1UE}n*>INI z;(Ym(^u8`3w{Gl#y6*nc`cO^hEhjIQT)hMMmB1F%Bq6W|@pc)*4qA3*6Ki+Cr&$z4 zEN7~D!JyPCf-meK7TW@D>UNw@VZV2tgH=9dK!62r$YD}>;3icbq2sG-gQvf98JSMN za+2QPlyNe~uZdlkvVI;vIVI6kSC>#JP#nwtQWghfGm)6KIfC3llpB^i(m0pDnr&~d zHNd9C0Ui$Gmf|?4?fB@)5(hX9M89*4vev)ZcJwMo1y1H zlpL;z@x5ZUPUkO4Sp8W>pNd#IM%t((%NO95y%r$!>NV0KjjgjZCI_kIF4*&fLbVz>pwVw!D0Xa>EtXIt_pJxaKFk65)8_~jIINiK;KgA z6W}EOJbjv#&8OqVqtK+!H;8i1X2}M>r0=p(Of=7W zd;5Y4FWRare(NTNFpiFXp@8AvM76UBEp*-TSiFyg)ZuYZW{pAlRlE^AN|XA9uP33G3wKn0}-W$!{lqo7Sny9+I?EdPdZA zsI&@;6slZj&U3Dc3GXusoI%P@t5pz z=xf^z`%uv1N+`iBVn)Wn+INib2I9 zzOno=I8RMElT&d^rPvQoZSzuCnhUB~_{h&ntFKVbZcy+?0Vr;5$jB*5{l_{u+j2AD zw9a5ZT~b4&{JRP2{IB>u(X3k@yg!;RiB#RyTFqakn^@sAm-k*i=pUOV5GPhtsz8W1h*RmB?RtzJ zji580FWsxGUXJUP*6Ye0W~xEG^ej*N^Od?fNb)HQ*g2M5a3vy$sKrCzm8bcrWrr4Y zzTZZ`L;|RkZ$JLr3xMF%Y4tj6?HpGcf&&~SvqfSPb97F`C`=o=G3j#+0a<^2pDzz@ zOHL~I%e=#OL-D|gd&`P;s66)*>>brc%?qj_(tvSE)oi-8Iu$*M2~5*uSY3e-HuX?4 zZ@y&-jWsF2+2G+DN7a_~uU5>%zx|H;n{h%tmFf%xzYEMNBOI1i^@8tQuVpfA;c|xa zQ@CnfwUxJ%kgtRaTvOcc8pivvw3b$=E%!U^Wqb}AtKs+cS;e8TUBLnf12VnGT;3LD zC(4sdJKipmw!>{0D5#AK7iITKNJGZ%%VM@aVxKqOTE^<88MYr2RA!(iMqybF{|c$K zCSb?VG%|9V@$YCj-4~rDj+vHN?FIxUu%b(Yf)jI!_O+FSuU5@GMaoTzVHDus0Vq~I z6V2c?(zxIWB3RxWuL@UxI$8{R0=?5mC&h(q7Ik8aLt`EtorF~#2`J_SDhCf!!MW5w zl2<9l39M?j?*OXGzjP@Cam-MTc>RLO3J0;wRR9-&TVyI+)Ye$GH(}kBYUI?l>L_PH|EGYP=4UPk|wuCf=8)+7g;6VfLbwyPg#A zI8or;B67L%!N}RIKtewbvu!R6Q%+dwvmn%V;X=zoVnZODP|i(--H3)oiWGm*6W)hnmK#=^ba<bI!jI=$cC=K;zCfeTTo(45Nef!cGRZkU&QYDnBua&= z$hXF>o_JvhCOxvkL!Z*~bnU1ma2r+aVd=R{P%r0^o2?tE3`+8mrKM7n=#7@ zpr{EvbMPHghc1P?#=BCybR|jE>24(FiT5?>HTc;J(YR}6at~wts2)`j6(1FV>NWB? zDV0o;cr~X&$DK{QMjFxX?eNuEG^7zDdH7lf>DV7c_&F;+AlF|eM=|<@^qCct27)ih z&+|V2>Rjn8JS~Y<(7;~NO4hTHaqW9RvmLyUj%`D^CR=@g@U&cw?=Q6AU51&Q0=bzH zj1x~)A_?aND^O%Id?fK6k>j}Zeet$_eRJYy&#e$O6!A@?PQ+{Y=(FY-#sC}-&s}M% zqb%h%tUr?w4J)K33HVEvp(nt=33gg?egCF-Y{YyRvHQ#OuXOU9FPv&wlo96Y`icC^ z{KQr)JkJFpjW;D5lzl$^yjdp>{=LV_Uw`LY-s5KbsrG|PF*>4B;=-9ybO{Mf&}9k9 zRi?B0uDb|tiuWwilujQ5`X#NjM$2^oy#_q|8mSsc7CHeXB7-#;uqd84hY|5P7C<2` zQU~r_QkKS~m_k+_1Fy_kXL}*v{kJwdXcP`>H0K$gx*;e!2l+?HLnq|0(Lx%?@ z&Qw`pgGY^t`=By0`iQgm_I`QdC7uzT9y!tGpRuRWXY0^46C2wO!jaGx$0ee{D{Q+} z@f$qPDvTNttkA>pU)~h&Hq%~Fle$vaR$$sh0|_EZ3nY`eb$Wi zh@j>z!&X;Egcqzo?j)j2eZ$ts#b5^58YZ8|z5~=fQNw(uN_aM{Jnu+ZozH@F)kFwQ2o&e%tPUgz`kcBlky1izsRPDgKN2R;5&nGeljBbGgKHDxNF zOM2Jbk>5}nxB=Oik9>E!H@p)5*bpOdOt-4V@jKy!@<7^fps5TzbOrP%aK;EI?+XxO zyp6gw;~?tybnJK2trgt#Q@#HI)`VNm6A#lX#wF;mgHionjw2q&<V$so_>*q`!WUH^A-78Cao)wiWX&eRu z(UQjtpj2sjUHfZ$Ut)`HVE;a#`pJC0dG9e}RySj&*OD7~gG>n)Gl1o$_>2UNM#QIc zOAidSUY5~IRLUpx6E`~mQu-d4?)?R8lx*4bD|i=RF8Ekpu^OtD;Oen>Zlq>{(fmS3 znLta5fNQNqGChHlEm=Qe^5!d7*7PNv>oEdV~_AG67>ZZGVPt&Wq_H_>9lm>q8D$cJUR_Q{OF>)Grp68{f2)7A7LsqQiPSuC> zzx}eh$)l}k6`jkbQoq`-eq072W(&~GHgLI}spq)Jk6$ia-4-oT)-ko4#Ey3N@9w+< zcuPD>^mH2*dlOb+cghf%X!*#Nbd^cu(u$A|hVaOO@o>0r|B6>JH>9w^PO@A>Y64^J zFN)+{(LnopzS$ah{`7>X!YmP?j%FCrqlwbMD99sRlvlXx`?5%P`H=XZ)G1$@?E4)9 zr*oW!XtYu91r3~)`%Veyq#TL2AzAtb>wjTPG0dG|i*@mIuib#_-JB_8HN5aHhBbrQ zyywc4OftM`LiJ@Lhhp@Q+*x&wcd?Caia8rL{7?{;4jAxDjJj1$U zaQV)t|JuoroXSCv`>~~vya$Q8V)qn9Ts@`uph=st<(5XKl)t{_Aat6A6}fu!qbEib zyfdDI=?bkHxEq|K02-)wH)~@G0a};=ZmKk1^FDH%pPA;+QkLrCc!O|a_rEFn+c8wF zc>frV9bJ%pP~N}#tDsn-HtHPki}3zf7PzY!)xa|#^j7M^LhrrwLl4cWk7a~DqT1XY zSE;kYY}bT~rYKjN)aX}=9M)RQrYe6^TE7{Y$2ex9CgVq=WCc_T8N5a%3dlBUp(uRr zB`VFzwsFj+454rW6IcW=S99sY(nkV3Wn^YORY{-uA?M6CBvU-PS^H6hfuxs5v@+7J z9Q(3P9SJNBF+d}Pod{JH+B$>3;CdUJgeO z4xqI3>2z?r#_puYS;bwfP%94s)Ik^p#)2-N<}r1nLG=sn+)~ul$~Qt{lhN#ybDQvT zzxz6jyVRCuG{ji?0F|RG%^oI=&8~XaWY)NH#muwA$o7<8!We4Q7R(l)9k?ht5_rCG zRd&buXNf*R;u?n^i=pS)xWme|DKKKx#P;~=me6b7PDOsj=&{+2z|)8k)_AOmFuF01Uj&L2#f7olYP9O!qPsWx^mR(_) z9xiSyBNxN?Br3)8qRG~=<_iX2y zS?V4XVU!hvp>n0iWJ?w2ryh=tN7%(KuS%)ZI`p1ir}eYO8Nc%mbrM|EOMy#EfUSkGsy!WUQ!vxS0ZiBcz$ zk;*;|NVKsHTI`ybRIAYX-JBKq34_2VGH^nvFmaTjg%cUoCI(h0OSDK2mBm=zJ8W4A>d8@2BXr59sWN|67g91fXJ1#GPtV#YDV*ITBzkBFK%D=|H;c*^x5NWZ zZzT)N#JzAojSU zQ|q97w^`OW>*3U=B{TFaTH zI`IA{Ai!%O&U)vyu7(gcTFa-mXufd`IIdQ3n!mD|I$BRAItuHn$z4`GWQmm#mVaGn z+JEAosmZBrqB1%WKlyn&KU5nksD^0qG5icfE3y|8Yb-fIZVJK;pEL&zO(;04RVoi% zBfX3*#OxJnwLKK3X+cI1*m(+c%9OP+BlqpN-IpvDm$6*N6Ycov)W#JR36$COjz+^} z;F>%4p8-gwYYb{FDPug4(2BTSyMfE~;4NLo=js=&!Qzxc_57C4!|{XxVPDP!ECX%& z53#W};uAmavMdzpu3%Af;SqRuDpt@*7(+^%DC6=sctwO7HuT}3hXWjl6!pMG0z!jj zoCikaEN-mA1i0oK75unS(UHmFj#t4mMTB!E9;5wQMn>T1MWEnYlATJko5yt`5|wv= z6v?Zz692T=Z(5v?qdph#pwTu?rTJd)Ejn?QFt%ae}W``f*&O*poYdQqK)b%>+wCS(W>Iw z!v;9MX2oF+>if0LY^_32ic#D{`|E_dI7#Cf-j2yYC*NXnt6s}V2{_PMTjFx6XAns# zzZ`wH24XLki$pd0_*&l8v`FES86J44YfY=&aNu*KLI364&vg!d)bL5e15nGp~J8ZOy=o z#%AU-a48+^x<`vyFNxFSB-sK_c=S6GHTs8OoQ~u@9qotzCdY&RDqw7^Qr6}-D{7# zvLUy=vyQu)k;xKyY!d`{=Cb^d!F`CL(k<$OZ`RKZ*Ph;EKiwpiaf4>?TV^_@4NZ@% z(dDy19VD8WhRwMt>1X*+2sX<0j%~aEbK}*U;*%35CUVa=wGcQ~o-Tnu0`k@?rINN- zULt<2KRV892Kspww_Y@;Dj zT7%st+65X&A#$&VaKY4quO1u-$we^y`Sjexuf?=qTjQ~lKnNWUd1WY)MI0shY#9ub zflVv`W;_)yTfsK`B51Y=%=kekw;klzUXtW*Gqz*xzY7KiDR{ueq!<1Z?c5cz&bqFG z;SU0P{yjz0FFmpZ$2HPV1LCq5`6&;&g?z5oD>a_up0VkmY~9-5j0e~L%hGFt3`ZW% z1)m=^6Ra5fPZHXNPrubaODBHpx!hHt<8oDtrrTmwO>q>8`(jmBz0_~8>KCm=a52hp za3{v%6zB7s93}xJe|`aw?@A4#93N(5PDIKGHw{#qQBV$2mbGn7FiyBhgHS~^lyv-V znH~HLc4D&rfcVdh0~5T}(im(cU?0XeePgZUT`=>Ue`%j$vxm$4(E8YA2=AuuE{`2> zb7bU;AI9l-yP6doR!bdC46Cydk46D%#fntR*BV4mbuYLa>L_ama!y>n%U#~ zr-#~CZ9su57p2UvQPOF|lJtJ!c9N6v<9^AsOst!n%BbTC&TqcOf4H4eDWV2G=d*=yRhKirGRZRFBmet7Hs;OpUk@u`(3|9bBn&zi$7kggX|Vx@jj-d4>2~ z{-r;~0Fn~-6%TMINFyav{shnGAa8wvk!>upa^twOiDRL#p#~Vo%Ux%oK!GtAn(etL z=mHlJ!*SV&hP8<6PE=x@wl`QA(U9+{n_lSf_B}syE9HX&6+O1B4M`Pgq99Qz+h0RC zrBeYkO0?PtlvC(k8$$FF5)dotwe`F-ZZ|#efG^Xf2#6hAiOR)ao2jWMXZ}#|GEofn3+u+PI*NDU4)ZMY+WqAS zZFw`HsG17*t4Xa$d+wDlmrD5m#DWlu(}FF zgrgZ4BYf|AV{}*~`LU~h5`|8iuI9;dzZm0udOlxQk3ecM6v)c!vroMc<#?=Bt4HyP z=2{)AA2NB!z$?dU3YdLAnW|iG>64~!g`lvBxw&}-@v&@(SjOGH3be7^tiluc*e`Xv z*!+py<59k1#)X1vv{5(9rUlADmZCC7ao--xBg)rAZ+jX9WQe*Q4>)T(^`oavMeH}q zEdG>4fUi7pJ99H`ij!AOr=c8_M44FNNAvb$Uv5_09ae2nWd7N|=RA%xLuBnQt3CEx z+!1j&Buu3%0dD?J0-L3v!xgpY3diKZo6Db-9;4+#)fVxueX)xEZ|#^gLF^_}#H?R|(wLve5a(@!YxfC!y6*?1rVs)X*CYS0hcp5dh>FVVooGHKrDKL5%TZQ5Z!{w2zXeH1-*nip6OB}BUC>1 zPhL|*E>wBSnr!(r8RQx~L|WNGuj+Y@ZiJ*h1I-ez6<3Li+i8WChwhjOQiz+IZbLU^ zIB4whR}vHehXS55<>m<$Suxq zIB?S?$&_WP?3OBsL`7SJm9yt(UyDX;*dSv3Ne*S53-xt$+1ksn2S#^x5P8VMeNRjj z7m}gx1nZ$_!Hxi5OA0$D$IP3;!N)G55ZH@IBDxM(H!vPDDr})Ex-fUQ;Or}YkFUh3 zZAG5B+X*++YIaYn`GsAUeG!|L=89cURw=W=T}HCRcTeTdStR(;k}8GfMB)ZsPyE z9uIUsd`hpjE&94DQ{7FHzH_6RK!-Htil4~QAV!B3)@{Tp?`^bYKqTB^RF40^v^re@5U zR)q(t%lOD2S?$juCrf2Ff*EzpKU*tl>|FXrRP#bHMs)w(yeOtaoka3w%L)FoSUxJ; z;;uU=c0K&~!8Q1K%e+udZLB|eo_qnv@|@GspIKC@;`p4bBu#Lrq{2N(0$M#M9&hqf zJoAtfq#=2uP6hlj-Ajqv5g9BU@v~~Uxpx))txou{yR;;z2C@^jfiaG=*E7YHwmWXZ z1l)$%q4n(WDj@ECF-0DI2ctd|RDHW-m)E7Qh>hoDBfvvcC?Iw38lQ)-{O$}|7OV^* zY5^8%Z!`Z!=(2G_GgqoMq6c9SWW-LzWo;u$g$(T--^gMIMnk8Uk0D7`8Q!>Ze8dTu zh`Z|Z!`c?fkIsu^DHp}MMV+5O*JV}&VB*lBzUY#V;6+1gss1rbPPT5w8xmBVYGDpg_qy;Q z8u98r2S zthxgr+jMAu(TE)D9lbwSXC6C#81wo1PF^+e-$M1E$v_Q3Ql8UJJ%LweV^*L)*b>oiY~ z)?uei@;*5gSqSmgmw!!Xu*Z`sdIA!w`^i~{?ZIpKA*F5OE=W*gnfqyW&6T}vqi2GB z`WD`Yuc+U4OWK~2@}-{};6mvB@oZe|ENuVGu#z3I@bc|p=m+W z>W=aY{d9t(??{kj?q+Vu*&ay#x}cyo6A|f!&IPg(JUZf3(?C%pNi_uAl+A;D>1uQj zHQ7p@`v#7WtQ6rUTuu7d*U`>d&yBi#nh0HAtZV<^H~doiX2ji^wS(qcEtV(}lGb(P zrn6Q`pNl=uzLOizcH*|rukm$cZEXUn7oYvCRSVg$dc9Q$cS*WP7(;e(WpoJn3mg=o zCi6Y#i>4Xde-46OZKr1L+`svH)Cd+~wT;|kmX_6)Z%Wx$B7KQr z*8^bf0*|5X6z$0GDwr_1glgaVPxXxpCQs^)pR4VO_ue>7;ot?>)?0mf7|Ksg8tVda zFOY&*6>SHqw)8Xu=~GU|X9f=ebnxG5NX|YoOV*Vw!yr*~mVo?X002(GFUii3(oCK_ zO&wpFnQahYTOPT@K<~;%f0ykuy+4@bJai|RY`UMBWNy&h6EZ-N-~n|}Obp~$NH}A~ zQ&)n7OgvYM&zP--O~uYbUFQGUq5qRsL3br4IHJPcLr3y$iUzVoYMOg!`L)J*V7_8) zU6w%F-j-Dql4kAdN{YJEswXA$7-1{l>CWcM6;x^Zrgnsqo z-Hym?Y-m9T*=EL zry^OAqwiU#u>zs^G@n!}ZFYm!bWFmzxRJ3MS)gx*N;`f{Dcn)VFa1u2KNyXG6{uZr zWRH}~ifj6VZCE1^ymmkeQ;-j~U$S_uMOk52-e8Vcq?fW5V9W-7mrZ8uG zuc-Ir^4C&P!&JE*tK@705wogij6oU>r_q zc-rzK9r?)gPx%A2n{O~3E~7HfoA-yHX``!)g=7)~PnA=Q5K70`&g@WVwbQRDzOJ3i zu7AAVg|(M2ox%OPdpuHTJT7t7QRIw!JJT;I5~R0Af#|&4{MBEhL$^ph`S%ZdaaT^AnBc0%{sn4Rh zegRx0`|GVFI1kRsJ<@3O=#B$cJL%&`eEBg)u(m~bE3xy98r37T)+O^EpZnY;9&K*n zw3{A@9_{ivbxvJF5~y&{Id`aGycbfn4;QMBnTITG`NL3^iXv_aeliv|qKBw#CcC3^DM*w_LCap;9yF7|$6lQia6EQ(*} zOccnXMzTjnB1JYaLczmpYLH1$7c~eR>Bg5T9kKO&!wuF#r26^0NDjsKIB3p?=5iI+ z<%%L4WpbKZFGu+ZlsD_6Nf^hK#jXsj8b)vNk9KNYXVP^g9~U@{O={xzo>9pWp~QCw zNpEe`+WG1jo8!F$G!Er3h^uvg?#C&C);6QnL=iMxpBew10`=md)L zkMBxIQAfRk{JUC+8cHxzpTeouv6riZ{ESyK-71(&&+(ep4(L2WX?M(X*BC94q)m8H(C>o3#ZzT%&Hfni1_=lFPq5@nR5*0dPrnFKvudwR5O7M%*&)4J z(xnpQ*(z9>&ESPH>?t4Bm_J5THH_vYj(y7JLXU_LLm<;TgUT&TcV|i+J#&$l;A6u| zTo#8m4kUdH<)Qe9X9CtvBib`XZJdAA;0OgBnr_}YlO2?8w7R2XPJhMuI%*iU%_;|n zXBzWY6CF5QvqVj8SYeYDNE@W?!#<&_FEFpWFtcjf~&Bzfqv;GgbFl;Tw~x!CQ@pH2G$B!X5kurkWOo97gM zDW=G#yxKMjlX{%%xKhMRcLy$2Ne!7Y1Q#^q?AUa>eRM}uepmf3+G>Su! zxli$i^;?6*tJe0m8{rwNJzchhQ_YYW2>lK~e{)G6uQoJA)T#9?1v{7%)F8YAtQ)uV zdKDd!_;eA_clNaPuB4AA3e07O6~~_YZ%wxc`MXNv4R zpAlgS+ua|tnf2ZQB>r#p7M9m*14as0rK3)4ng2{c#JJRHm&l4h|C;8C5o;o4_D)`1 zzK}+99)J3e_mAIPXw$vfV}EyiB7C9zxYK?7bpALXPTd{*Na3aV>i_i}znsUvTf=XzS7v*;-Omu4i0F! z_eYRkxRIE-Ljelm3v@0x_S@XH9|*(pX>tiT6oTBzJkbcOQ2nmcvbqyPZj~1~M?4HT z{30$;HtvEN=CEQ}f>QEnG!c}%%97O{KF;d3p#A%yNNlc9i-8Ge!e*PAKx@0k(c(lk zDmos+oX=8(lm`)pH$r>~@H@6Y0v2vLF+x=m6JCUEA>BUdN4fPQqQA^19HdWBP&)us zl5s@0?+oYZ2|*T3f$QUo;wc>^p1JQ-+7=mC;3NP9b|u6sJkRZ)9Or%I*+@1(#%DQ zjJZ3Z-LQyr4V!C8AXEL3w$J84pzfW+zr2h+?m$7|R~R_~e{^*M+cU@M@Azfn_*?kh z9ElefNeJ02Ig#i)V1p{5gw*A*qbO0&15PdF>zKvEd85^QcH*yxVCj&GQ--fb)Z9M! zHxjeIh;rT@*t<)+ykJR`6|)t8HIp~Q@8divMle#Z8zI7p6Tuy8U3*A=OHRuV!|2;d zzrCN`?svlwI4W-$OZR=~l(AB*W?F_54nY)wA=c zh^%9&cFT^IyZ^OZ##8$kh$~7m@#JaT8vV5r|Ut-z*l}bxt zpOCga#dOVgrV;-D9{BufH8A`>*ehLewE(%LtnCOC2elq zksaG|u=#nfGbrfTU~!)Hy`!NvBjr6#J?X+ailv%9jrenE6`#YK2(9E-gx_7V6*<5r zK0gX7ABDL80EJzp<3I8Fb=Usc(OAh@v!)uw6uvNAn0#-jtB8zDM=i&0nH>68jrfXj zbE@W8;|!6n3V1l<^RD~j(Um?a>TU}<6X@l zsxfa(q`+;Rx99GXPc;7k3{M7|;yX*5nM@)nL+(}TDw4p(fijGP*i_l)kVwx2@C7wZ z?8^4hTOR49>sof8pxfN3Kiyzd{=I7d0G${7^k2@rTS&T8z>?|Edk&w8uFFi+Alkp_ zOvH|@l4~hZv7~W#=yyBR^kGe!SmKSOmPJHSlFV=bt}|2dOm-1B*@xQZ9BozrFV~)a zg1GCi5o(%~tKCiJTdVJp7;RPd$F_ayIT^3FN2E85G!?k=P1}?G;S+8A@lU()W{YoZ zC;Lmv8--ZoV$6Lyb^6zwT`;?e{IzA?xZtTAbCKWlsHD?u(%ht?;wQ!nsAdHHJvw%$ z$c62h*`J6O;n&R5Zmpv&fb)U|KLBdfemT>Op&ki}9z58YT{G#N^{yXJw6xq{mSZ)m z50M`%H+RN+dsLUU)==@~Dk?U1pSn1}#TMF8a#D9p?f>_T+ z6s$Eg$p{CiAC)JThxkP_vUX}|VcDn#(BlM6)kQ@mlnvEsOoVr%&8Mj^mGmjkrCT>Z zN7A$B(4lPNNeAOwhCq6ZQwt&g0P7m1CTA*8XEi5>Ew_BqN@-U@vrab1e;VI?ht{KD zy@~v)`Pqx39>yE!)?f3$=A-__wd>^{`|7v07;+h!C$DT%=%pXCE{o6O-YjAna*73_9u}L&#|nV?JChh%wLUmlh{Wn z{nY5*m5-?DmujbKZXSTusWKfjx*SE#m9jnxHs4h|kHV`-r$R%DP2ExnR404qvb090F70UNgoW3wWv#&_w8-D#&O1JA-0-#*osLs z`BT`a)s%FRk>)w*)zf%mRlTydLa{+`isbooMjdL5mb!clMb*X_by(AJ&)21OUK!Lh zTYW8KhfS7Qw>R$`fN*>Fr%ij?jNh>hz`By^zYcV(rLeZK{{Tt3Pb%DDc-hW9 zO%&e&GQY!(E!9efy16?^$sDB>%U9!Pbq9J;en%bg)s%ci)UXL}lpZ((7301jnnl#v zv%KsaoY&BQ6R)(j_=$aKb8QpcZ(dz@WD&u~u^sEnyk~C=+U%QSjZh+GU3Q=tzd!Y(zJF^M!@ZotrHEuhi~OsH#$nj>czl~ zhE_r_2=}a_?sUq_abl4Nc`$ll{{Z!>$<(}yc5gVw2>Za~{vP$t++8X;iqsOPjmJFw zDz(hH+N#@#TzdmbQb@RA+iA11&@Sv`4(kL(k7rz!$8t`2t9rebpQ#{?kU=Rw>tj$k z^ggx4X|qco3n@-=dFx#zo}d&cCvySLImh_aDBn`1`7{wU+skKAu95^FGYqK%`Bt1t z0&e?DhZs0xfu8==0&6k--RfIB@%-tFbsfPw5;A&&)BN|Q(<7N~YD*iUqD0C_^;`o` zOv@@cxZNJ%f_H8mutqu@il)~yEJPU+IRkL0e)qmV8krrVic63|aJ=V{pXE!Gu50L0 zz86p`$i$RF8*m(j`hGPEK?_VKC?(0=^0o-iwQIp6{goDc$jo!f5szx6edSq&lFmJj zr{_{W@IId3T4-}>{#^9?I+=Tm6o%x>Iv10(UOv7WoLp}4q$GEvHce(46V^&MO6?aGH-;AXNeH3L5q0DZ+& zyE00E2Hc~jde({rIX2BZjb7jcCe+3s?z0b-s^y|haBA;Zujq)?{F+Znzy`{^n ziF~QTOBOhg9zPo6Cce9YwbE(oFJ6VGBV5=brfYtsffrllx-iTiZtIWS?<*7C+uK zg)p7tF4?B#tYh@Tx|-KIqUqjKp-$zvYbAIT+g* zjZo}7jQSev{2itw`dN}iXw*9{;P}OFO5DdjCE6A}ui^RK@aIiz08QoAa50mV?L|r8 zRgFF#X^RsxC))0ImTdn3&pz~5C0~u6o*mwleGfeSpmmnhz9{N3i+%`3^8vv;eJjkh zuMu2b-x83>hhnZ>vw$nqe`uRTxcH59NCfXtN46`?wGA5LO-Y&vWO%lWC?BPED9O`Z zk3OWR#-nX(sY=>d+Xu@?`<#fY(YOU#%OEE zAr$szn`;gXZLxx@ZpQAT`g2Vhqs;BKgSqTSBkBC>GTz?eX#{2lZ%%q*u1#lluM{mC zqmz^*aY-iiDp8Dd1(3GaFSCQUka_ez)iGvc^EW4{2a16$FH}e-g@dDIx_AC`@RxB; z5Wv7O`A#~YN^4Eb+;6dB7V^MS+m}2X)HetHE!dpyso=D^xRe-e*^dVvpGtl1pLkFg zwq$h~9^!_WlS%4ULK%Yt*SDo?Y4XW$%HsrbJ!>w)%IL^uYgvqE<#I8>?0-7YlHUFp z_M2%iIubgH(kke}s@Fzn$#WdBZB7{S1v&=-yuUD?Q=aviV{3k9%3DZr&1nAsXKHc8 zjBO-4i6f;~BkW@4lhvA&(rzVh27p1MyCK&9vaa#nIx0Su$iz1F^bTC33!_3 z_(c|za!Yg=6_ldxZ%(XScQZu$hSA9GYCMaXhS z26NlgSGq5TJWC>6xY6!*t6=ay#<2C@1Z#SlHLSWtz-)#D0g<1^oKp!nt!{Yjt2o?@ zpsbkZ9Sw95=+Rthi!>5uKt5rg(z<)k0P4y-i1c|@XaLRt`In|oHKU<;55+NDsEVs-pGx&3;13xQfuLRwz<-TZo4_70Rbq5Y+aY8`1yLuG}h4Qz6fMHC2k zN~7yuVdIZD-xr?m&3<+ww?XOcUV-rw!(J@YG^e^6eavVM8Nz38W^(!12<`=G%I~QPQE|HHPo@>QwTKl^qZ^oyn~uNI zyKN6vxf)B`Dwypuzyu?7ry!EY(~MwxoYxulO+q%3-WUt{jtBr}80tTjbebik*48Q~ zX<@kBcCLDofBj#TZ%PfzV~Y_esPDP%o(gq;hq_@^bzikyfEWOJr==902U%0$?wGSF zR~J_~1Y`br(Ogx(h|gCG{22NjPl@~$qidS{*Ls$ReLSrz5pxq201llP6Pn1>J{IYB zEF{zPfg2NsH!@74A3#oeQ7`(}{{VQ?X{yqSvNN6zoZD<&L*c-;3d^QI0b#%F(Y&Xx zxybtdm6@w}LJd5ddk+I%-;LGYSc zAFdQiN9!*?ja<6$Etkl-O7-c!athc(qvOWSLE7O;scb2Fa3vG|pF zWGhESii-4~Vi>j=^mHpZPm;~}i>(;Z!g*-}vF}{_sjh!q_+4vr5c0e+dv9?e!^>pGG46Jpui=W`qL;L0 ziwzWb*NMIp_~z1eZ8J%})FEy%uz7B{$iW!^{eMAKf8k$zN|q#wUkU0V6oLSZaC6D) z{&8O4MN+LKSFnp(o-aSc4;&cON8x=#kPk7A4{&+pf1h(%{up@qpfR5dYFQ)^h3G#z z_ZldbXD)(`1s_Uig&Cle4Jp-o2uV zJ+rl}FRP~SbH{Cd9eDcQCL_Zdfd$(uuyi9GJD&A3{6F#O`A>#*77Bh+P-h>VdgT>g zSeIg65)IzxooU|>yj2_^w}!9P_{b^$0N1ORehBevTf`T`_r;e#!T$i)uI7rRi<;c{2dJ(NinWN6A>g3;o$arLA)8iBLQBC3RVv8CA;GUe@ccSPn+6)+kC7~UzGm1e^O^&7ZCx0`PaA6M6nKC3Z;Wom6Kp-(h;mhQj0<4N71CHab zKDD+y3F9bZl2y6DTvs)5S4F<9z8wN1?+89L^W>mDc>ezk|D=d3o^LNe?X}6y4{U zPpo%(R(0^+8!yHgiya!bvOQpWrm;as%B1q!F&~A?9H)y44n(m}`N7nF(&fY^wFvF` z967@39$XVoeEIXW^~{lNFSVPL1Ug&SNIZycjm>|p*`UDbKDS_d$lf1sC%sr1^`T+U w>3I$7rW()x^Y4V>y}MNl<0pvEIBxQfVFo7$zv$tAZ$Mt~boFyt=akR{02nE2UjP6A literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/ClickableMap.html b/docs/kag3doc/contents/ClickableMap.html new file mode 100644 index 0000000..76ad3d3 --- /dev/null +++ b/docs/kag3doc/contents/ClickableMap.html @@ -0,0 +1,181 @@ + + + + + + + クリッカブルマップを使おう + + + + + + + + +

クリッカブルマップとは +

+ クリッカブルマップは、直訳すれば「クリック」できる「地図」で、一つの画像の中にいくつかの「領域」を定義して、それらをマウスなどでクリックして選択できるようにする物です。
+
+ 吉里吉里/KAGでは、本体の画像の他に「領域画像」と「領域アクション定義ファイル」という2つのファイルを使ってこれを実現します。
+
+

領域画像とは +

+ 領域画像は、本体の画像と同じサイズの 256 色の画像です。フルカラーの画像ではいけません。JPEG はこのような用途には向かないので、 PNG か BMP などの、256 色を使用できる画像形式を使います。
+
+ 領域画像とは、本体の画像の各領域に対応して、各領域を任意のパレットインデックスで塗りつぶした物です。たとえば、
+
map1.pngmap1_p.png
本体の画像(左)と領域画像(右)

 のようなものです。左が本体の画像で、この例では関東地方の地図です。右が、各都県に対応して各領域を塗りつぶした「領域画像」です。
+ 領域画像は、各領域を任意の ( それぞれ異なる ) パレットインデックスで塗りつぶした物です。上の例で各領域に書いてある数字はそのパレットインデックスです ( 説明のために入れてあるので本来は必要ありません )。パレットインデックス 0 ( 図では海 ) で塗りつぶされた領域は領域としては使われない部分です。
+
+ グラフィック編集ソフトなどには 256 色の画像で「パレットインデックス」を扱える物がありますが、そのようなソフトを用いて編集する必要があります ( パレット番号とか、カラーインデックス、インデックスカラー、色番号など名称は異なる場合があります )。このとき、重要なのはパレットインデックス ( 色番号 ) であって、色ではありません。吉里吉里は領域画像を見るとき、色ではなくてそのパレットインデックスのみを見ます。色は、編集時に他の領域と見分けが付きやすいように、適当にばらけた色をつけておいてかまいません。
+
+ 領域画像のファイル名は、通常、本体の画像のファイル名 ( 拡張子を除く ) に _p をつけたファイル名です。たとえば、本体の画像の名前が map.png であれば、領域画像のファイル名は ( PNGで保存する場合 ) map_p.png にします。
+
+

領域アクション定義ファイルとは +

+ 領域アクション定義ファイルとは、クリッカブルマップの各領域の振る舞いを定義したファイルです。
+ 拡張子は .ma で、通常は本体の画像ファイルと同じファイル名にします。たとえば、本体の画像の名前が map.png であれば、領域アクション定義ファイルのファイル名は map.ma にします。
+
+ 領域アクション定義ファイルはテキストファイルですのでテキストエディタで編集します。
+
+ 領域アクション定義ファイルは、一行ごとに、「領域番号 : アクション」を領域の数だけ書いた物です ( コロンは半角 )。
+ たとえば、上記の地図の例だと、
+ +
+11: hint="埼玉"; storage="maptest2.ks"; target="*m11";
+8: hint="群馬"; storage="maptest2.ks"; target="*m8";
+7: hint="栃木"; storage="maptest2.ks"; target="*m7";
+9: hint="茨城"; storage="maptest2.ks"; target="*m9";
+10: hint="千葉"; storage="maptest2.ks"; target="*m10";
+12: hint="東京"; storage="maptest2.ks"; target="*m12";
+2: hint="神奈川"; storage="maptest2.ks"; target="*m2";
+3: hint="山梨"; storage="maptest2.ks"; target="*m3";
+1: hint="静岡"; storage="maptest2.ks"; target="*m1";
+4: hint="長野"; storage="maptest2.ks"; target="*m4";
+5: hint="新潟"; storage="maptest2.ks"; target="*m5";
+6: hint="福島"; storage="maptest2.ks"; target="*m6";
+
+
+ + のような記述になります。領域番号と、上の例の領域画像のパレットインデックスは一致しています。
+ 「アクション」 ( コロンより後の部分 ) は KAG の文法からは離れ、TJS の文法で書きますが、難しい物ではありません。
+ 「名前=値;」の形式で必要なだけ書くというものです。セミコロンを忘れないようにしてください。
+
+ 使用できる名前には以下の物があります。
+
+
storage, target, onenter, onleave, hint, exp, countpage
+
     これらはすべて link タグと同様の機能を持っていますが、すべて、属性の値を " " ( ダブルクオーテーション ) で囲んで指定してください ( 上記の例のように )。" " で囲まないとエラーになったり、正常に動作しなかったりします。
+
cursor
+
     領域の上にマウスカーソルがある場合のマウスカーソル形状を指定します。cursor タグでの指定に似ていますが、 cr で始まるマウスカーソル定数を用いる場合は、& をつけずにそのまま書きます ( たとえば cursor = crSizeAll; )。マウスカーソルのファイルを指定する場合は " " ( ダブルクオーテーション ) で囲んで書きます ( たとえば cursor = "wagtail.ani"; )。

+ 領域アクション定義ファイルでは、領域番号 0 は特別な指定をするために使用されます。現バージョンでは autodisable が使用可能です。たとえば、 +
+0 : autodisable=false; +
+ + とすると、クリッカブルマップをクリックしても、クリッカブルマップが無効な ( クリッカブルマップとして操作できない ) 状態になりません。通常はこの指定を行わなくて OK です。
+ この指定を行わなかったり、領域アクション定義ファイルに領域番号 0 の指定がなかったりすると、クリッカブルマップをクリックしたとき、再び image タグか mapaction タグで領域アクション定義ファイルが読み込まれるまで、クリッカブルマップは無効な ( クリッカブルマップとして操作できない ) 状態になります。
+
+
Note
+ アクションが何も定義されなければ、その領域は無視されます。たとえば、条件によって領域を使用可能にしたり不可能にしたりしたい場合は、TJS の if 文を使って、
+11: if(f.flag == 1) { hint="埼玉"; storage="maptest2.ks"; target="*m11"; }
+ のように記述することができます。この場合は、f.flag が 1 の場合のみに、「hint="埼玉"; storage="maptest2.ks"; target="*m11";」というアクションを定義する、という意味になります。

+
+ +

クリッカブルマップを使ってみる +

+ クリッカブルマップを使ってみます。
+ 上記の例を、本体の画像を map1.png、領域画像を map1_p.png、領域アクション定義ファイルを map1.ma とします。
+ image タグは、読み込もうとした本体ファイル名をもとにして、ファイル名に _p がついたファイルと、拡張子が ma のファイルを探して、それぞれ領域画像と領域アクション定義ファイルとして読み込みます。
+ ですので、通常は、クリッカブルマップを使用可能にするためには image タグのみを使います。
+
Note
+     個別に領域画像や領域アクション定義ファイルを読み込みたい場合のために、それぞれ mapimage タグと mapaction タグがあります。

+ たとえば、maptest.ks に以下の内容を書いたとします。
+ +
+*start
+@image layer=0 page=fore visible=true storage=map1
+@position left=400 width=220
+@wt
+クリッカブルマップのテスト。
+@s
+
+
+ + これだけで、クリッカブルマップが使用可能な状態で s タグで停止します。
+
+
clickable.png
実行してみた画面


+ クリッカブルマップがクリックされたときにジャンプするシナリオも記述しなければなりません。たとえば、maptest2.ks に以下のような内容を書きます。
+ +
+*m11
+@cm
+そこは埼玉です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m8
+@cm
+そこは群馬です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m7
+@cm
+そこは栃木です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m9
+@cm
+そこは茨城です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m10
+@cm
+そこは千葉です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m12
+@cm
+そこは東京です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m2
+@cm
+そこは神奈川です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m3
+@cm
+そこは山梨です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m1
+@cm
+そこは静岡です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m4
+@cm
+そこは長野です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m5
+@cm
+そこは新潟です。[l]
+@jump storage="maptest.ks" target="*start"
+
+*m6
+@cm
+そこは福島です。[l]
+@jump storage="maptest.ks" target="*start"
+
+
+ +
+
Note
+ (非表示、表裏に限らず) KAG 内にクリッカブルマップを使用した画像があると、キーボードのカーソルキーでマウスの移動をエミュレーションするモードに切り替わります。そのため edit タグのようなキーボードを用いるほかの機能が正常に使用できなくなります。
+ 使い終わったら mapdisable タグで無効化するか、あるいはそのレイヤに別の画像を読み込んだり freeimage タグを使用したりしてクリッカブルマップを破棄すれば、通常のキーボードの操作モードに戻ります。

+
+ + + + diff --git a/docs/kag3doc/contents/Debug.html b/docs/kag3doc/contents/Debug.html new file mode 100644 index 0000000..d8d09fc --- /dev/null +++ b/docs/kag3doc/contents/Debug.html @@ -0,0 +1,75 @@ + + + + + + + デバッグをしよう + + + + + + + + +

デバッグ支援機能 +

+ 吉里吉里本体が提供するもの、KAG が提供するものなどを含めて、いくつかのデバッグ支援機能があります。
+
+

デバッグメニュー +

+ Config.tjs の debugMenu.visible を true にすると、「デバッグ」メニューが表示されるようになります。このメニューの項目を説明します。
+
+
シナリオの再読込み
+
 現在のシナリオファイルを再読込します。直前に通過した「セーブ可能なラベル」から再び実行が始まります。致命的なバグが発生したあとなどは正常に再読込ができない場合もあります。
+
コントローラ
+
 吉里吉里本体の「コントローラ」を表示します。Shift+F1 でも表示できます。このコントローラに並んでいるボタンのうち、一番右側の赤い●に×の付いたマークを押すと吉里吉里を終了することができます ( 致命的なバグの後はまれに終了できない場合があります ) 。
+
コンソール
+
 コンソール ( 後述 ) を表示します。
+

コンソール +

+ コンソールは、吉里吉里や KAG の出力するメッセージが次々と表示される場所です。Shift+F4 などで表示できます。なにかトラブルが起こった場合、このコンソールに問題の解決につながる情報が表示される場合があります。
+
+ また、コンソールの下部には入力欄があり、任意の TJS 式をその場で実行し、結果を確認することができます。
+
+ たとえば、f.flag という変数の内容を確認したい場合、コンソールに
+ +
+f.flag
+
+
+ + と入力して enter キーを押すと、コンソールに
+ +
+15:25:04 コンソール : f.flag = (int)1
+
+
+ + などと表示されます ( これは例 )。このように変数の内容をその場で確認することができます。
+
Note
+ 値の前に表示される (int) は、この値が整数であることを示しています。同様に、(real) は実数、(string) は文字列を表します。(void) は変数が未定義か、void そのものが代入されていることを示します。
+

+
+ また、f.flag に 0 を代入したければ、
+ +
+f.flag=0
+
+
+ + と入力して enter キーを押せば、その時点で f.flag に 0 を代入することができます。
+
Note
+ コンソールは、吉里吉里1では Debug Message Stream ( DMS ) と呼ばれていたものです。

+
+

そのほかのデバッグ手段 +

+ trace タグは、変数の内容をコンソールに出力するタグです。
+ プログラムの応答がなくなった場合、Ctrl + Alt + F12 を2秒間以上押し続ける事で吉里吉里本体を強制的に終了できる場合があります。
+
+ + + + diff --git a/docs/kag3doc/contents/DispBase.html b/docs/kag3doc/contents/DispBase.html new file mode 100644 index 0000000..cff36f7 --- /dev/null +++ b/docs/kag3doc/contents/DispBase.html @@ -0,0 +1,71 @@ + + + + + + + 背景を表示しよう + + + + + + + + +

背景を表示しよう +

+ 背景というのは、要するに文字と前景の後ろに表示されるヤツです。KAG では、(デフォルトでは) 640×480 のサイズの画像を背景として読み込みます。
+
+ ためしに、なにか表示させたい 640×480 の画像を bgimage フォルダにおいてみてください。この画像を bg0.jpg であるとします。KAG の LZH ファイルにはこの画像は入っていないので、適当にどこかから持ってきてくださいね(^^)
+ そして、文字を表示しよう で使用したシナリオを、以下のように変えてみます。
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。
+
+
+ + ここで image というタグを使用して、bg0.jpg を表ページの背景レイヤに読み込んでいます。
+ image タグの storage 属性で指定したファイルを読み込むのですが、拡張子は省略できます。勝手に KAG が探してきます(^^)
+
+ とりあえず実行してみてください。
+
BG_Displayed.jpg
背景を表示した

 で、「表ページ」「背景レイヤ」ってなに?ってことになるのですが・・・
+
+
Note
+ Config.tjs の scWidth および scHeight で、画面サイズに 640x480 以外の画面サイズを指定した場合は、もちろんその画像サイズに合った背景画像を指定してください。
+

+
+

KAG のレイヤ構成 +

+ KAG というか吉里吉里は、画面はすべて「レイヤ」と呼ばれるものを重ね合わせて構成されます ( Photoshop 等のレイヤーと似ています; レイヤーをレイヤと書くのは作者のクセ )。
+
+
+ たとえば、以下のような表示になっていたとすると・・・
+
+
Layers.jpg
表示例


+ レイヤ構成は以下のようになっています。
+
+
LayersDesc.jpg
レイヤ構成


+ KAG では、背景レイヤ base がまず一枚あって、一番奥(下)に表示されます。それより手前(上)に3枚の前景レイヤ 0 1 2 があります。さらにその手前(上)に2枚のメッセージレイヤがあります。すべての前景レイヤと、メッセージレイヤ 1 は初期状態では非表示です ( 非表示のレイヤは layopt タグで visible=true とすることで表示することができます。前景レイヤの場合は image タグでも表示することができます )。
+ これと同じレイヤ構成が KAG では2組あって、それぞれ表ページ fore 、裏ページ back と呼ばれています。表ページは画面に表示されますが、裏ページは画面に表示することはできません。裏ページは、主にトランジション(画面切り替え)用に、画像を一時的においておくために使います。
+
+ image タグの page 属性及び layer 属性で指定していたのは、それぞれ、表ページが裏ページか ( fore / back )、背景レイヤか前景レイヤか ( base / 0 / 1 / 2 )かを指定したわけです。
+
+
Note
+ 前景レイヤ 3 枚、メッセージレイヤ 2 枚という数は、Config.tjs のデフォルトの設定です。
+ メッセージレイヤや前景レイヤの初期の枚数は Config.tjs の numCharacterLayers および numMessageLayers で指定できるほか、laycount タグで実行中に変更することもできます。
+

+
Note
+ 「背景」「前景」「表」「裏」はそれぞれ混乱の元となりやすいですが、page 属性に指定する fore は「表画面」を表すもので、「前景レイヤ」を表すものではありません。
+ 表ページか裏ページかは page 属性でそれぞれ fore, back で指定し、前景レイヤの場合は layer 属性に 0 1 2 ・・・を指定し、背景レイヤの場合は base を指定します。
+

+
+ + + + diff --git a/docs/kag3doc/contents/DispLayer.html b/docs/kag3doc/contents/DispLayer.html new file mode 100644 index 0000000..3885bac --- /dev/null +++ b/docs/kag3doc/contents/DispLayer.html @@ -0,0 +1,97 @@ + + + + + + + 前景を表示しよう + + + + + + + + +

前景とは +

+ 前景とは・・・要するに、人物の立ちポーズなど、背景とメッセージの間に表示されるものです。KAG では標準で 3 つまで重ね合わせて表示できます ( カスタマイズすればもっと重ね合わせて表示できます )。
+
+ 前景は、人物などの形に画像を切り取って表示するために、マスクあるいはカラーキーという手法を使います。KAG では、マスクを使って前景を表示する方法と、カラーキーを使って画像を表示する方法の両方、PNG や ERI や TLG5/TLG6 画像のように画像そのものにアルファチャネルや透過情報を含むことができる場合はその画像固有の方法を用いて透過させることができます。
+
+

カラーキーを使った前景 +

+ カラーキーとは、透明になるべき部分を特定の一色で塗りつぶし、その色の部分が透明になる、というものです。
+ これは画像が フルカラーの場合と 256 色や 16 色の場合で少々扱いが違います。
+
+ フルカラーの場合は、つまり「つかわなさそー」な色を「抜き色」( カラーキー ) として、透明にしたい部分をそれで塗るわけです。使われなさそうな色としては、真マゼンダ (r,g,b)=(255,0,255) や、真緑 (r,g,b)=(0,255,0) がよく使われるようです。
+ でもそうするとマゼンダや緑を表現したい場合はどうするの?ということになりますが、(r,g,b)=(254,0,255) や (r,g,b)=(0,254,0) という色を使えば KAG では別の色として処理されるので OK です。
+
+ 256 色の画像や 16 色の画像では、ある一つのパレットインデックスを「透明色」として使います。このパレットインデックスで塗りつぶされた部分が透明になるのです。
+
+
Note
+ PNG などの画像形式の場合は保存時に透明色(カラーキー)を指定できるようなソフトがありますが、そのようなソフトで出力された PNG 画像も扱うことができます。

+
+
ButtonGlyphImageList.png
抜き色の例

+

マスクを使った前景 +

+ KAG では、普通の前景画像とは別に、マスク画像と呼ばれるものを用意して、そのマスク画像に従って前景画像を切り抜くようにして表示することができます。
+
+ マスク画像は、前景画像と同じサイズの 256 階調グレースケールの画像で、輝度がそのまま「不透明度」を示します。つまり、輝度 0 の部分は「全く透明」で輝度 255 の部分は「全く不透明」です。128 ぐらいのところは「半分程度の透明」ということとなります。表示されるべき部分が白くて、透明な部分は黒いという画像になります。
+ マスク画像は必ず 256 階調のグレースケール ( 256 色画像 ) で保存してください。フルカラーや16色で保存すると正常に表示されません。
+ マスク画像は不透明度を保持する画像ですが、これに対して前景画像は色の情報を保持する画像となります。この場合の前景画像をとくにメイン画像と呼んでいます。
+
Note
+ PNGやERI、TLG5/TLG6 形式の画像の場合は、一つの PNG/ERI/TLG5 ファイル内にアルファチャネル ( つまるところのマスク画像 ) を含めることができます。
+ そういう画像を出力できるソフト ( PNG では GIMP 等 ) をお持ちの方は、それを使えばマスクファイルを別に用意する必要はありません。また、吉里吉里 SDK 付属の画像フォーマットコンバータを用いればこれらの画像形式の変換を簡単に行うことができます。

+
+ マスク画像は、メイン画像のファイル名に _m をつけた名前で保存します。たとえばメイン画像が hogehoge.png であれば、そのマスク画像は hogehoge_m.png となります。この、メイン画像とマスク画像の分離した形式をメイン/マスク分離形式と呼んでいます。
+
+ マスク画像を使う利点は、前景を重ね合わせるときに自由に不透明度を指定できるのと、適切に処理したマスク画像とメイン画像を使えば、重ね合わせるときに、その縁をきれいにアンチエイリアスのかかった状態で重ね合わせることができると言うことです。
+
ayari.pngayari_m.png
マスク例 ( 左がメイン、右がマスク )

+

前景を表示しよう +

+ では、これに従って適当な画像を用意してください ( 画像は各自でご用意願います... )。まず、カラーキーを使った前景の表示方法から・・・。
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+[image layer=0 page=fore storage="as" visible=true key=0xff00ff left=340 top=100]
+こんにちは。
+
+
+ + 太字で示されている部分が前景画像を表示している部分です。image タグは、背景を表示しよう でも出てきました。画像を読み込むためのタグです。layer に 0 として、前景レイヤの 0 番を指定しています。
+ ここで、 key という属性があります。key 属性は、抜き色を指定するための属性です。このように 0xRRGGBB という形式で 16 進数で抜き色を指定すると、RR(赤) GG(緑) BB(青)で塗られた部分を抜き色として透明にします。たとえば、key=0xff00ff では (r,g,b)=(255,0,255) つまり真マゼンダの部分を抜き色として透明にするという指定になります。もし、key=255 と指定すると、key には 255 で示されたパレットインデックスがカラーキーになります。詳しくは タグリファレンス を参照してください。
+
+ storage="as" としてありますが、これは as という名の画像を読み込むという指令です。拡張子は指定しなくてかまいません。この場合は as という名のファイルのうち、読み込み可能な画像を自動的に探して読み込みます。
+
+ visible=true としているのは、KAG の前景レイヤは、標準では全部非表示なので、ここで表示する設定にしないと表示されないのです。
+
+ left=340 top=100 としているのは、前景レイヤの左端位置と上端位置を指定しています。前景レイヤは、image タグで読み込むときに表示位置を指定できます。
+
Note
+ PNG 画像中の表示オフセット指定は無視されます。

+
+ また、マスク画像を使うとなると以下のような指定の仕方になります。
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+[image layer=0 page=fore storage="asm" visible=true left=340 top=100]
+こんにちは。
+
+
+ + といっても key 属性が無いだけですね。
+ この例の場合、読み込まれる画像は asm_m という名の画像がマスク画像として、asm という名の画像がメイン画像として読み込まれます。
+
+ PNG のように画像中にアルファチャネル情報やカラーキーを持つことのできる画像形式を用いる場合は上記の例と同じで、key 属性を指定する必要はありません。
+
LayerDisplayed.jpg
実行結果

+ + + + diff --git a/docs/kag3doc/contents/Distribute.html b/docs/kag3doc/contents/Distribute.html new file mode 100644 index 0000000..e990acb --- /dev/null +++ b/docs/kag3doc/contents/Distribute.html @@ -0,0 +1,92 @@ + + + + + + + 配布しよう + + + + + + + + +

プロジェクトフォルダの自動実行 +

+ 吉里吉里は起動時には、プロジェクトフォルダを選択する画面がでます。これを出さずにプロジェクトフォルダを吉里吉里の起動と同時に実行するには以下の方法があります。
+
+
+
プロジェクトフォルダを data に改名する
+
 プロジェクトフォルダの名前を "data" にして、吉里吉里実行可能ファイル ( krkr.eXe ) と同じフォルダにおくと、吉里吉里起動時に自動的にそのプロジェクトフォルダを実行するようになります。
+
Releaser で data.xp3 というファイルを作る
+
 後述の Releaser で data.xp3 という名前で xp3 アーカイブファイルを作り、吉里吉里実行可能ファイルと同じフォルダにおくと、吉里吉里起動時に自動的にそのアーカイブを実行するようになります。
+
Releaser で実行可能ファイルを作成する
+
 Releaser で実行可能ファイルを直接作成することができます。
+ しかしこの場合は後述のパッチを配布するときに少々面倒だったり、一部のウィルス対策ソフトウェアとの相性が悪いので、単一の実行可能ファイルを作成することがそれほど強い要求でなければ、上記の data.xp3 を作成する方法をお勧めします。

+ Releaser の使い方は 吉里吉里 SDK ヘルプを参照してください。
+
+

配布ファイル +

+ 実際に配布先でゲームを動作させる場合に含めなくてはならないファイルやフォルダがいくつかあります。
+
+
+
吉里吉里実行可能ファイル
+
 Relesaer で実行可能ファイルを出力しなかった場合、実行可能ファイルを共に配布する必要があります。実行可能ファイル ( krkr.eXe ) は名前を変更してもかまいません。また、吉里吉里設定 ( krkrconf.exe ) でアイコンを変更することもできます。
+
拡張子が cf のファイル
+
 吉里吉里設定 (krkrconf.exe) で設定を行うと、吉里吉里実行可能ファイルと同じ名前で、拡張子が .cf になったファイルが出力されます。ここには -datapath オプションなどの重要なオプションが記述されていますから、これをともに配布する必要があります。
+ 特にこのファイルが無いならば配布する必要はありません。
+
+
krmovie.dll
+
 ゲーム内で MPEG によるムービーを再生する場合は共に配布しなければなりません。このファイルは吉里吉里の実行可能ファイル ( Releaser で出力した実行可能ファイルも含む ) と同じフォルダに設置しなければなりません。
+
krflash.dll
+
 ゲーム内で Flash コンテンツを再生する場合は共に配布しなければなりません。このファイルは吉里吉里の実行可能ファイル ( Releaser で出力した実行可能ファイルも含む ) と同じフォルダに設置しなければなりません。
+
そのほかのプラグイン
+
 吉里吉里の実行可能ファイルと同じフォルダか、吉里吉里実行可能ファイルのフォルダにある plugin フォルダに設置しなければなりません。
+ プロジェクトフォルダ内にプラグインを配置することも出来ますが、推奨されません。出来れば吉里吉里の実行可能ファイルと同じフォルダか、吉里吉里実行可能ファイルのフォルダにある plugin フォルダにおいて配布した方が良いです ( プロジェクトフォルダ内にプラグインを配置し、アーカイブ内に含めると CD-ROM 上から直接実行する際などにエラーになります )。
+
セーブデータフォルダ
+
 吉里吉里実行可能ファイルと同じフォルダにセーブデータを作成する場合をのぞき、セーブデータを格納するフォルダも共に配布しなければなりません。とくに lzh などで圧縮する場合、空のフォルダは展開されない場合があるので、そのようなアーカイブ形式で配布する場合は、セーブデータのフォルダにダミーのファイルを入れておくとよいでしょう。

+そのほか、吉里吉里 SDK ヘルプ「ファイル/フォルダ覧」も参考にしてください。
+
+

エンドユーザ向け設定ツールの配布 +

+ エンドユーザが吉里吉里の設定を簡単に行えるようにするために、エンドユーザ向け設定ツール エンジン設定.exe をゲームと共に、あるいはゲームと別に配布することができます。
+ これらの使い方については吉里吉里 SDK ヘルプを参照してください。
+
+ 配布容量に問題がないなら、このツールはゲームなどとともに配布することを強くお勧めします。
+
+

ファイル破損チェックツールの配布 +

+ インストール時やインストール後に破損したファイルを検出するためのツールである「ファイル破損チェックツール」 ファイル破損チェックツール.exe をゲームと共に、あるいはゲームと別に配布することができます。
+ これらの使い方については吉里吉里 SDK ヘルプを参照してください。
+
+
+

パッチ配布 +

+ ゲームを配布した後、修正を行う必要が生じた場合、修正のあったファイルのみを「パッチ ( つぎはぎ ) 」という形で配布することができます。
+
+
+
吉里吉里実行コアのパッチ
+
 吉里吉里実行コアに修正の必要が生じた場合です。
+ Releaser で実行可能ファイルではなく、xp3 形式アーカイブを出力した場合は、新しい吉里吉里実行可能ファイルを古い実行可能ファイルの上に上書きするだけです。
+ Releaser で実行可能ファイルを出力した場合はやっかいです。以下のことを行う必要があります。
+
  1. それまでの実行可能ファイルを data.xp3 に名前を変える
  2. 新しい実行可能ファイル ( 改名されていてもかまいません ) をそのファイルと同じフォルダにコピーする
  3. その新しい実行可能ファイルを実行するようにする
+
プロジェクトフォルダ内のパッチ
+
 KAG は、吉里吉里実行可能ファイルと同じフォルダに patch.xp3 というファイルがあった場合、このファイルの中身を優先的に見に行くという機能があります。
+ この patch.xp3 を作成するには、修正のあったファイルや、追加されたファイルのみを一つのフォルダにまとめ、Releaser でそのフォルダを指定して patch.xp3 ファイルを作成します。
+ また、patch2.xp3 や patch3.xp3, patch4.xp3 ・・・のように、patch2.xp3 以降のファイルがある場合は、それらも読み込まれます。これらのファイルや、元々配布されていた ( パッチではないもとの ) ファイルの中に同名のファイルがある場合は、数字の大きいパッチファイルの中のファイルが優先されて使用されます。patch2.xp3, patch3.xp3, patch4.xp3 ・・・のならびに欠番があった場合はそこでパッチ用アーカイブを探すのをやめてしまいますので注意してください。
+

トラブルシューティング +

+ エンドユーザ向け設定ツールを配布した場合は、ユーザ自身である程度のトラブルシューティングを行うことができます。
+ また、吉里吉里設定でコンソールのログを出力するようにしておくと、トラブル時の非常に有用な解析資料となります。コンソールのログは、栞の保存先ディレクトリに krkr.console.log として存在します。
+
+

著作権等 +

+ SDK 付属の license.txt は必ずお読みください。
+
+ + + + diff --git a/docs/kag3doc/contents/Diverge.html b/docs/kag3doc/contents/Diverge.html new file mode 100644 index 0000000..b4dfeac --- /dev/null +++ b/docs/kag3doc/contents/Diverge.html @@ -0,0 +1,128 @@ + + + + + + + 選択肢を使おう + + + + + + + + +

ラベルを定義する +

+ さて、選択肢を使う前にラベルの説明をしなければなりません。
+ 選択肢を選択したら、選択先にシナリオの制御が移らなければなりません。そのときの制御の移動の目印となるのがラベルです。
+
+ ラベルは、行の先頭に * のついた行です。いままでのサンプルでも出てきていましたね。たとえば・・・
+ +
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。
+
+
+ + となっていました。この場合、ここで *start という名前のラベルを定義したわけです。じゃあ | (縦棒) 以降の "|スタート" ってなに、って事になりますが、それについては別の場所 ( → セーブ・ロードに対応させよう ) で説明します。| 以降は書かなくてもかまいません。
+
+ ラベルの名前には任意の物を指定できますが、半角英数のみにしておいた方が無難でしょう。また、ラベル名に半角スペースは使わないでください。
+
+ ラベルの機能には、このように制御の移動の際の道しるべになる以外に、セーブ・ロードの位置にもなるという重要な機能があります。これも | (縦棒) の意味と一緒に別の場所でお話しいたします。
+
+

選択肢を使ってみる +

+ KAG では選択肢というよりもむしろハイパーリンクに近い考え方で選択肢を実現します。
+ 選択肢を使うには linkendlink というタグを使います。この2つのタグで選択肢となる文章を挟むと、そこがマウスやキーボードで選択可能になります。マウスでクリックされたり、キーボードで Enter キーが押されると、該当する link タグに書かれた target 属性のラベルにジャンプします。
+ また、選択肢待ちや、シナリオの終了など、動作を停止したい場合は [s] タグを書きます。メニューから「次の選択肢まで進む」を選ぶと、この [s] タグが来るまでノンストップでシナリオを実行します。
+ これらを使って、以下のように記述することができます。target= の後の * (アステリスク) は必要ですので忘れないようにしてください。また、| (縦棒) 以降は、target の後に指定するときには必要ありません。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+[link target=*select1]選択肢1[endlink][r]
+[link target=*select2]選択肢2[endlink][r]
+[link target=*select3]選択肢3[endlink][r]
+[s]

+
+*select1
+選択肢1が選択されました。[l]
+[s]
+
+*select2
+選択肢2が選択されました。[l]
+[s]
+
+*select3
+選択肢3が選択されました。[l]
+[s]
+
+
+ + これをこのまま実行させると、選択肢を選択しても選択肢が消えません。
+ 消すには、通常ラベルの次に [cm] を書きます。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+[link target=*select1]選択肢1[endlink][r]
+[link target=*select2]選択肢2[endlink][r]
+[link target=*select3]選択肢3[endlink][r]
+[s]

+
+*select1
+[cm]
+選択肢1が選択されました。[l]
+[s]
+
+*select2
+[cm]
+選択肢2が選択されました。[l]
+[s]
+
+*select3
+[cm]
+選択肢3が選択されました。[l]
+[s]
+
+
+ +
+
Diverge.png
選択肢の例


Note
+     選択肢は一回選択されると、新しい選択肢が表示されるか、unlocklink タグが実行されるまでは選択することはできません。
+     また、すでに画面に表示されている選択肢を選択不能にするために locklink タグがあります。
+     通常の記述ではこのことは気にする必要はありません。
+

+
+

2つ以上のシナリオファイル +

+ 管理上、シナリオファイルを2つ以上に分けたい場合があるとおもいます。
+ 答えは簡単で、link タグに storage 属性をつけるだけです。たとえば、scn2.ks というシナリオを用意して、そこの *scn2start というラベルにジャンプするには・・・。
+ +
+[link storage="scn2.ks" target=*scn2start]scn2.ks の scn2start[endlink]
+
+
+ +
+と記述します。この選択肢がクリックされると、scn2.ks が読み込まれ、*scn2start というラベルにジャンプします。
+
+

そのほかのシナリオ分岐に関するもの +

+ ただ単に指定したラベルにジャンプしたいときのために jump タグがあります。
+ また、link タグにはクリックされたときに TJS ( 吉里吉里が直接理解できるスクリプト ) の式を実行する機能などもあります。 + また、button タグは、テキストを選択肢にするのではなく、ボタンとして用意された画像を選択肢にする物です。グラフィカルな選択肢の実現に用います。
+ タグリファレンス を参照してみてください。
+
+ + + + diff --git a/docs/kag3doc/contents/Diverge.png b/docs/kag3doc/contents/Diverge.png new file mode 100644 index 0000000000000000000000000000000000000000..19c24c1aeb4a19849b1be38580214413e53f0f1c GIT binary patch literal 4736 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 H#)H2BA@?-k literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/Folders.png b/docs/kag3doc/contents/Folders.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e39dffe8c91530f9fc3654589cd27410c6d6f3 GIT binary patch literal 2628 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 mnJ&|1x=fepGF_&-ZTTM>(=f)L9dil*0000 + + + + + + 画像形式について + + + + + + + + +

各画像形式の特徴 +

+ 吉里吉里/KAG はいろいろな画像形式を使うことができますが、それぞれ特徴があります。
+
+
BMP 画像
+
 吉里吉里では、無圧縮の BMP のみサポートしています。吉里吉里で使う BMP は RLE 圧縮できませんし、配布するときに圧縮をしようとしてもあまり圧縮率があがらないので、容量という点では大きくなりますが、読み込みが一番高速です。
+
JPEG 画像
+
 JPEG は、(普通は) 不可逆圧縮という圧縮の方法を行います。その特性上、いったん圧縮すると展開しても完全に元の画像に戻りません。具体的には画像のシャープさが失われ、画像の輪郭や鋭いエッジの周りにゴミが出ます。しかし、圧縮率がよく、写真取り込みや風景画などの自然画像では不可逆圧縮の特性によるゴミなどはほとんど目立たないので、背景画像や一枚絵に向いています。前景画像の保存にはあまり向いていません ( マスク画像をもし JPEG で保存するときはグレースケールにしてください )。
+
Portable Network Graphic 画像 ( PNG 画像 )
+
 JPEG とは違い、可逆圧縮を行います。圧縮によってデータサイズは JPEG ほどは小さくはならないのですが、画質は圧縮を行っても劣化しません。CG に適しています。一つの画像中にアルファチャンネル ( 透過度 ) の情報を持たせることができます。
+ また、レイヤトランジション に使うルール画像も PNG での圧縮がいいでしょう。
+
Entis Rasterized Image format 画像 ( ERI 画像 )
+
 主にフルカラー画像用途ですが、可逆圧縮にしてはかなりの高圧縮率での圧縮 ( PNG の 5 〜 7 割ほどのサイズ ) と、その圧縮率にしては高速な展開が特徴です。一つの画像中にアルファチャンネル ( 透過度 ) の情報を持たせることができます。
+
TLG5 画像
+
 TLG5 画像の拡張子は .tlg です ( .tlg5 ではありません )。場所によっては単に TLG と呼んでいる場所もあるかと思います。
+ フルカラーの画像にのみ対応しています。可逆圧縮を行います。一つの画像中にアルファチャンネル ( 透過度 ) の情報を持たせることができます。
+ 圧縮率はさほど高くなく、ファイルサイズは PNG の 3 割増しぐらいのサイズになりますが、高速に展開できるという特徴があります。PNG の4〜5倍ほどの速度で画像を展開することができます。
+
TLG6 画像
+
 TLG6 画像の拡張子は TLG5 と同じく .tlg です ( .tlg6 ではありません )。吉里吉里2 Version 2.21 beta 3 から使用可能になった画像形式で、高い圧縮率と高速な展開速度が特徴です。サイズは PNG より 1〜4割ほど小さく、展開速度は PNG の2倍以上高速です。PNGのようにグレースケールやパレット付きの画像を扱うことはできませんが、フルカラーの画像や、アルファチャンネルつきフルカラーの画像ならば PNG の代用として使用できます。
+ フルカラーの画像にのみ対応しています。可逆圧縮を行います。一つの画像中にアルファチャンネル ( 透過度 ) の情報を持たせることができます。
+

+
+

各画像形式の比較 +

+
+
展開速度
+
 各フォーマットを展開速度的に比較すると大体以下のようになります。
+
+ (早い) BMP > TLG5 > JPEG > TLG6 > ERI > PNG (遅い)
+
+ ちなみに BMP は標準では Releaser は「圧縮する」に分類しますが、この圧縮を行うと展開速度は ERI ぐらいの速度になります。速度が重要な場合は Releaser では「圧縮しない」に分類したほうが良いでしょう。
+ ただし BMP はファイルサイズが大きくなります。最近の PC のハードディスクからの読み込みならばあまり差は無いかと思いますが、古い HDD や CD-ROM からの読み込みなどでは、ファイルサイズが小さい方が読み込み速度が速いことがあるので注意が必要です。
+
サイズ
+
 各フォーマットの圧縮後のサイズを比較すると大体以下のようになります ( もちろん画像や圧縮率の設定によっても変わってきます )。
+
+ (大きい) BMP > TLG5 > PNG > ERI > TLG6 > JPEG (小さい)
+
画質
+
 画質は JPEG のみが不可逆圧縮で他は可逆圧縮なので、以下のようになります。
+
+ (高い) BMP = PNG = ERI = TLG5 = TLG6 > JPEG (悪い)
+

用途別の選定 +

+
+
背景画像
+
 ファイルサイズを気にしないのならば BMP がもっとも高速で、しかも画質の劣化がありません。
+ それについで TLG5 が高速で、ファイルサイズはあんまり気にならないけど、画質も損ないたくないし、まるっきり圧縮しないのも能がない、というときは TLG5 が良いでしょう。
+ ファイルサイズはもうちょっと気になるが、画質は損ないたくないならば TLG6、ERI か PNG が良いでしょう。
+ ファイルサイズがひどく気になり、画質は劣化しても仕方ないならば JPEG が良いでしょう。
+
前景画像(立ち絵など)
+
 これも背景画像と同じことが言えます。
+ ただし JPEG は一つのファイルでは透過情報を扱えないため、メイン/マスク分離形式で扱う必要があります。
+
デモシーン中での画像
+
 特に動的な表現を多様するデモシーンなどでは、展開速度が高速な BMP を用いると良いでしょう( ただしファイルサイズと読み込み時間については上で説明したとおりです )。
+ しかし BMP は大きくなるので、TLG5 で圧縮するというのも良いでしょう。TLG5 は高速に展開できるのでこのような用途には使いやすいと思います。
+ 画質を気にしなくて良いならば、JPEG もよい選択肢です。JPEG の展開は思いのほか高速で、大体 ERI や PNG の半分以下の時間で展開することができます。また、動的な表現に用いる場合は画質の劣化はほとんど気にならないでしょう。
+

アルファチャネルの効用 +

+ 吉里吉里はアルファチャネル(透過度)を持った画像を前景画像として扱うことができます。従来用いられてきたカラーキーによる透過では、完全に透過するか、あるいは完全に不透明かの二つの状態しか扱うことができません。
+ アルファチャネルを用いることにより、透明部分と不透明部分のエッジをなめらかに背景と合成したり、画像中に半透明の部分を作ることができます。
+
+
kiri_a.pngkiri_aa.png
カラーキーによる透過とアルファチャネルによる透過

 左がカラーキー、右がアルファチャネルによる透過です。
+ 透明部分とのエッジを拡大してみるとわかると思います。また、右側ではリボンを半透明にすることができています。
+
+

画像フォーマットコンバータ +

+ 吉里吉里 SDK 付属の画像フォーマットコンバータ ( krkrtpc.exe ) を用いると、画像を簡単に変換することができます。入力には Photoshop データ (PSD) も用いることができます。これにより、Photoshop データから簡単に吉里吉里用の前景画像を作成することが可能です。また、吉里吉里独自の圧縮形式である TLG5/TLG6 にも、このツールで変換を行うことができます。
+ 詳しくは、吉里吉里 SDK ヘルプをご覧ください。
+
Note
+ 現バージョンでは ERI の入力/出力には未対応です。
+

+
+ + + + diff --git a/docs/kag3doc/contents/HistoryOfStore.html b/docs/kag3doc/contents/HistoryOfStore.html new file mode 100644 index 0000000..7edbd15 --- /dev/null +++ b/docs/kag3doc/contents/HistoryOfStore.html @@ -0,0 +1,49 @@ + + + + + + + 通過記録について + + + + + + + + +

通過記録 +

+ 通過記録とは、ユーザが「システム - 前に戻る」を選択することで、一つ前の場面に戻れるように、いくつかのポイントでオートセーブを行うようにする機能です。
+
+ 通過記録を行うには record タグを用いるか、あるいは Config.tjs で recordHistoryOfStore を設定する必要があります。
+
+ 「システム - 前に戻る」のメニューは標準では非表示になっているので、Config.tjs で goBackMenuItem.visible を true に設定すれば表示されます。
+
+ また、「システム - 前に戻る」を選択すればどんどん前に戻ることができるようにできますが、その限度は Config.tjs の maxHistoryOfStore で指定することができます。あまりにたくさん戻れるようにするとセーブデータが巨大化するので注意してください。通過記録は各栞ごとに個別に保存されます。
+
+ ちなみに Config.tjs にも設定がある「ラベル記録」とは別の機能ですのでご注意ください。
+
+

通過記録されるタイミング +

+ record タグを書くと、その時点での状態を通過記録することができます。また、Config.tjs の recordHistoryOfStore の設定によっては自動的に通過記録を行うことができます。
+ ただし、record タグを書いた時点や、recordHistoryOfStore で指定したタイミングですぐに通過記録されるわけではありません。次の「栞を保存可能なラベル」を通過した時点で記録がされます ( この時点で「システム - 前に戻る」 で前に戻れるようになります )。ただし記録されるのは その一つ前の「栞を保存可能なラベル」を通過した時点での状態で、「システム - 前に戻る」を選択すればその位置に戻ることになります。
+
+

record タグを書く位置 +

+ 小規模なシナリオでは recordHistoryOfStore を設定して、自動的に通過記録を行わせると楽かも知れませんが、大規模なシナリオの場合は自動的に通過記録を行わせることはせずに、手動で record タグを書いて、通過記録を行う位置を指定した方が良いと思います。
+
+ 通過記録を、たとえば選択肢が表示される場面で行えば、ユーザが「システム - 前に戻る」を選択すれば、前の選択肢の位置に戻ることができます。
+
+ この場合は、選択肢で停止するための [s] タグの前あたりに record タグを記述すれば OK です。とくに選択肢がいくつも連続するような場面では 手動で 通過記録を行った方がプレーしやすいかも知れません。
+
+ ユーザが「システム - 前に戻る」を選択しても、record タグを書いた、その位置に戻るわけではありません。record タグの直前にある「栞を保存可能なラベル」の位置に戻ります。
+
+ ちなみに、「栞を保存可能なラベル」から次の「栞を保存可能なラベル」までの間にいっさい l, p, s タグがなかった場合は、そこに record タグを記述しても通過記録はされません。「システム - 前に戻る」を選択できるのは l, p, s タグで停止中の場合のみのため、l, p, s タグが無い場所に通過記録を行うと、それよりも前に戻れなくなってしまうためです。
+
+ + + + diff --git a/docs/kag3doc/contents/Intro.html b/docs/kag3doc/contents/Intro.html new file mode 100644 index 0000000..f3e5dc6 --- /dev/null +++ b/docs/kag3doc/contents/Intro.html @@ -0,0 +1,49 @@ + + + + + + + はじめに + + + + + + + + +

はじめに +

+ KAG は Kirikiri Adventure Game の略です。吉里吉里でアドベンチャーゲームやノベルゲームを作るためのスクリプトです。
+ KAG それ自体は、吉里吉里が理解できる TJS(2) スクリプト言語で書いてありますが、KAG が理解するファイルは、シナリオファイルという、文章中に「タグ」(指令) を書き込んだテキストファイルです。
+ シナリオファイル作りは、テキストエディタ上での作業が主となります。敷居はすこし高いかも知れません。しかし、たとえば、HTML をテキストエディタでじかに書くことのできる人であれば、すぐになじめると思います。
+
+ 標準で用意されたタグのみを使用してもそこそこのことはできますが、KAG 自体が TJS スクリプトで書いてあるため、これを改造したり、またはシナリオファイル中に TJS スクリプトを書き込んで直接吉里吉里本体に働きかければ、より別の動作や別の機能を拡張する事ができます。これは 吉里吉里/KAG の大きな特徴の一つです。
+
+
Note
+ KAG 3 以降に対応する吉里吉里本体は 吉里吉里2です。吉里吉里2は吉里吉里1に似せてほぼ1から作り直した吉里吉里で、それに伴い KAG も新しく書き直したものが KAG 3 です。KAG 3 は KAG 3 未満の KAG とシナリオレベルでの互換性を持っていますが、KAG 3 未満のプロジェクトを移植する場合はいくつかの注意点があります。KAG 3 未満からの移植と KAG 3 での新機能 をご覧ください。
+

+
+
Note
+ 吉里吉里本体は TJS というスクリプト言語を解釈することができます。その TJS というスクリプト言語で書かれた KAG は、KAG 用に書かれたシナリオファイルを解釈することができるという構造になっています。そのため、ここでは、とくに KAG に限定して物事を言うときは「KAG」と、また吉里吉里本体に限定して言うときは「吉里吉里」、また両方に関わることであれば「吉里吉里/KAG」という言い方をすることにします。
+ また、TJS スクリプトと KAG シナリオの区別を付けるため、TJS スクリプトを記述したものは「スクリプト」あるいは「スクリプトファイル」、KAG シナリオを記述したものは「シナリオ」あるいは「シナリオファイル」という言い方をすることにします。

+
+

どんなゲームを作れるのか +

+ KAG は元々アドベンチャーゲームを作るためのスクリプトですので、アドベンチャーゲームを作ることができます(当たり前か)。
+ アドベンチャーゲームといってもいろいろありますが、KAG では主に文章を表示し、文章中に設定された選択肢をたどることで物語が分岐する、というタイプのアドベンチャーゲームを作ることができます。
+
+

このドキュメントの著作権等 +

+ このドキュメントの文章やほとんどの画像の著作権は W.Dee が保有します。引用は許可無く行ってかまいませんが、このドキュメント中で使用している画像には他の方の著作物が含まれるため、画像そのものを流用したり、画像を含む引用を行う場合は W.Dee に連絡を取ってください。
+
+サポートやダウンロードは以下のページで行っております
+吉里吉里/KAG ダウンロードページ : http://kikyou.info/tvp/
+
+ + + + + diff --git a/docs/kag3doc/contents/LayerDisplayed.jpg b/docs/kag3doc/contents/LayerDisplayed.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b47834a3f4e7e32b57e01d7c96e88265d65bfa9 GIT binary patch literal 22984 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/Layers.jpg b/docs/kag3doc/contents/Layers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a76f00a377d23e0c4f49ab2cde63788db8504d2 GIT binary patch literal 27475 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/Letter.html b/docs/kag3doc/contents/Letter.html new file mode 100644 index 0000000..c3a6253 --- /dev/null +++ b/docs/kag3doc/contents/Letter.html @@ -0,0 +1,158 @@ + + + + + + + 文字を表示しよう + + + + + + + + +

どんなスタイルにするか +

+ おおよそこの世の中の文字ベースのアドベンチャーゲームは、メッセージ枠を表示してそこに文字を表示するタイプと、画面全面に文字を表示するタイプ(ヴィジoアルノベルタイプ)に分かれると思いますが、文字の表示場所が違うだけで大差ないと思われるので、KAG はどちらの方式でもできるようになっています。
+
UsingVN.jpgUsingFrame.jpg
二つの方式

 また縦書きもできます。
+
Vertical.jpg
縦書き表示

 デフォルトでは横書きのいわゆるヴィジュアルノベルタイプの表示を行うようになっています。詳しくは Config.tjs を参照してください。このチュートリアルではこのデフォルトのヴィジュアルノベルタイプの表示を前提に話を進めます。
+
+

とにかくなにかを表示する +

+ では、試しに何かを表示してみましょう。scenario フォルダの中には、first.ks というファイルがあると思います。このファイルが一番最初に読み込まれるシナリオファイルです。
+ 標準の状態では、以下のような内容が書き込まれています。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。
+
+
+ + いきなりごちゃごちゃ書いてあって困るかと思いますが、「こんにちは。」と書いてある行のみ注目してください。この「こんにちは。」の代わりに、なにか表示したい文字をエディタで書き込んでみてください。たとえば、「こんばんわ。」でもかまわないです。
+ そうしたら、吉里吉里を起動し、[フォルダ/アーカイブ選択]のダイアログボックスが開いたら、あなたの作ったプロジェクトフォルダを指定して [OK] ボタンを押します。指定するのはプロジェクトフォルダです。first.ks ではありません。
+
+
kon-banwa.png
「こんばんわ。」

 すると、真っ黒な画面に「こんばんわ。」と表示されましたね。背景を指定するのは後 ( → 背景を表示しよう ) で説明します。
+ とにかく、この「こんにちは。」の代わりに表示したい文字を書き込めば、このように表示させることができるのです。
+
+

クリック待ちと改行を使ってみよう +

+ 今度は、行末でクリック待ちをしてみましょう。クリック待ちをするには、[l] をクリック待ちをさせたい部分に書き込みます。( [l] は半角です; l は小文字の L )
+ それと、改行を行わせるために [r] をそのあとに書きます。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。[l][r]
+ごきげんよろしゅう。[l][r]
+
+
+ + 吉里吉里はいったん終了させて、また起動し、プロジェクトフォルダを実行してみてください。
+
+
gokigen.png
クリック待ち


+ 「こんにちは。」の後でクリック待ちとなり、クリックをすれば改行されて、「ごきげんよろしゅう。」と表示されたはずです。
+
+

改ページ待ちを使ってみよう +

+ 文字を全部消去して、また左上から文字を表示し始めたいときは、新しい行に [cm] と書き込みます。( [cm] は半角です )
+ しかしその前にクリック待ちを行わないと、勝手に画面が消去されてしまいます。[cm] の前には普通は [p] と書き込みます。以下の例を見てください。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。[l][r]
+ごきげんよろしゅう。[l][r]
+改ページしますよ。[p]
+[cm]
+改ページしました。
+
+
+ + さて、これを実行してみてください。[p] の位置で改ページを示す記号が現れてクリック待ちとなり、クリックすると文字が全部消去されて、再び左上から「改ページしました。」と表示されたと思います。
+
+
Note
+ メッセージを消去するタグは er ct cm の3つがあります。それぞれ微妙に動作が違うのでセーブとロードの説明のところ ( → セーブ・ロードに対応させよう ) で説明します。特別なことをやらないのであれば cm に統一してしまってもよいかも知れません。
+

+
+
Note
+ KAG 3 未満のチュートリアルでは、ここで ct を使っていました。cm は ct 同様、すべてのメッセージレイヤをクリアしますが、ct のように、操作対象のメッセージレイヤを表画面の messaeg0 に戻したりしません。ct よりも使い勝手がよいかと思います。
+ しかし、後述のセーブ可能なラベルの直後は、cm か ct タグを書かなければならないということは注意しなければなりません。

+
+ KAG では、文字はすべて「メッセージレイヤ」と呼ばれるレイヤに描画されます。KAG では標準ではもう一つメッセージレイヤがあって、二つを使えば二人で対話しているようなシーンも表現可能です。current タグなどを参照してください。
+
+

タグってなんだ +

+ で、いままで角かっこ [ ] で囲まれた半角のヤツはなんなんだということになりますが、
+ [ ] で囲まれているものはタグ、と呼ばれるもので、いろいろと KAG を制御するためのものです。
+ たとえば、一番最初の行に、[wait time=200] という部分がありますが、これは wait というタグ名に、 time=200 という属性を伴った「タグ」です。属性は、 time というのが属性名で、 200 というのが属性の値という呼び方をします。
+ このような感じで、まず [ の次に「タグ名」、スペースを空けて 「属性名=属性の値」を書き込みます。「属性名=属性の値」は複数続くことがあります。最後に ] がきて、タグが終わります。
+ これからいろいろなタグが出てきますが、最初は見よう見まねで書いていても、そのうち感覚がつかめてくると思います。
+ タグはいろいろと重要です。KAG に対する文字表示以外の指示はすべてこのタグで行います。いろいろなタグがありますから、タグリファレンスを参照してみてください。
+
+ マクロ ( → マクロを使おう ) を使って、既存のタグを組み合わせて新しいタグを定義することができます。これを使うとお決まりのタグをひとつのタグにできるので便利です。ゲームシステムにあわせ、あらかじめタグのセットをマクロで定義しておくと便利でしょう。
+
+
Note
+ KAG 3 未満では、行末に \ (円記号) を書かない限り、行末で改行されていました。KAG 3 以降では、[r] を書かない限り改行されません。KAG 3 未満の改行の扱いと同じにしたい場合は、Config.tjs の global.ignoreCR を false に指定してください。
+

+
+
+

コマンド行 +

+ 先頭に @ (半角@) を書いた行は、「コマンド行」として認識されます。
+ @ の次にはタグの [ と ] で囲まれた部分、つまり、タグ名とその後に(もしあれば)属性を書きます。一つの行には一つのコマンドのみを書くことができます。
+ 書き方が違うだけで、実質タグと同様の動作をします。
+
+ たとえば、次の2行は同じ意味になります。
+
+ +
+[wc time=20]
+@wc time=20
+
+
+ +
+ また、「改ページ待ちを使ってみよう」の例は、以下のように書き換えることができます。
+
+ +
+@wait time=200
+*start|スタート
+@cm
+こんにちは。[l][r]
+ごきげんよろしゅう。[l][r]
+改ページしますよ。[p]
+@cm
+改ページしました。
+
+
+ +
+

シナリオ中の特殊記号・特殊行 +

+ シナリオは普通のテキストファイルで、自由に何を書いてもいいのですが、以下の記号は特殊な用途に使われるので、使いたいときは注意が必要です。
+
+
+
  [  ( 半角開き角カッコ )
+
     タグの始まりを示す記号です(^^;;
+     もしどうしても半角の角カッコの始まりを、タグの始まりとしてではなく使いたい場合は、[[ と、これを二つ続けて書いてください ( 角カッコの閉じカッコは普通に書けば OK です )。
+
  ;  ( 半角セミコロン )
+
     このセミコロンが行頭に書かれた行は、何を書いても無視されます。つまりコメントをここに記述することができます。
+
  *  ( 半角アステリスク )
+
     行頭に書かれた場合のみ、ラベルを定義します。リンクするときにターゲットとなるほか、セーブ・ロード時の目印にもなります (別の場所でお話しします)。
+
  @  ( 半角アトマーク )
+
     行頭に書かれた場合のみ、コマンド行であることを示します。
+
  タブ
+
     行頭のタブはあたかも無かったかのように(無視されて)扱われます。これを用いて、シナリオファイルをインデント付け (シナリオが見やすいように字下げをする) を行う事ができます。無視されるのはタブだけで、空白は無視されませんので注意が必要です。
+ + + + diff --git a/docs/kag3doc/contents/Macro.html b/docs/kag3doc/contents/Macro.html new file mode 100644 index 0000000..24d5692 --- /dev/null +++ b/docs/kag3doc/contents/Macro.html @@ -0,0 +1,154 @@ + + + + + + + マクロを使おう + + + + + + + + +

マクロとは +

+ マクロとは、「複数のタグや文章を一つのタグで表せるようにする」ための物です。
+
+ 既存のタグや文章を組み合わせて、自由に新しいタグを定義する方法です。
+ KAG では、いくつも、何回も同じようなタグを指定しなければいけない場面が多いかと思いますが、マクロの機能を使えば、そのような作業を大幅に減らすことが出来ます。
+ おきまりのタグの連続は、マクロ化して楽しましょう(^^)
+
+

基本的な使い方 +

+ マクロを使うには、まずマクロを「定義」しなければなりません。マクロは一度だけ定義すれば、あとはそのマクロを何回でも使うことができます。ですので、マクロを定義する場合はfirst.ksの最初などに書いておくとよいでしょう。
+
+ マクロを定義する場合は、macro タグと endmacro タグで、マクロにしたい部分を囲みます。macro タグの属性 name には、マクロ名を指定します。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+; -- マクロの定義 --
+[macro name=newtag][font color=0xff0000]こんな風にマクロを作ります[resetfont][endmacro]
+
+
+ +
+これを使いたい場合は、タグを書くのとまったく同じ要領でマクロ名を使います。
+ +
+; -- マクロを使う --
+[newtag]
+
+
+ +
+ これを実行すると、[newtag] のところで、この [newtag] というタグが、 [font color=0xff0000]こんな風にマクロを作ります[resetfont] に置き換わるため、赤い文字で「こんな風にマクロを作ります」と表示されるはずです。
+
+ 複数行に書くこともできます。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+; -- マクロの定義 --
+[macro name=newtag]
+[font color=0xff0000]
+こんな風にマクロを作ります
+[resetfont]
+[endmacro]
+
+
+ + +
+; -- マクロを使う --
+[newtag]
+
+
+ +
+

マクロの属性 +

+ マクロに属性を与え、その属性をマクロ中で置き換えることが出来ます。
+ マクロ中で、属性の値に % で始まるものを指定すると、それがマクロに与えられた属性に置き換わります。
+ 以下の例を見てください。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+; -- マクロの定義 --
+[macro name=newtag]
+[font color=%iro]
+こんな風にマクロを作ります
+[resetfont]
+[endmacro]
+
+
+ + +
+; -- マクロを使う --
+[newtag iro=0x00ff00]
+
+
+ +
+ この例では、iro という属性を与え、それをエンティティにより font タグの color 属性と置き換えています。
+ 実行すると、緑色の文字で「こんな風にマクロを作ります」と表示されるはずです。
+
+
+ また、マクロ中のタグの属性に * を指定すると、マクロに渡された属性をすべて渡すことができます。たとえば、trans タグのあとに wt タグをつけたマクロを作りたい場合、
+
+ +
+[macro name=transwait][trans *][wt][endmacro]
+
+
+ +
+ と書くことができます。このようにすると、たとえば transwait マクロを使うときに、transwait マクロに対して指定した属性がそっくりそのまま trans タグに渡されるので、既存のタグに毛の生えた程度のマクロを作るときに便利です。
+
+ マクロ中にあったマクロは再び展開されますので、マクロの中に自分のマクロを書かないようにご注意ください(^^)
+
+ 値が省略されたときに、デフォルトの値を指定したい場合は、% 付きの属性に、 | ( 縦棒 ) を書き、そのあとに省略された場合の値を指定します。下の例を見てください。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+; -- マクロの定義 --
+[macro name=newtag]
+[font color=%color|0xff0000]
+こんな風にマクロを作ります
+[resetfont]
+[endmacro]
+
+
+ + +
+; -- マクロを使う --
+[newtag color=0x00ff00]
+[newtag]
+
+
+ + 最初の [newtag] を使っているところでは color 属性を指定しているので、その属性の値である 0x00ff00 と置き換わり、緑色で文字が表示されています。
+ 二番目の [newtag] を使っているところでは、属性がなにも指定されていないので、デフォルトである "0xff0000" が採用され、文字は赤で表示されます。
+
+
Note
+ 属性名の指定には英半角小文字を用いてください。大文字を指定すると正常に動作しません。

+
+ + + + diff --git a/docs/kag3doc/contents/Misses.html b/docs/kag3doc/contents/Misses.html new file mode 100644 index 0000000..eb06a0e --- /dev/null +++ b/docs/kag3doc/contents/Misses.html @@ -0,0 +1,64 @@ + + + + + + + 陥りやすいミス + + + + + + + + +

陥りやすいミス +

+ ありがちなミスや不都合を生みやすいポイントを紹介します。
+
+
+
スキップしても大丈夫ですか?
+
 KAGはクリックや「次の選択肢まで進む」、スペースキーやEnterキーの長押しでスキップモードにはいります。このとき、たとえば時間制限選択肢でスキップの動作が禁止されていないとすぐにタイムオーバーになってしまいます ( これを避けるには時間制限選択肢が来たら @cancelskip して @clickskip enabled=false し、時間制限選択肢が終わったら @clickskip enabled=true する )。また、スタッフロールやデモシーンでもスキップとのかねあいを考慮する必要があります。
+ 「自動的に読み進む」も、単純にクリック待ちを行うつもりで p タグなどを使った場合に問題になる場合があります。「自動的に読み進む」を強制的に解除するには cancelautomode タグを使います。
+
+ また、trans タグに対応している wt タグがないなと、「何か時間をかけて処理を行うタグ」と「それに対応する『待つ』タグ」がない場合は問題が発生することがあります。マクロなどを使ってこれらを常に組みにしてつかうならば問題ありませんが、複数の「何か時間をかけて処理を行うタグ」を組み合わせてオーバーラップさせて使うような場合は特に注意が必要です。
+
栞をたどっても大丈夫ですか?
+
 KAGのセーブとロード関連にはクセがあり、栞をたどるときにメッセージレイヤに記述された内容までは復元できず、つねにすべてのメッセージレイヤがクリアされた状態から実行が開始されます。また、トランジションやBGMや効果音のフェードなどもすべて停止した状態で開始します。これらはすべて「セーブ可能なラベル」から開始されますので、セーブ可能なラベルの直後で cm や ct タグのような、メッセージレイヤをクリアするためのタグがあるか (あるいはセーブ可能なラベルの位置ですべてのメッセージレイヤがクリアされた状態から開始しても問題ないか )、また、セーブ可能なラベルがトランジション中であったり、フェードアウト中であったりしないかどうかなどをよくチェックしてください。
+
状態は復元できていますか?
+
 たとえばCGモードを作って、CGモード中ではメッセージレイヤなどの状態をCGモード用に変更したら、当然CGモードを抜けるときにはその状態を元に戻さないとなりません。
+
メッセージ履歴はOKですか?
+
 メッセージ履歴にどのような物が表示されているかは一応確認しておくと良いと思います。
+
ウェイトがマシンスペックによって変わるような作りになってませんか?
+
 wait は、mode 属性を指定しないと、単に time 属性で指定された時間を待ちます。ですから、1秒ごとに何かを表示しようとして
+ +
+@wait time=1000
+@何かの表示など
+@wait time=1000
+@何かの表示など
+@wait time=1000
+@何かの表示など
+
+
+ + と指定しても正確に1秒ごとにはなりません。wait 自体は確かに1秒を待ちますが、「何かの表示など」で消費される時間を考慮していないためです。
+ 従って、これを正確に1秒ごとにしたい場合は、resetwait タグと wait mode=until を使って、
+ +
+@resetwait
+@wait mode=until time=1000
+@何かの表示など
+@wait mode=until time=2000
+@何かの表示など
+@wait mode=until time=3000
+@何かの表示など
+
+
+ + とします。resetwait で指定した時間原点からの時間を wait mode=until で待つという感じになります。
+ + + + diff --git a/docs/kag3doc/contents/MouseKeyboard.html b/docs/kag3doc/contents/MouseKeyboard.html new file mode 100644 index 0000000..506e43d --- /dev/null +++ b/docs/kag3doc/contents/MouseKeyboard.html @@ -0,0 +1,66 @@ + + + + + + + 操作方法 + + + + + + + + +

操作方法 +

+ KAG の操作方法を以下で説明します。
+
Note
+ これは一般的に書いた物です。ゲームなどによっては使わない機能もあるでしょうから、これをそのままコピー&ペーストしてゲームなどの説明書などに書くのはどうかと思います(汗)

+
+
+

基本的な操作 +

+
+
「左クリック」または「ホイールを手前に回転」または「リターンキー」または「スペースキー」
+
読みすすみ または 選択肢の決定、ボタンを押す、チェックボックスをチェックするなどの動作
+
「右クリック」または「ESC キー」
+
メッセージ履歴の表示 または 右クリックサブルーチンの呼び出し
+
「↑」「↓」 または 「←」「→」 または 「TAB」「SHIFT+TAB」
+
選択肢、ボタン、単一行エディット、チェックボックス間の移動
+
「ホイールを奥に回転」または「R キー」または「SHIFT+↑」
+
メッセージ履歴の表示
+
「F キー」
+
次の選択肢/未読まで進む
+
「A キー」
+
自動的に読み進む
+
「B キー」
+
前に戻る
+
「S キー」
+
(フリーセーブモードにおいて) 栞を挟む
+
「L キー」
+
(フリーセーブモードにおいて) 栞をたどる
+

メッセージ履歴表示中の操作 +

+
+
「リターンキー」または「スペースキー」または「ESC キー」
+
メッセージ履歴を閉じる
+
「ホイール回転」または「↑」「↓」 または 「←」「→」
+
スクロール
+ +

「はい」「いいえ」をたずねるダイアログ +

+
+
「クリック」
+
「はい」または「いいえ」を選択
+
「←」「→」
+
ボタンの選択
+
「リターンキー」または「スペースキー」
+
選択したボタンを押す
+ + + + + diff --git a/docs/kag3doc/contents/PortFromOldKAG.html b/docs/kag3doc/contents/PortFromOldKAG.html new file mode 100644 index 0000000..af6e80b --- /dev/null +++ b/docs/kag3doc/contents/PortFromOldKAG.html @@ -0,0 +1,84 @@ + + + + + + + KAG 3 未満からの移植と KAG 3 での新機能 + + + + + + + + +

KAG 3 未満からの移植について +

+ KAG 3 はそれまでの KAG を新しく書き直したもので、シナリオレベルでの互換性はありますが、細かい差異もあります。
+ もっとも大き変更は、シナリオファイル中の改行を無視するようになったことですが、これは Config.tjs の global.ignoreCRfalse に指定することで旧 KAG の動作と同じにすることができます。
+ また、quake タグの time 属性は、KAG 3 では ms 単位になりました。KAG 3 未満の、文字数単位にしたい場合は Config.tjs の defaultQuakeTimeInChUnittrue に設定してください。
+
+ KAG 3 未満に比べて、文字が大きめに出てきます。小さめのフォントを指定してみてください。
+
+ セーブデータの保存場所は、デフォルトで実行可能ファイルのあるフォルダ以下の savedata フォルダになっていますのでご注意ください。
+
+ タグもいくつかの相違点があります。
+
  • emb タグに zenkaku 属性がない
  • playvideo の usesound 属性廃止
  • clearsysvar はシステム変数をクリアするだけ

+ 他にも動作が違うタグがあるかもしれませんが、おそらく KAG 3 のバグかと思います。変に思ったら作者までご一報ください。
+ プラグインの扱いの違いについては 準備をしよう の「プラグインについて」をご覧ください。
+
+

KAG 3 の新機能 +

+
+
KAG のシナリオ解析部を吉里吉里2本体に内蔵
+
 吉里吉里2本体には KAG のシナリオを解析するための機能が組み込まれまし +た。KAG 2.x では TJS スクリプトで処理していましたが、これを本体に内蔵す +ることによってシナリオの解析速度が飛躍的に高速化されました。
+
ほとんどのタグに cond 属性が使える
+
 cond 属性はほとんどすべてのタグに使用でき、cond="式" で指定した式が真 +の場合だけ、そのタグを実行するようになります。たとえば、
+ +
+[jump cond="f.flag1==0" target=*loop]
+
+
+ +と記述すると、f.flag1 が 0 の時だけ *loop というラベルにジャンプする、と +いう意味になります。
+
アニメーション情報ファイルが asq から asd になった
+
 より汎用性の高い形式である asd 形式になりました。配布ファイル中の +asq2asd は asq ファイルを asd ファイルに変換するスクリプトです。asd ファ +イルの記述については AnimationLayer.tjs 内をご覧ください。
+ また、アニメーションセグメントと呼ばれる方法を使って、一つの画像に対し +て複数のアニメーションを同時に実行できます。
+
メッセージ履歴が縦書き表示できるようになった
+
 横書きに加えて縦書き表示ができるようになりました。Config.tjs で設定し +ます。
+
セーブデータの暗号化が可能に
+
 セーブデータに簡単な暗号化をかけることができるようになりました。 +Config.tjs で設定します。
+
UNICODE ファイルへの対応
+
 吉里吉里2が出力するテキストファイルは基本的に UNICODE ( UTF-16 ) です。
+ セーブデータなどは UNICODE で出力されます。UNICODE を扱うことのできる +テキストエディタを用意しておくと便利かと思います。
+ また、吉里吉里2へ読み込ませるファイル ( KAG シナリオなど ) として UNICODE 形式の +テキストファイルを読み込ませることが可能になりました。
+
ムービー形式として MPEG に正式対応
+
 MPEG を再生できるようになりました。アーカイブ内に MPEG ファイルを納め +ても再生できます。
+ ただし、ムービーを再生するには、吉里吉里2本体に付属している +krmovie.dll を、吉里吉里2本体と同じフォルダにおいておく必要があります。
+ また、ムービーを再生するために DirectX8 以降が OS にインストールされて +いる必要があります(DirectX9以降を推奨します)。
+
レンダリング済みフォントへの対応
+
 レンダリング済みフォントを使用することによって、OS や環境によるフォント +の違いや、字詰めの問題を回避できます。また、作成者側の環境でのフォントデ +ータを用いるため、プレーヤの環境にないフォントや外字を使用することができ +ます。
+ レンダリング済みフォントを作成するには krkrfont.exe を使います。
+ + + + diff --git a/docs/kag3doc/contents/Prepare.html b/docs/kag3doc/contents/Prepare.html new file mode 100644 index 0000000..091bd2c --- /dev/null +++ b/docs/kag3doc/contents/Prepare.html @@ -0,0 +1,215 @@ + + + + + + + 準備をしよう + + + + + + + + +

準備をしよう +

+ まず、吉里吉里 SDK のフォルダ ( krkr.eXe のあるところ ) の下に、プロジェクト名をつけたフォルダを作りましょう。プロジェクト名は何でもいいです。ただし、"data" というフォルダ名は避けてください ( data というフォルダ名にするのは必要に応じて配布する時にそうします )。このフォルダをプロジェクトフォルダと呼びます。
+
+ そうしたら、そのフォルダの下に、KAG のシステムをコピーします。template というフォルダが、ダウンロードした KAG の LZH ファイルを展開するとあるはずです。その中身( template フォルダごとではなくて ) をこのプロジェクトフォルダにコピーします。
+
+ 配置は以下のようになります。
+
Folders.png
ファイルをコピーした

 そうしたら、system フォルダの中に Config.~new というファイルがありますので、それを Config.tjs に改名してください。それから、テキストエディタで Config.tjs を開いてください。
+
+
+ Config.tjs はそのほかにもいろいろと設定する箇所があって、後々いじる事になると思います。詳しい説明は Config.tjs 内に書いてありますのでそちらを参照してください。
+
+
+ なお、コピーしたフォルダの中に「〜このファイルは削除してかまいません〜」というファイルがある場合がありますが、これはアーカイブ展開ソフトが、空のフォルダを展開しない場合があるために置いてあるダミーのファイルです。削除してかまいません ( そのままにしておいても特に問題はありません )。
+
Note
+ KAG のアップデートをする場合は、基本的には、新しい KAG の system フォルダの中身を、既存の system フォルダに上書きするだけで OK です。新しくした後の初回の実行で自動的に古い Config.tjs の引継が行われますので、画面の指示に従ってください。
+

+
+

フォルダの説明 +

+ コピーすると、いくつかのフォルダも一緒にコピーされます。各フォルダの説明をします。
+ これらのフォルダの通りにしなくても本当はいいのですが、フォルダの配置を換える場合は Initialise.tjs の内容も変更しなければならない場合があります。詳しくは Initialise.tjs の内容をご覧ください ( .tjs ファイルはテキストファイルですので、テキストエディタで開きます )。
+ なお、これらのフォルダのどこに何を入れても、KAG のファイル指定ではフォルダ名を指定する必要はありません。別に bgimage フォルダに MIDI ファイルが入っていてもかまわないです。ただ、便宜上、あらかじめフォルダが作ってあるだけですので(^^)
+
+ これらのフォルダは空のままでも問題はありません。必要のないフォルダは削除しても OK です。
+
+
+
folder.png system フォルダ
+
 system フォルダには KAG の動作に必要なシステムが入っています。
+
folder.png scenario フォルダ
+
 scenario フォルダには、シナリオファイルを入れます。シナリオファイルは、KAG で画面に表示する文章を指定したり、どの画像を表示するかなどの指示をタグを使って埋め込んだ、拡張子が .ks のファイルです。
+ ちなみに吉里吉里を立ち上げたときに指定するのは「プロジェクトフォルダ」であって個々のシナリオファイルではありません。
+
folder.png bgimage フォルダ
+
 表示する背景画像を入れておくフォルダです。
+
folder.png fgimage フォルダ
+
 表示する前景画像 (キャラの立ちポーズなど) を入れておくフォルダです。
+
folder.png image フォルダ
+
 その他の画像 (たとえば一枚絵) などを入れておくフォルダです。
+
folder.png bgm フォルダ
+
 BGM (バックグラウンドミュージック)のデータを入れておくフォルダです。
+
folder.png sound フォルダ
+
 効果音のデータを入れておくフォルダです。
+
folder.png rule フォルダ
+
 ユニバーサルトランジションのルール画像を入れておくフォルダです。
+
folder.png others フォルダ
+
 その他。
+
folder.png video フォルダ
+
 動画ファイルを置いておきます。
+

扱える画像形式 +

+ KAG ( というか吉里吉里 ) で扱える画像形式は以下の通りです。
+ 画像形式について もご覧ください。
+
+
+
BMP 画像
+
 拡張子は .bmp または .dib です。吉里吉里では、無圧縮の BMP のみサポートしています。
+ 32bit (32bpp) の BMP はアルファチャネル付きビットマップとして見なされます。
+
JPEG 画像
+
 拡張子は .jpeg または .jpg です。様々なグラフィックツールの出力する JPEG 画像を扱うことができます。
+
Portable Network Graphic 画像 ( PNG 画像 )
+
 拡張子は .png です。様々なグラフィックツールで出力できます。アルファチャネルや透明色指定にも対応しています。
+
Entis Rasterized Image format 画像 ( ERI 画像 )
+
 拡張子は .eri です。Leshade Entis 氏 により開発・考案された可逆画像圧縮技術・フォーマットです。通称「恵理ちゃん」です。
+ 画像コンバータなどのユーティリティ類は「恵理ちゃんclub」 http://www.entis.gr.jp/eri/ から入手できます。
+
+ この画像圧縮形式を用いる場合は、著作権関係で特に注意が必要です。詳しくは 吉里吉里 SDK Help の「使用条件等」および上記「恵理ちゃん club」をご覧ください。
+
TLG5 画像
+
 拡張子は .tlg です ( .tlg5 ではありません )。吉里吉里独自の可逆画像圧縮形式で、高速に展開できるのが特徴です。フルカラー画像と、アルファチャンネル付きのフルカラー画像に対応しています。
+
TLG6 画像
+
 拡張子は .tlg です ( .tlg6 ではありません )。吉里吉里独自の可逆画像圧縮形式で、高い圧縮率と比較的高速な展開が特徴です。フルカラー画像と、アルファチャンネル付きのフルカラー画像に対応しています。
+
その他の画像
+
 Susie Plug-in を使えば、これら以外の画像形式にも対応できます。Susie Plug-in は、吉里吉里の実行可能ファイル krkr.eXe と同じフォルダか、その下の plugin フォルダか、プロジェクトフォルダに置いてください。(それと、後述の「プラグインについて」を参照してください )
+

扱えるオーディオ形式 +

+
+ KAG ( というか吉里吉里 ) で扱えるオーディオ形式は以下の通りです。
+ 効果音には PCM のみを使用できます。
+ BGM にどの形式を使うかによって、KAG の Congif.tjs の変更が必要になります。詳しくは Config.tjs の内容をご覧ください。
+
+
+
PCM
+
 標準では、無圧縮の RIFF-WAVE ( 拡張子は .wav ) を再生することができます。
+
+ 無圧縮の RIFF-WAVE 以外には Ogg Vorbis ( *.ogg ) 、TCWF ( *.tcw )、Microsoft ADPCM ( *.wav ) などを再生できますが、プラグインが必要になります。
+ プラグインは吉里吉里2配布ファイルとして、Ogg Vorbis用 ( wuvorbis.dll )、TCWF用 ( wutcwf.dll )、Microsoft ADPCM用 ( wumsadp.dll ) が添付されています。
+
+ Ogg Vorbis は、特許・特許料フリーの圧縮音楽形式で、MP3 と同等の使い方をすることができます。エンコーダは http://www.vorbis.com/ から入手できます。
+
+ そのほかのプラグイン ( もし、あれば ) を使用して再生可能な形式を増やすこともできます。プラグインについては各プラグインの説明書の他、後述の「プラグインについて」を参照してください。
+
+ 無圧縮 Wave, Ogg Vorbis, TCWF, Microsoft ADPCM の各形式は、Loop Tuner ( サポートページから入手可能 ) を用いてループの情報を作成することにより、ループ位置を細かく指定する事ができます。これにより、ループのつなぎ目を感じさせないループ演奏が可能になります。
+
MIDIシーケンスデータ
+
 Standerd MIDI Format ( 拡張子は .smf または .mid ) を再生することができます。クロスフェードを行いたい場合は若干の注意が必要です、詳しくは 吉里吉里 SDK Help の「MIDI サウンドバッファについて」をご覧ください。
+
CD-DA
+
 CD-XA の CD-DA 部分を再生することができます。CD-XA は、CD-ROM としてコンピュータ用のデータと、CD-DA としてオーディオのデータが同居する形式の CD です。吉里吉里は、使用可能な CD-ROM ドライブの検索に CD-ROM のコンピュータ用のデータとしてのボリュームラベルを元に検索を行うので、CD-XA 形式の CD でないと扱うことができません。 ( もっともこのチュートリアル内で行うようにドライブ名を明示するならば再生できますが・・・ )
+

扱えるムービー形式 +

+
+
MPEG I
+
 一般的な MPEG I に対応しています。
+ ただし、配布時には、 krmovie.dll を吉里吉里実行可能ファイルと同じ場所に置いておく必要があります。また、ムービーの再生には DirectX 8 が、再生する環境側に必要になります。
+
Note
+ オーディオとマルチプレクシングを行っていない、ビデオのみの MPEG I ストリームの拡張子は .mpeg/.mpg ではなくて .mpv にしてください。吉里吉里は 拡張子でビデオ形式を判断します。
+

+
+
WMV
+
 WMV に対応しています。
+ 再生可能な WMV のバージョンは、システムにインストールされている Media Player や DirectX に依存しますが、DirectX 9 以降がインストールされている環境を推奨します。

Note
+ 吉里吉里はReleaserで作成したアーカイブや実行可能ファイル内にビデオが格納されていても、直接アーカイブから (テンポラリファイルを介することなく) ムービーを再生できます。ただし、Releaser ではムービーファイルは「圧縮しない」に分類する必要があります (デフォルトの分類では圧縮しない設定に自動的になります )。
+

+
Note
+ AVI形式のムービーはサポート外です。

+
+

Flash +

+
+
SWF
+
 Macromedia Flash の再生に対応しています。
+ ただし、配布時には krflash.dll を吉里吉里実行可能ファイルと同じ場所に置いておく必要があります。また、SWF の再生には Flash Player がインストールされている必要があります。
+ Flash の再生方法はビデオと同じ扱いです。

Note
+ Flash への対応は完全なものではありません。キーボード入力を必要とするような Flash コンテンツは正常に動作しない可能性があります。また、XP3 などのアーカイブ内に SWF ファイルが格納されていた場合は、いったんテンポラリファイルに書きだして使用するため、大きな SWF ファイル ( 3〜5MB を越えるもの ) はアーカイブに格納しない方が良いかと思います。
+

+
Note
+ 作者は Flash の制作環境を持っていないのでテストしていませんが、Flash コンテンツの制御で KAG シナリオの任意のラベルにジャンプさせることができます。Action Get URL ( URL 表示のアクション ) に、URL として FSCommand:Go を、表示先のウィンドウとして 「シナリオファイル/ラベル」の形式で文字列を指定します ( 例: first.ks/label2 )
+ FSCommand:Eval で、表示先ウィンドウとして TJS 式を指定すると、アクションが発生したときに任意の TJS 式を実行することができます ( 変数に値を代入するとか )。
+ openvideo タグまたは playvideo タグで、storage 属性でファイル名に続き ? を書き、その後に Flash に渡すパラメータを指定することができます ( 例 : hoge.swf?name=value&param=content )。
+

+
+ + +

扱えるアーカイブ形式 +

+
+
XP3PEXP3
+
 吉里吉里独自のアーカイブ形式である XP3 形式を扱うことができます。
+ PEXP3 は「吉里吉里実行可能ファイル」と XP3 形式が組合わさった形式で、単体の実行可能ファイル中に作品を納められるものです。
+ どちらの形式も吉里吉里 SDK 付属の Releaser で作成できます。
+
その他のアーカイブ形式
+
 Susie Plug-in を使えば、これら以外のアーカイブ形式にも対応できます。(後述の「プラグインについて」を参照してください )
+ + +

レンダリング済みフォント +

+ レンダリング済みフォントは、制作者側で作成したフォントデータです。これを使用することで、常に制作者側の意図したフォントで、OS や環境に影響されることなく表示をすることができます。また、外字も自由に使用することができます。
+ レンダリング済みフォントは krkrfont.exe で作成します。作成するとき、縦書きに使用するフォントは @ の頭に着いたフォントにしてください。
+
+ レンダリング済みフォントファイルは .tft の拡張子を持っています。使用する場合は others フォルダなどにおき、mappfont タグで任意のフォントに割り当ててください。
+
+
Note
+ レンダリング済みフォント作成ツールの使い方は吉里吉里 SDK ヘルプを参照してください。
+

+
+

プラグインについて +

+ Susie-Plugin あるいは PCM の再生可能な形式を拡張するためのプラグイン、もしくはその他のプラグインは、loadplugin タグで指定しないと使用可能になりません。
+
+ たとえば、wuvorbis.dll を使いたい場合は、
+
+ +
+@loadplugin module=wuvorbis.dll
+
+
+ +
+ と記述します。
+
+ また、プラグインは、
  • 吉里吉里実行可能ファイル ( krkr.eXe ) と同じ場所
  • 実行可能ファイルのあるフォルダ以下の plugin フォルダ
  • プロジェクトフォルダ
 のいずれかに置いておく必要があります。プロジェクトフォルダに置いた場合は Releaser でアーカイブ内あるいは実行可能ファイル内に含まれる事になりますが、推奨されません。できればアーカイブ内には含めず、本体と一緒のフォルダに配置して配布するのが良いでしょう ( アーカイブ内に含めると CD-ROM 上から直接実行する際などにエラーになります )。
+
+ krmovie.dll や krflash.dll はプラグインではないので、loadplugin タグで指定する必要はありません。
+
+ 吉里吉里 SDK ヘルプの「プラグインについて」もご覧ください。
+
Note
+ 吉里吉里1の場合は実行可能ファイルと同じ場所に置くだけで使用可能になりましたが、吉里吉里2の場合は明示的にプラグインを指定する必要があります。
+

+
+

UNICODEへの対応 +

+ シナリオファイルや TJS スクリプトを編集するため、テキストエディタが必要になります。
+ 普通は普段お使いのお手持ちのテキストエディタで問題ありませんが、吉里吉里が出力するコンソールのログファイルや KAG のセーブデータは UNICODE で出力されるため、UNICODE テキストを編集したい場合は UNICODE に対応したテキストエディタが必要になります。
+ また、シナリオファイルや TJS スクリプトに日本語文字 (ここでいう日本語文字とは日本語版 Windows で通常使える文字) 以外を記述したい場合は、これらを UNICODE テキストで記述する必要があります。
+
+ 日本語文字以外の言語を表示するためにはいくつか条件があります。
+
+
  • 該当するシナリオファイルや TJS スクリプトファイルが UNICODE で記述されていること ( UNICODE で書かれたテキストファイルとそうでないテキストファイルが混在していてもかまいません )
  • レンダリング済みフォントファイルを使わない場合は、ゲームをプレイする側の OS が Windows NT 系 ( Windows 2000 や Windows XP, Vista 以降 ) であること ( レンダリング済みフォントファイルを使用する場合はプレイする側の OS は関係ありません )
  • 表示しようとする言語の文字を含んだフォントを指定すること
  • 表示しようとする言語が左から右へ書く(横書き)言語あるいは上から下へ書く(縦書き)言語であること

+ どの場合も、日本語以外の文字を表示できるのはゲームの画面内ぐらいで、ウィンドウのタイトルバーやメニュー項目など、Windows 標準のユーザインターフェースを使用している部位には日本語文字しか表示できません。また、edit タグで生成されるエディットに入力できる文字は日本語文字だけです。
+
+
Note
+ 上では日本語文字と書きましたが、基本的に吉里吉里はそれが実行されている OS の言語ロケールに従います ( 日本語版 Windows ならば 日本語文字、中文版Windowsならば中文など )。ただし作者はチェックしてません。
+

+
Note
+ 現在の吉里吉里/KAG は Windows 上でのみ動作するため、とりあえず UNICODE というとリトルエンディアンの UTF-16 のことです ( ただしサロゲートペアは使用できません )。
+ また、吉里吉里は、UNICODE テキストはリトルエンディアンの UTF-16で、さらに BOM ( Byte Order Mark ) が先頭にないと文字コードを正常に識別できません ( 現状ではビッグエンディアンの UTF-16 はたとえ正式な BOM がついていたとしても読み込むことができません )。
+

+
+ + + + diff --git a/docs/kag3doc/contents/RClick.html b/docs/kag3doc/contents/RClick.html new file mode 100644 index 0000000..2211f02 --- /dev/null +++ b/docs/kag3doc/contents/RClick.html @@ -0,0 +1,188 @@ + + + + + + + 右クリックサブルーチンについて + + + + + + + + +

右クリックサブルーチンとは +

+ マウスの右クリックで呼び出される KAG のサブルーチンです。
+ 右クリックによってセーブ/ロードの画面を表示させたりするのに用います。
+
+

とりあえず例 +

+ 右クリックサブルーチンを作るには rclick タグを用います。このタグによって、右クリックをされたときに指定のサブルーチンを呼び出すか、あるいは、指定のラベルにジャンプするかを指定できます。
+
+ たとえば、rlick.ks に以下の内容を書いたとします。
+ +
+例:
*rclick
+@rclick jump=true storage="rclick.ks" target="*exit" enabled=true
+@current layer=message1
+@layopt layer=message0 page=fore visible=false
+@layopt layer=message1 page=fore visible=true
+@er
+ここは右クリックルーチン内です。
+[s]
+
+*exit
+@layopt layer=message1 page=fore visible=false
+@layopt layer=message0 page=fore visible=true
+@current layer=message0
+@rclick call=true storage="rclick.ks" target="*rclick" enabled=true
+@return
+
+
+ + これで、たとえば、first.ks には以下の行を記述します。 +
+@rclick call=true storage="rclick.ks" target="*rclick" enabled=true
+
+
+ +
+ すると、右クリックで rclick.ks の *rclick が呼ばれるようになります。
+ 上記の例の rclick.ks では、まず右クリックがされたら *exit にジャンプするように設定しています。これにより、右クリックサブルーチン内で右クリックを行えば元に戻ることができます。
+ メッセージレイヤ0 を非表示にしています。これにより、メッセージレイヤ0 になにか選択肢が表示されていても選択肢を選択できなくすることができます。
+ メッセージレイヤ1 を表示状態にし、そこに「ここは右クリックルーチン内です。」と表示し、そこで停止します。
+
+

難しい例 +

+ 右クリックサブルーチンとしては複雑な例を挙げますが、メッセージ履歴を見たり、セーブ・ロードができたりするものです。 +
+例:
*sub1
+@tempsave
+; ↑一時的に状態を保存
+@history output=false
+; ↑メッセージ履歴への出力を無効に
+@mapdisable layer=0 page=fore
+; ↑クリッカブルマップをもし使っている場合はこのようにして無効化する
+@backlay
+@layopt layer=message1 page=back visible=true
+; ↑このサブルーチン内ではメッセージレイヤ1を使う
+@layopt layer=message0 page=back visible=false
+@current layer=message1 page=back
+@position left=0 top=0 width=640 height=480
+@eval exp="f.r_first=true"
+; ↑このルーチンに入ったときにだけトランジションを行うように
+;
+*menu
+@er
+@nowait
+[link target=*hide]メッセージを消す[endlink][r]
+[link target=*history]メッセージ履歴を見る[endlink][r]
+[link target=*load]栞をたどる[endlink][r]
+[link target=*save]栞をはさむ[endlink][r]
+[link target=*gotostart]最初に戻る[endlink][r]
+[link target=*ret]戻る[endlink][r]
+@endnowait
+@current layer=message1 page=fore
+@if exp="f.r_first"
+@trans time=500 rule=trans1 vague=128
+@wt
+@endif
+@eval exp="f.r_first=false"
+@s
+
+*ret
+; サブルーチンから戻る
+@tempload bgm=false se=false backlay=true
+@trans time=500 rule=trans1 vague=128
+@wt
+@return
+
+*hide
+; メッセージを消す
+@hidemessage
+@jump target=*menu
+
+*history
+; メッセージ履歴を見る
+@showhistory
+@jump target=*menu
+
+*load
+; 栞をたどる
+; emb exp= .... については TJSをもっと使うために を参照
+@er
+@nowait
+[link target=*lt0][emb exp="kag.getBookMarkPageName(0)"][endlink][r]
+[link target=*lt1][emb exp="kag.getBookMarkPageName(1)"][endlink][r]
+[link target=*lt2][emb exp="kag.getBookMarkPageName(2)"][endlink][r]
+[link target=*lt3][emb exp="kag.getBookMarkPageName(3)"][endlink][r]
+[link target=*lt4][emb exp="kag.getBookMarkPageName(4)"][endlink][r]
+[link target=*menu]戻る[endlink][r]
+@endnowait
+@s
+
+*lt0
+@load place=0 ask=true
+@jump target=*menu
+*lt1
+@load place=1 ask=true
+@jump target=*menu
+*lt2
+@load place=2 ask=true
+@jump target=*menu
+*lt3
+@load place=3 ask=true
+@jump target=*menu
+*lt4
+@load place=4 ask=true
+@jump target=*menu
+
+*save
+; 栞をはさむ
+; emb exp= .... については TJSをもっと使うために を参照
+@er
+@nowait
+[link target=*st0][emb exp="kag.getBookMarkPageName(0)"][endlink][r]
+[link target=*st1][emb exp="kag.getBookMarkPageName(1)"][endlink][r]
+[link target=*st2][emb exp="kag.getBookMarkPageName(2)"][endlink][r]
+[link target=*st3][emb exp="kag.getBookMarkPageName(3)"][endlink][r]
+[link target=*st4][emb exp="kag.getBookMarkPageName(4)"][endlink][r]
+[link target=*menu]戻る[endlink][r]
+@endnowait
+@s
+
+*st0
+@save place=0 ask=true
+@jump target=*menu
+*st1
+@save place=1 ask=true
+@jump target=*menu
+*st2
+@save place=2 ask=true
+@jump target=*menu
+*st3
+@save place=3 ask=true
+@jump target=*menu
+*st4
+@save place=4 ask=true
+@jump target=*menu
+
+
+*gotostart
+; 「最初に戻る」
+@gotostart ask=true
+@jump target=*menu
+
+
+ +
+ このほか、栞データにサムネイル画像を保存する場合は若干の注意がありますので locksnapshot と unlocksnapshot タグを参照してください。
+
+ + + + diff --git a/docs/kag3doc/contents/ReadUnread.html b/docs/kag3doc/contents/ReadUnread.html new file mode 100644 index 0000000..80b35e4 --- /dev/null +++ b/docs/kag3doc/contents/ReadUnread.html @@ -0,0 +1,112 @@ + + + + + + + 未読/既読処理について + + + + + + + + +

未読/既読処理 +

+ 未読とはユーザがシナリオをいまだ読んでいないということで、既読とはユーザがすでに読んだということです。
+ KAG は、未読の部分と既読の部分でメッセージの表示速度を変えたり、既読の部分では [l] タグを無効にしたりする事ができます。
+
+ 未読/既読の記録はシステム変数のうち、trail_ で始まる変数に記録されます。未読/既読の記録を行うには Config.tjsautoRecordPageShowing を true に設定する必要があります。
+
+

未読部分と既読部分 +

+ KAG では、未読部分/既読部分はラベルを目印にして分けられています。
+ システム変数の trail_シナリオファイル名_ラベル という形式の変数に記録されます。たとえば、first.ks の *start というラベルであれば、sf.trail_first_start という変数名になります。
+ この変数が void ( つまり未定義; 数値と比較するときは 0 として見なされます ) ならば 未読で、1 以上であれば既読です。1 以上の場合はその部分を読んだ回数になります。
+
+ 基本的に、一つのラベルから次のラベルや [s] タグまでが一つの「部分」として処理されます。
+ たとえば、以下のようなシナリオがあるとすると、各色で色分けされたシナリオが各部分ということになります。
+
+ + + + + + + + +
+ +*部分その1
+ +@cm
+ +ここは部分その1です。[l][r]
+ +普通は次のラベルまでが一つの「部分」となります。[p][r]
+ +
+ +*部分その2
+ +@cm
+ +ここは部分その2です。[p][r]
+ +
+ +*部分その3
+ +@cm
+ +ここは部分その3です。[l][r]
+ +[[s]タグまでも一つの「部分」となります。[s]
+ +
+
+ この「部分」を単位にして、未読既読が処理されます。
+
+ 初期状態ではすべての部分が未読であるとされています。
+
+

既読判定 +

+ これらの「部分」が既読と見なされるには条件があります。原則として、「次のラベルに到達したり [s] タグに到達した」場合にその「部分」が既読であると見なされ、システム変数に記録されます。
+ つまり、ユーザが「部分」の途中でプログラムを終了したりして読むのをやめた場合は既読とは見なされない事になります。最後までその「部分」を読まないとなりません。
+
+

シナリオ制御と既読判定 +

+ 途中にリンクや jump タグなどがあってシナリオが分岐したりする場合はすこし処理が変わります。
+
+
+
リンクの類 ( link や button タグ ) でジャンプする場合
+
 これらのタグによってユーザが選択肢などを選択してシナリオの別の部分にジャンプする場合は自動的に既読となります。
+ たとえば以下の例で、
+ +
+*select
+ここの部分は、ユーザが選択肢を選択した時に既読になります。[r]
+[link target=*t1]選択肢1[endlink][r]
+[link target=*t2]選択肢2[endlink][r]
+@wait time=3000
+@jump target=*timeout
+
+
+ + 選択肢が @wait タグでタイムアウトになる前に選択された場合はその時点で既読という事になります。ちなみに通常の選択肢の使い方では link タグで選択を表示し終わると [s] タグが来ると思うのでその時点で既読になります。
+ link タグや button タグには contpage という属性があって、これを false にすると、その時点でジャンプを行っても既読とはされません。
+
+
jump タグ
+
 jump タグでジャンプを行う場合もその時点で既読とされます。この場合も coutpage という属性があって、これを false に設定すると既読とはされません。
+
+
call と return
+
 call タグでサブルーチンを呼ぶときは既読となりません。この場合も coutpage という属性があって、これを true に設定するとその時点で既読とされます。
+ retrun タグはその時点で既読となります ( 呼び出し元が既読になるのではなくて、そのサブルーチンの、return タグのある部分が既読になる )。この場合も coutpage という属性があって、これを false に設定すると既読とはされません。
+
+ + + + diff --git a/docs/kag3doc/contents/SaveData.html b/docs/kag3doc/contents/SaveData.html new file mode 100644 index 0000000..2456aea --- /dev/null +++ b/docs/kag3doc/contents/SaveData.html @@ -0,0 +1,67 @@ + + + + + + + 栞のデータに関して + + + + + + + + +

栞の保存場所 +

+ KAGの栞の保存場所は「吉里吉里設定」(krkrconf.exe)で設定します。 吉里吉里で設定できるオプションのうち、-datapath オプションが栞の保存場所になります。設定可能な値については、吉里吉里2 SDK ヘルプの「コマンドラインオプション」を参照してください。
+
+

フリーセーブモード +

+ KAG が栞を管理する方法には2つあります。
+
+
  • あらかじめ用意された栞の場所にのみ保存できるモード
  • 自由な場所に栞を保存できるモード(フリーセーブモード)

+ これらは Config.tjs の freeSaveDataMode で設定します。
+
+ 「あらかじめ用意された栞の場所にのみ保存できるモード」では、メニューバーの「栞をたどる」「栞をはさむ」の下に、栞を保存可能な各場所を表すサブメニュー項目ができ、ユーザはそれらを選択することで栞を保存したり読み込んだりすることができます。
+
+ これに対して「フリーセーブモード」は KAG3 3.09 beta 5 から使用可能になったモードで、「栞をたどる」や「栞をはさむ」を選択すると、ファイル選択のダイアログボックスが開き、自由に栞ファイルを選んだり、自由な名前や自由な場所に栞ファイルを保存することができます。
+
+ 「あらかじめ用意された栞の場所にのみ保存できるモード」では栞の最大数を作品を作る側で制限することができます。
+
+ 「フリーセーブモード」では栞の最大数の制限はありません。各栞を単一のファイルとして管理できるため、フォルダごとに分類して保存したり、ファイル名としてコメントを記入したりする事ができます。エクスプローラでフォルダ間を移動させたりできますし、ファイルに「読みとり専用属性」をつければ、大切なデータに上書きすることも回避できます。
+ 「フリーセーブモード」でのデフォルトのファイル名となるのは、セーブ可能なラベルの「見出し」です。
+
+ 「フリーセーブモード」で注意しなければならないのは、特にシステム変数と通常の変数の関係が密接な作品の場合に、たとえば、作品を再インストールしてシステム変数がクリアされている状態で、古い栞のデータを読み込もうとするとデータに矛盾が生じるかもしれないということです ( 作品の作り方によります )。
+ フリーセーブモードであっても、システム変数やシステムの状態を保存するファイルは、上記「栞の保存場所」で説明した場所に保存されます。
+
+ また、他の吉里吉里/KAGの作品のデータを間違って読み込んでしまわないように、Config.tjs の saveDataID を設定しておくことをおすすめします ( デフォルトのままでも動作はしますがおすすめできません )。
+ saveDataID は、栞データに埋め込まれる ID を指定するもので、他の吉里吉里/KAGの作品と(たとえ他の方などの作品であっても)重ならないように、作品ごとに異なっている必要があります。ここで指定する ID は栞データに埋め込まれ、他の栞データと区別されるためだけに使用されるので、説明的である必要はありません。キーボードを適当に叩いた文字30文字などでも良いのですが、ここの ID を思いつくのが面倒な方は http://kikyou.info/uuidgen/uuidgen.php でも ID を取得することができます ( ここで取得できる ID は、絶対に他の ID と重ならないと見なすことができます )。
+
+ +

サムネイル画像の保存 +

+ Config.tjs の saveThumbnail を true に設定することで、栞データの拡張子は .BMP になり、画像としても栞データとしても有効なファイルを出力することができます。この場合、画像としては、栞を保存した時点での 画面のスナップショットが縮小された画像 (サムネイル画像) になります。セーブ可能なラベル位置でのスナップショットではありませんので、その栞から再開するときは、その場面そのものの位置からではなくて、その直前のセーブ可能なラベルから開始されます (サムネイルの画像と再開される実際の位置が少々食い違う可能性があるということです)。
+ これにより、とくにフリーセーブモードにおいて、エクスプローラや画像管理ソフトの「縮小表示」や「縮小版」、「サムネイル」などで栞データを管理しやすくなります。また、フリーセーブモードのファイル選択ダイアログのファイルの表示形式で「縮小表示(縮小版)」を選択することにより、サムネイルから栞を選択することが可能になります。
+
+ サムネイル画像を持った栞データは BMP ですので、他のアプリケーションなどで開くこともできますが、通常、他のアプリケーションなどでいったん開いて保存しなおすと、KAG の栞データとしては読み込めない物になるので注意が必要です。
+
+ 右クリックサブルーチンで栞の保存を行う場合はすこし注意が必要になります ( locksnapshot タグと unlocksnapshot タグを参照してください )。
+
+ +

アップデートと栞データの互換性 +

+ KAG ではセーブ/ロードは必ずラベルを目印にして行われているため、ある程度のシナリオファイルの変更でも、栞データの互換性を保つことができます。
+ 互換性が失われる例はいくつかありますが、代表的なものとして
+
+
  • シナリオファイル中でセーブ可能なラベルが変更されたり、消えたりした ( そのラベルから開始できないため )
  • サブルーチンからの戻り先の構造が変わった ( 正しくサブルーチンの呼び出し元に戻れないため )

+などがあります。
+
+ パッチなどを後から配布してアップデートを行う場合はこのようなことに注意してください。
+
+ + + + diff --git a/docs/kag3doc/contents/SaveLoad.html b/docs/kag3doc/contents/SaveLoad.html new file mode 100644 index 0000000..3822b4a --- /dev/null +++ b/docs/kag3doc/contents/SaveLoad.html @@ -0,0 +1,157 @@ + + + + + + + セーブ・ロードに対応させよう + + + + + + + + +

KAG の「栞」 +

+ KAG では、ゲームのセーブ・ロードを、しゃれて(?)「栞」にたとえています。( この表記が納得行かない方は、MainWindow.tjs を書き換えてください )。
+
+ 栞データに関しては 栞のデータに関して も参照してください。
+
+ 残念ながら、KAG でのセーブ・ロードは任意の場所でできません。必ず、セーブ可能なラベルを目印として、セーブ・ロードする「場所」が必要となります。
+
+ ・・・とはいってもセーブ・ロード自体は、メニューの「栞をはさむ」「栞をたどる」で、ほぼいつでもできるのですが、セーブするときは、一番最近に通った「セーブの場所」がセーブされます。
+ そのため、プレーヤーがその「場所」から少し離れたところでセーブしても、ロードするとその一番最後に通った「場所」の位置からまたスタートすることになります。
+
+ そのセーブの場所となるのが、ラベルです。ただし、セーブの場所となるラベルは、普通のラベルとはすこし違った書き方をします。
+
+ 以下の例を見てください。
+
+ +
+[wait time=20]
+*start|スタート
+[cm]
+ここがスタートです[l][r]
+
+*label2|セーブ場所2
+[cm]
+ここはセーブ場所2[l][r]
+
+*label3|セーブ場所3
+[cm]
+ここはセーブ場所3[l][r]
+[jump target=*start]
+
+
+ +
+ このように、ラベルの後に | ( 縦棒 ) を指定し、その後にそのセーブ場所の名前となる物を「見出し」としてつけます。見出しは名前が重複していてもかまいません。見出しは「栞をはさむ」メニュー内の、メニュー項目の所にも表示される物ですので、ユーザーにわかりやすい名前を付けるべきです。また、フリーセーブモードにおいてはデフォルトのファイル名にもなります。
+ jump タグなどで | つきのラベルにジャンプさせたい場合は、 | 以降は指定してはいけません。上記では [jump target=*start] とありますが、このように target 属性などでラベルを指定する場合は、 | 以降は省略する必要があります。
+
+ 見出しは、たとえば以下のように省略することができます。
+ +
+*label|
+
+
+ + この場合は、前回通過した時点での見出しを引き継ぎます。
+
+ また、| の後に & をつけると、変数の内容を見出しにできます。たとえば、
+ +
+*label|&f.title
+
+
+ + とすると、f.title の変数の中身を見出しとして使用するようになります。
+
+ ラベル名 ( | より前の部分 ) は、同じシナリオファイルの中では、重複する名前があってはなりません ( 違うシナリオファイル中では重複していても OK です )。それに対して見出しは内部的に扱われるだけですので、シナリオファイルを作る側だけが注意していれば OK です。
+ また、このようなラベルの後には必ず [cm] を書きます。
+
Note
+ [cm] でなくて [ct] でもかまいません。両者の違いは、ct が操作対象のメッセージレイヤを表ページの message0 に設定するのに対し、cm はすべてのメッセージレイヤをクリアするだけで、操作対象のメッセージレイヤは変更しないということです。
+ このようなメッセージレイヤをクリアするタグを書かなければならないのは、メッセージレイヤになにが書かれているかまでは栞に保存されないためです。
+ また、セーブ可能なラベルを trans タグと wt タグの間に書くなど、「何か時間を行って処理をするタグ」と「それを待つタグ」の間には書かないことをおすすめします。

+
+ また、| を書かずに、普通にラベル名だけを記述したラベルのカ所ではセーブできません。
+
+ ・・・注意すべき事はこれだけです(^^)
+
+ このような、セーブ場所としてのラベルは増やせば増やすほど、ユーザーにセーブできるカ所を増やすことができます。ラベルは作るだけで、べつに作ったらそこに必ずジャンプするようなタグを書かなければならないというわけではありません。
+ ただ、このようなラベルの後は必ず [cm] を書かなければならないということは、よく注意してください。
+
Note
+ 内部的には、KAG は | 付きの ( セーブ可能な ) ラベルを通過するときに、KAG はその時点での状態をいったん内部に保存します。ユーザが栞の保存を選んだときに保存されるのはそのときのデータです。

+
+

disablestore タグの使用法 +

+ disablestore タグは一時的に「栞をはさむ」の機能を無効にします。
+ セーブ可能なラベルは、ゲーム本編にはいる前の、たとえばメインのメニューなどで栞を保存できても仕方ないと思うので、そのような場所には書く必要はありません。
+ KAG は、起動してからまだセーブ可能なラベルを通過しない間は「栞をはさむ」の機能は利用できません。
+ ですので、ゲームの本編にはいる前にはどこにもセーブ可能なラベルを書かなければいいのですが、それだとゲームが終わってメインメニューに戻るときには、もしセーブ可能なラベルを通過しているとメインメニューでも栞を挟めてしまえます。
+ これを防ぐため、ゲーム本編にはいるまではセーブ可能なラベルを書かないのとともに、メインメニューなどでは [disablestore] を記述して「栞をはさむ」の機能を無効にします。
+ [disablestore] を記述すると、KAG 起動時と同じく、セーブ可能なラベルを通過しない間は「栞をはさむ」の機能が使用できなくなります。
+
+

startanchor タグの使用法 +

+ startanchor タグは「最初に戻る」メニューを使用可能にします。
+ KAG のメニューバーには「システム|最初に戻る...」があります。
+ このメニューはそのままでは選択できません。
+ 戻り先を指定するには、「最初に戻る」メニューが選択されたときに戻りたい場所に、[startanchor] タグを記述します。このタグはセーブ可能なラベルのあとに書いてください。この [startanchor] 以後、「最初に戻る」メニューが使用可能になります。
+ また、メインメニューなどで「最初に戻る」の機能を使わせたくない場合は [startanchor enabled=false]と記述します。この場合は、再び [startanchor] の記述を通過しない間は「最初に戻る」の機能が使用不可能になります。
+
+ 「最初に戻る」は startanchor タグの記述された位置の栞をたどるのと似た動作をしますが、ゲーム変数 ( → 変数を使おう ) はすべてそのまま ( 保持 ) されます。
+
+

ラベル名の重複や省略 +

+ 同じシナリオファイル中に同じラベル名 ( | より前の部分 ) がある場合は、一番最初のラベルはそのままですが、次のラベルには :2:3 などの通し番号が自動的につきます。
+ たとえば、
+
+ +
+*start|スタート
+*start|セーブ場所2
+*start|セーブ場所3
+
+
+ +
+とすると、最初の *start は "*start" ですが、次の *start にジャンプなどをしたい場合は、target属性などで "*start:2" とする必要があります。その次は "*start:3" です。
+
+ また、ラベル名を省略すると、直前のラベル名と同じ物が指定されたと見なされ、通し番号がつきます。 + たとえば、
+
+ +
+*start|スタート
+*|セーブ場所2
+*|セーブ場所3
+
+
+ +
+ とすると、2番目のラベルは "*start:2" となります。3番目のラベルは "*start:3" です。
+
+ ラベルと見出しの両方を省略すると以下のような書き方になります。
+
+ +
+*start|スタート
+*|
+*|
+
+
+ +
+ この書き方は保存可能なラベルを書くときにいちいちそれぞれ異なるラベル名を指定しなくて良いので便利ですが、ラベルが通し番号で管理されているため、シナリオファイルを編集して、途中でラベルの数を減らしたり増やしたりすると、栞をたどったときに元の位置に戻れなくなったり、return タグで元の位置に戻れなくなる可能性があります。
+
+
Note
+見出しを省略すると、直前に通過したセーブ可能なラベルの見出しを引き継ぐのに対し、ラベル名を省略すると、そこを通過したか通過しなかったかに関わらず、シナリオファイル中での直前のラベル名を引き継ぎます。
+

+
+ + + + diff --git a/docs/kag3doc/contents/Sound.html b/docs/kag3doc/contents/Sound.html new file mode 100644 index 0000000..1b17d58 --- /dev/null +++ b/docs/kag3doc/contents/Sound.html @@ -0,0 +1,41 @@ + + + + + + + 効果音を使おう + + + + + + + + +

効果音を鳴らすには +

+ 効果音は Wave (PCM) 系である必要があります。つまり WAV か、あるいはプラグインで再生可能になる形式です。
+
+ 効果音再生は特に難しくなく、基本的には playse と stopse と ws の3つのタグを使います ( そのほか、効果音のフェードなどの機能を持ったタグなどがあります )。
+ たとえば、se1.wav を鳴らしたい場合は、以下のように記述します。
+
+ +
+[wait time=200]
+*start|スタート
+[cm]
+効果音を鳴らします。[l]
+[playse storage=se1.wav][ws]
+
+
+ + playse タグで効果音を再生させるのですが、playse タグは効果音の再生の終了を待たないので、ws タグで 効果音の再生の終了を待ちます。
+ playse タグで loop=true とするとループ再生をする事ができます。この場合は ws タグで待つことはできません。
+ また、stopse タグは、効果音の再生を終わらせます。
+
+ + + + diff --git a/docs/kag3doc/contents/SubRoutine.html b/docs/kag3doc/contents/SubRoutine.html new file mode 100644 index 0000000..d437dfa --- /dev/null +++ b/docs/kag3doc/contents/SubRoutine.html @@ -0,0 +1,91 @@ + + + + + + + サブルーチンを使おう + + + + + + + + + +

サブルーチンとは +

+ サブルーチンとは、いくつかの処理のをまとめた物で、ほかの箇所から「呼び出して」つかう物です。サブルーチンの処理が終わると、呼び出した所へ制御が戻ります。
+
+ マクロ ( → マクロを使おう ) と機能は似ていますが、サブルーチンの方がより本格的な処理を行うのに対し、マクロは簡単な処理を行う用途です。
+
+

サブルーチンの基本的な使い方 +

+ サブルーチンはラベルによって区別されますので、ラベルを定義します。サブルーチンから呼び出し元に戻るところに return タグ、サブルーチンを呼び出すには call タグを用います。
+ 下の例を見てください。
+ +
+[wait time=200]
+*start|スタート
+[cm]
+サブルーチンを呼び出します。[l][r]
+[call target=*subroutine]
+サブルーチンを呼び出しました。
+[s]
+
+*subroutine
+これはサブルーチンです。[l][r]
+クリックをすると呼び出し元に戻ります。[l][r]
+[return]
+
+
+ +
+ さて、この例を実行させると、「サブルーチンを呼び出します。」のメッセージのあとに「これはサブルーチンです。」と表示され、「クリックをすると呼び出し元に戻ります。」でクリックすると、「サブルーチンを呼び出しました。」と表示されるはずです。
+ つまり、call タグで指定したラベルにジャンプをするのですが、このときに呼び出した位置が自動的に記録され、return タグでは、この記録された呼び出し元に自動的に戻ります ( この自動的に記録されるものを「コールスタック」と呼んでいます )。
+ この例では、*subroutine から [return] までが「サブルーチン」です。
+
+ サブルーチンの中からほかのサブルーチンを呼び出すこともできます。呼び出しの深さ ( return せずにいくつまで call できるか ) に制限はありません。
+
+ ちなみに「選択肢を使ってみよう」の所ではラベルの次には [cm] を書くと書きましたが、セーブの箇所となるような ( | 付きの ) ラベルの次でなければ [cm] を書かなくても OK です。
+
+
+ コールスタックには、シナリオファイル名、シナリオ中の直前のラベルとそれから call タグのある行までの行数、call タグのある行の内容、その行内での位置の情報しか記録されません。シナリオのデバッグ中などで、戻り先のシナリオファイル中の構成が変わるととんでもない位置に戻ってしまう場合があるので注意してください。
+ 基本的には、サブルーチンのラベルやサブルーチン中には、セーブ箇所となるラベル ( | 付きのラベル ) を使わない/作らないが吉です。
+
+

サブルーチンに関する注意 +

+ call で自分自身を呼びだしてしまったりすると無限ループにはまります。
+ call と return の対応がとれていないと、どんどんコールスタックが増えていったり、あるいは return タグのところで呼び出し元に戻れなくなってエラーになる事がありますので、注意してください。
+
+ それと、次の例のように
+
+ +
+*subroutine
+・・・
+[if exp="f.flag1"][jump target=*otherplaces1][endif]
+[if exp="f.flag2"][jump target=*otherplaces2][endif]
+・・・
+[return]
+
+*otherplaces1
+・・・
+[return]
+
+*otherplaces2
+;この先には return タグがない・・・
+
+
+ +
+ サブルーチン中で他の場所にジャンプする場合は注意してください。otherplaces1 にジャンプする場合は、ジャンプ先に return があるので call 〜 return のバランスを崩すことはありません。しかし、otherplaces2 にジャンプする場合、ジャンプした先に return が現れないので、そのサブルーチンからは「戻ってない」ことになります。つまり、call 〜 return のバランスを崩してしまいます。
+
+ もし、呼び出し元に戻るのではなく、任意の場所に戻りたい場合は、return タグの storage や target 属性を利用して、任意の場所に戻ることができます。
+
+ + + + diff --git a/docs/kag3doc/contents/TJSTips.html b/docs/kag3doc/contents/TJSTips.html new file mode 100644 index 0000000..cf186f2 --- /dev/null +++ b/docs/kag3doc/contents/TJSTips.html @@ -0,0 +1,815 @@ + + + + + + + TJSをもっと使うために + + + + + + + + +

TJS2とKAG +

+ TJS ( TJS2 ) は吉里吉里本体が直接理解できるスクリプト言語で、JavaScript や JAVA ににています。KAG はこの TJS スクリプトで記述されています。
+ TJS スクリプトは KAG が理解する ( 抽象的な ) シナリオよりもよりシステム側に近い ( 具体的な ) 記述をすることが可能で、扱いは難しくなりますができることの幅はぐっと広がります。
+
+ KAG には eval emb link if タグなどの exp 属性、各タグの cond 属性、エンティティ ( & 付きのタグの属性 ) などなど、「TJS式」を指定する場面がいくつかあります。
+ TJS式を使うと、普通は KAG の裏に隠れている 吉里吉里に比較的簡単にアクセスすることができます。
+ また、iscript タグは、TJS2 スクリプトを直接実行することができます。これにより、高度な処理を実行したり、KAGの機能を拡張したりすることができます。
+
+ TJS2 の細かい文法については TJS2 のリファレンスを、吉里吉里本体の機能については吉里吉里2のリファレンスをご覧ください。
+
+

KAG のオブジェクト構造 +

+ KAG それ自体は TJS2 スクリプトで記述されているため、( 良くも悪くも ) KAG の内部構造に直接アクセスすることができます。
+ KAG の管理するオブジェクトの変数に値を書き込む事などは相当注意したほうが良いですが、KAG 内部の変数を参照してより高度なシナリオ記述に応用することもできます。
+
+
+
KAGWindow クラスのオブジェクト
+
 KAGWindow クラス ( MainWindow.tjs に記述 ) は、KAG のウィンドウを管理するためのクラスで、このクラスのオブジェクトがグローバル変数の kag としてアクセスできます。
+ たとえば、KAGWindow クラスの skipMode という変数 ( 現在どのようなモードでスキップ処理中かが入っている変数 ) にアクセスするには kag.skipMode とします。
+
背景レイヤ
+
 背景レイヤは BaseLayer クラス ( GraphicLayer.tjs に記述 ) のオブジェクトです。
+ 表画面の背景レイヤは kag.fore.base、裏画面の背景レイヤは kag.back.base でアクセスできます。
+
前景レイヤ
+
 前景レイヤは CharacterLayer クラス ( GraphicLayer.tjs に記述 ) のオブジェクトです。
+ 表画面の前景レイヤは kag.fore.layers[n]、裏画面の前景レイヤは kag.back.layers[n] でアクセスできます ( n は前景レイヤ番号 0 〜 )。
+
メッセージレイヤ
+
 メッセージレイヤは MessageLayer クラス ( MessageLayer.tjs に記述 ) のオブジェクトです。
+ 表画面のメッセージレイヤは kag.fore.messages[n]、裏画面のメッセージレイヤは kag.back.messages[n] でアクセスできます ( n はメッセージレイヤ番号 0 〜 )。
+ kag.current は現在操作対象となっているメッセージレイヤを表します。
+
メッセージレイヤ内のオブジェクト
+
 メッセージレイヤ内に作成した、グラフィカルボタン、エディット、チェックボックスなどにアクセスするにはメッセージレイヤの links を使います。
+ links は配列オブジェクトで、リンク、グラフィカルボタン、エディット、チェックボックスなどが作成された順に、それぞれを管理するオブジェクトへの参照が格納されています。そのうち、グラフィカルボタン、エディット、チェックボックス についてはさらにそのなかの object 変数にアクセスすることによって各クラスのオブジェクトに直接アクセスできます。
+ たとえば、表画面のメッセージレイヤ0に以下のような記述があって、
+ +
+@cm
+@edit length=420 name="f.name"
+
+
+ +  このエディットにフォーカスを設定する ( キーボードから入力できるようにする ) にはさらに
+ +
+@eval exp="kag.fore.messages[0].links[0].object.focus()"
+
+
+ + と記述することができます ( エディットを表示してユーザに入力をすぐに促したいときに便利 )。
+
効果音バッファ
+
 効果音バッファは SESoundBuffer クラス ( SE.tjs に記述 ) のオブジェクトです。
+ kag.se[n] でアクセスできます ( n は効果音バッファ番号 0 〜 )。
+
BGM オブジェクト
+
 BGM オブジェクトは BGM クラス ( BGM.tjs に記述 ) のオブジェクトです。
+ kag.bgm でアクセスできます。
+
メニュー
+
 メニューオブジェクトには kag.menu でアクセスできます。kag.menu は +MenuItem クラスのオブジェクトで、kag.menu それ自体はメニューバーを +示しており、その子に登録されたアイテムがメニューバーに並ぶことになります。
+ メニュー項目は Menus.tjs で作成していていますが、Menus.tjs を直接書き換えると +KAGシステムのアップデートなどでいちいち書き換えなければならなくなるので、後述するように +AfterInit.tjs を作成してそこに変更点を記述すると楽です。
+ +

TJS を使うときの注意 +

+ KAG が栞に保存しない物に直接手を加えると、KAG が栞を読み込んでもそこの部分を再現できません。
+ KAG プラグインの onStore や onRestore をフックして栞に情報を保存するようにすれば問題ないのですが、そうしない場合は注意する必要があります。
+ 特に Layer クラスに属する描画メソッドなどを使って、KAG の管理する背景レイヤや前景レイヤの内容に変更を加える場合などは注意が必要です。KAG は、レイヤにどのような画像が読み込まれていたかまでは記録しますが、レイヤに加えられた描画や変更までは記録しません。ですので、そのような状態で「栞を保存可能なラベル」を通過し、そこで栞を保存し、その栞を読み出しても、レイヤに加えた変更は再現できないことになります。
+ このような場合は、次に「栞を保存可能なラベル」を通過するまでに画像をクリアしたり別の画像を読み込むなどして KAG が管理しきれる状態に戻しておくか、あるいは「栞を保存可能なラベル」を書かない、などで回避することができます。
+ TJS を使う場合は、栞との関連について十分注意してください。
+
+

式中の演算や条件判断、表示に使うもの +

+
+
&&||
+
 この二つは演算子で、&& は「かつ」を表し、|| は「または」を表します。
+ たとえば、f.flag1 が 1 で、かつ、f.flag2 が 2 の場合、という条件で何かをやりたい場合は、
+
+[if exp="f.flag1==1 && f.flag2==1"]
+
+ と書くことができます。
+ また、f.flag1 が 1 または 2 または 3 の場合、という条件の場合は、
+
+[if exp="f.flag1==1 || f.flag1==2 || f.flag1==3"]
+
+ と書くことができます ( f.flag1 が整数ならば f.flag1>=1 && f.flag1<=3 とも書けますが )。
+ 普通の数式で足し算よりもかけ算を優先して計算しないとならないように、&&|| には優先順位に違いがあって、&& の方が優先されます。
+ ですので、たとえば f.flag1 が 1 の場合で、かつ、f.flag2 が 3 または 5 のとき、という場合は、
+
+[if exp="f.flag1==1 && (f.flag2==3 || f.flag2==5)"]
+
+ のように ( ) カッコでくくらなければなりません。
+
randomintrandom
+
 random は 0 以上 1 未満の実数の乱数となります。
+
+ +
+例:
@eval exp="f.ransuu = random"
+
+ +
+ 上記の例のようにすると、f.ransuu には 0 以上 1 未満の実数の乱数が入ります。
+
+ これに対し、intrandom は指定値以上、指定値以下の整数の乱数を返す関数です。
+
+書式 : intrandom(最小値, 最大値)
+
+ +
+例:
@eval exp="f.ransuu = intrandom(0, 5)"
+
+ +
+ 上記の例 +のようにすると 0 以上 5 以下の整数の乱数が f.ransuu に入ります。
+
length
+
 length は、文字列の長さを得ることのできるものです。使い方は、文字列の代入された変数の後に . (ドット) を書き、続けて length と書きます。
+
+ +
+例:
[if exp="f.namae.length>=8"]名前が長すぎます。[l][jump target=*input][endif]
+
+ +
+ 上記の例では、f.namae の長さが8文字以上だった場合に「名前が長すぎます。」と表示し、*input ラベルにジャンプします。
+ 文字は半角、全角問わず、一文字は一文字として数えられます。これは他の文字列を扱う機能でも同じです。
+
substring
+
 substring は、文字列の一部分(部分文字列)を取り出すことのできるものです。
+ 使い方は、文字列の代入された変数 ( または文字列を表すもの ) のあとに . (ドット) を書き、続けて
+
+substring(切り取り開始位置, 切り取る長さ)
+
+ の書式で記述します。切り取り開始位置は 0 が先頭を表します。
+
+ たとえば、f.furigana 変数の2番目の文字を取り出したい場合、f.furigana.substring(1, 1) で取り出すことができます。
+
+ +
+例:
@emb exp="f.furigana.substring(1, 1)"
+
+ +
+ 上記の例では、f.furigana 変数の2番目の文字を表示します。
+
indexOf
+
 indexOf (インデックス・オブ) は、文字列中の部分文字列が最初に現れる位置を得ることができます。使い方をかえれば、ある文字列中に他の文字列が入っているかどうかを調べることができます。
+
+書式 : 文字列.indexOf(部分文字列)
+
+ たとえば、文字列が "ABCDEFGHIJKL" で、部分文字列が "ABC" であった場合、"ABCDEFGHIJKL".indexOf("ABC")0 になります。部分文字列が "BCD" の場合は 1"DEF" の場合は 3 になります。 + もし、部分文字列が文字列中に現れなかった場合は -1 になりますので、部分文字列が文字列の一部であるかどうかを判定するには -1 と比較すればいいことになります。
+
+ +
+例:
[if exp="'尼屁尻'.indexOf(f.objname)!=-1"]〜〜[endif]
+
+ +
+ 上記例では、f.objname"尼" "屁" "尻" "尼屁" "屁尻" "尼屁尻" のいずれかであった場合に endif までを実行します。
+ これを、"尼屁" "屁尻" "尼屁尻" では NG にしたい場合 ( "尼" "屁" "尻" の場合のみ OK にしたい場合 )、'尼屁尻'のそれぞれを f.objname 内では現れることのない文字(や記号) で区切ることによって実現できます。
+ たとえば、\v という特殊な制御記号をつかって区切ると、上記の例は
+
+[if exp="'尼\v屁\v尻'.indexOf(f.objname)!=-1"]〜〜[endif]
+とかくことができます ( \v は通常、f.objname 内には現れないから )。
+
+ 下記例では、f.itemname 内に 'コップ' という文字列が含まれている場合に endif までを実行します。
+
+ +
+例:
[if exp="f.itemname.indexOf('コップ')!=-1"]〜〜[endif]
+
+ +
+
正規表現
+
 正規表現パターン ( / と / で囲まれた部分 ) を使って正規表現パターンによる文字列の分解や検査を行うことができます。
+ 正規表現パターンそのものは Perl の正規表現によく似ています ( 使い方は違いますが正規表現パターンはほぼ互換です )。
+
+ 文字列が目的のパターンに適合しているかどうかを調べるには test を使います。
+
+ +
+例:
[if exp="/[^0-9]/.test(f.nyuryoku)"]入力された文字に数字以外が混じっています[endif]
+
+ +
+ 上記の例のようにして test を使います。test はパターンに合致すると真を、合致しないと偽を返す関数(正規表現オブジェクトのメソッド)です。上記の例では、[^0-9] つまり数字以外が混じっているかどうかを検査する正規表現パターンを用いて、f.nyuryoku に数字以外の文字が混じっているかを検査しています。
+
+ 文字列を分解するには match を使います。match は配列オブジェクトを返します。パターンに合致しなかった場合は配列の要素数 ( count ) が 0 になります。それ以外の場合、要素 0 はマッチした部分全体、要素 1 からあとはパターン中の ( ) (カッコ) に対応してマッチした部分が返されます。
+
+ +
+例:
[eval exp="f.matched = /([0-90-9]+)[-−]([0-90-9]+)/.match(f.input)"]
+[if exp="f.matched.count == 0"]「数値-数値」の形式で入力してください。[jump target=*input][endif]
+[eval exp="f.s1 = str2num(f.matched[1]), f.s2 = str2num(f.matched[2])"]
+
+
+ + 上記の例では、f.input が「数値-数値」の形式に合致しているかをテストして、合致していれば - (ハイフン) の前の部分の f.s1 に、後の部分を f.s2 に、数値に変換してから代入しています。
+
str2num
+
 str2num は、文字列を数値に変換します。
+
+書式 : str2num(文字列または文字列の入った変数)
+
+ 単項の + 演算子と違うのは、str2num は、全角の数字であっても数値に変換できるということです。input タグのように、ユーザが全角で数値を入力してしまう可能性のある場合に使用できると思います。数値として認識できない文字列が渡された場合は 0 になります。
+
+ +
+例:
[input name="f.kazu" prompt="数値を入力してください"][emb exp="f.kazu=str2num(f.kazu)"]
+
+ +
+ +
kansuujikansuuji_simple
+
 kansuuji は、指定された数値を漢数字表記にします。kansuuji_simple も同様ですが、桁を表す単位をつけません。
+ 9223372036854775807 という数値を、kansuuji の場合は "九百二十二京三千三百七十二兆三百六十八億五千四百七十七万五千八百七" に、kansuuji_simple の場合は "九二二三三七二〇三六八五四七七五八〇七" に変換します。
+ +
+例:
@emb exp="kansuuji(f.num)"
+
+
+ + 上記の例では、f.num を漢数字表記にして表示しています。
+
+
number_format
+
 number_format は、指定された数値を3桁ごとに , (カンマ) で区切った表記にします。たとえば、9223372036854775807 という数値ならば "9,223,372,036,854,775,807" に変換されます。
+ +
+例:
@emb exp="number_format(f.num)"
+
+
+ + 上記の例では、f.num を 3桁ごとにカンマで区切って表示しています。
+
+ +
Storages.addAutoPathSystem.exePath
+
 Storages.addAutoPath は、自動検索パスを追加します。
+ System.exePath は、吉里吉里実行可能ファイルの設置されているフォルダを示します。
+ 詳しくは吉里吉里 SDK Help を参照していただきたいのですが、これらを使うとアーカイブやフォルダに自動検索パスを設定できます。
+ 自動検索パスは、わざわざフォルダを指定しなくても、ファイルを自動的に見つけてくるための仕組みです。標準では、system image scenario bgimage fgimage bgm sound rule others video のすべてが設定されていますが、Storages.addAutoPath で追加することができます。
+System.exePath は、吉里吉里実行可能ファイルのあるフォルダです。
+
+ たとえば、吉里吉里実行可能ファイルの直下に cgdata というフォルダがあって、そこの中を自動検索パスに指定したい場合は、
+
+[eval exp="Storages.addAutoPath(System.exePath + 'cgdata/')"]
+
+ とします ( cgdata の後の二つの / は必ずつけてください )。
+
+ もし、吉里吉里実行可能ファイルと同じ場所に cgdata.xp3 というアーカイブファイルがあって、このアーカイブ内に自動検索パスを指定したい場合は、
+
+[eval exp="Storages.addAutoPath(System.exePath + 'cgdata.xp3>')"]
+
+ とします。cgdata.xp3 の後の記号は '>' です。アーカイブ内に検索パスを指定する場合は > で、フォルダ内に検索パスを指定する場合は / です。
+ アーカイブの後の記号は 吉里吉里2 2.19 beta 14 で '#' から '>' に変更となりました。
+
+
Storages.searchCD
+
 Storages.searchCD は、引数に渡されたボリュームラベルを持つ CD が挿入されたドライブの文字を返します。
+ たとえば、上記 Storages.addAutoPath と組み合わせて、FOO_BAR_DISC というボリュームラベルを持つ CD-ROM 内の image というフォルダに自動検索パスを追加したい場合、
+
+[eval exp="Storages.addAutoPath(Storages.searchCD('FOO_BAR_DISC') + ':image/')"]
+
+ と記述することができます。
+
+ Stotages.searchCD は、指定されたボリュームラベルを持つ CD が挿入されたドライブが見つからない場合は空文字列を返すので、たとえば指定の CD-ROM がドライブに挿入されていることを確認するために、
+
+[if exp="Storages.searchCD('FOO_BAR_DISC') == ''"]CDが挿入されていません[endif]
+
+ のように記述することができます。
+
System.readRegValue
+
 System.readRegValue では、レジストリに書き込まれた値を読むことができます。たとえば、HKEY_LOCAL_MACHINE\SOFTWARE\Dee\kirikiri\installpath を f.installpath に読み込むには、
+
+[eval exp="f.installpath = System.readRegValue('HKEY_LOCAL_MACHINE\\SOFTWARE\\Dee\\kirikiri\\installpath')"]
+ とします。'' で囲まれた中では \ は \\ と記述しなければならないことに注意してください。
+ 文字列と数値の値のみを読むことができます。レジストリに値が存在しない場合は void になるので、=== (識別演算子) を用いて
+
+[if exp="f.installpath === void"]インストールされていません[endif]
+
+ のような記述をすることができます。
+
kag.clickCount
+
 画面上をマウスでクリックするたびに 1 が加算されます。この変数には値を代入してもかまいませんので、0 に設定しておけば、マウスがクリックされたことを、この変数が 0 以外の数値になっていることで知ることができます。
+
kag.lastMouseDownXkag.lastMouseDownY
+
 これらは、最後にマウスがクリックされた座標を表しています。kag.lastMouseDownX は最後にクリックされた X 座標、kag.lastMouseDownY は最後にクリックされた Y 座標です。
+
kag.lastWaitTime
+
 wait タグを mode=until で使用したとき、実際に wait タグがまとうとした時間が設定されます。すでにまとうとしていた時間が過ぎていた場合は 0 になりますので、wait タグの直後でこの変数が 0 でないかどうかを判断すれば、処理が追いついているかどうかを判断することができます。
+ ちなみに、クリックなどで wait が中断された場合は、この変数は正確に待っていた時間を表す訳ではありません ( 中断がなかったとした場合の時間を表しています )。
+
kag.skipMode
+
 現在のスキップのモードを表す値が入っています。0=スキップなし, 1=クリック待ち記号まで, 2=改ページ待ち記号まで, 3=次の停止まで、となっています。
+ たとえば、声や効果音などをスキップ中には再生したくない場合は、
+
+@playse cond="kag.skipMode<=1" storage="hogehoeg.wav"
+
+ のように記述することができます。
+
kag.autoMode
+
 自動読みすすみの処理中の時に真、それ以外の時に偽になっています。
+ たとえば、声や効果音などの終了を、自動読みすすみの時のみに処理したい場合は、
+
+@ws cond="kag.autoMode"
+
+ のように記述することができます。
+
kag.getBookMarkPageName
+
 kag.getBookMarkPageName は、非フリーセーブモードにおいて、引数に指定された番号 ( 0 〜 ) で示された、栞の場所の名前を得ることが出来ます。
+ KAG のメニューからではなく、画面上で栞を示してユーザーにたどる栞を選ばせたいときに使うことが出来ます。
+ kag.restoreBookMark と組み合わせて使います。
+ +
+例:
[locate x=10 y=100][link exp="kag.restoreBookMark(0)"][emb exp="kag.getBookMarkPageName(0)"][endlink]
+[locate x=10 y=130][link exp="kag.restoreBookMark(1)"][emb exp="kag.getBookMarkPageName(1)"][endlink]
+(以下同様)
+
+
+ +
+
mp
+
 mp は、マクロ中にて、マクロに渡された属性が記録された辞書配列を表します。
+ +
+例:
@macro name=fimg
+@image *
+@eval exp="sf[mp.storage]=1"
+@endmacro
+
+
+ + 上記の例では、たとえば @fimg layer=base page=fore storage="bg_03" と記述された場合、このマクロが実行されている間は mp.layer'base'mp.page'fore''mp.storage''bg_03' になっています。つまり、マクロに渡された属性を mp. の後に指定することによって、その属性の値を得ることができます。
+ このマクロを @fimg layer=base page=fore storage="bg_03" として使用した場合、exp タグで sf[mp.storage]=1 が実行されるため、sf['bg_03'] が 1 になります。
+ このマクロは、image/img タグの代わりに使うことにより、表示した画像を自動的にシステム変数に記録するマクロとして使用することができます。
+
System.getKeyState
+
 System.getKeyState は、現在その時点で、指定されたキーが押されているかどうかを判断することができます。
+ +
+例:
@jump target=*shift_key_pressed cond="System.getKeyState(VK_SHIFT)"
+; シフトキーが押されていれば、*shift_key_pressed にジャンプする
+
+
+ +詳しくは吉里吉里2 SDK Help を参照してください。
+
+ KAG3はゲームパッド(ジョイスティック)からの入力を受け付けますが、ゲームバッドの上に物が乗っかっている、あるいはジョイスティックの軸の調整が不十分という場合には、正常に作品の操作をできない場合があります。
+ 作品開始時にゲームパッドのボタンが押されていれば、ユーザに対して警告をすることができます (通常、作品開始時にゲームパッドのボタンが押されていることはなく、押されているとなれば、ユーザの意図しない理由で押されたままになっている可能性が高いため)。
+ USB接続のゲームパッドなどでは下記の例では「押されっぱなし」の検出がうまくいかないかもしれませんので、適宜ドキュメントなどでの補足を推奨します。
+ +
+例:
@if exp="System.getKeyState(VK_PADANY)"
+@wait time=500
+@if exp="System.getKeyState(VK_PADANY)"
+; VK_PADANYでは、ゲームパッドのいずれかのボタンが押されている時に真を返す
+; 500ms(0.5秒間)をすぎてもなお押されているようならばメッセージを表示
+ゲームパッド(ジョイスティック)のボタンが押されたままになっています。
+ゲームパッドの上に物が乗っかっていないか、あるいはジョイスティックの
+軸の調整がされているかを確認してください。
+状況が改善しない場合は、ゲームパッド(ジョイスティック)を抜いてください。
+それでも状況が改善しなければ、ゲームを終了し、「エンジン設定」を起動し、
+「入力-パッド使用可否」の設定を「使用しない」に設定してください。
+[s]
+@endif
+@endif
+
+
+ +
+ +
+ +
+

リンクやボタンの exp 属性などに指定するもの +

+
+
System.shellExecute
+
 System.shellExecute は、引数に指定されたファイルを開きます。URL を指定するとブラウザが開くので、link タグなどを使ってこの式を実行させれば、Web ページへのリンクなどを作成することが出来ます。
+
+ +
+例:
[link exp="System.shellExecute('http://www.yahoo.co.jp/')"]http://www.yahoo.co.jp/[endlink]
+
+ +
+
kag.closekag.shutdown
+
 kag.close は、KAG を終了させます。終了確認を行う設定にしている場合は終了確認があります。
+ kag.shutdown も KAG を終了させますが、終了確認はありません。
+ なお、終了に System.exit() を使用すると、システム変数が保存されずに終了される場合があるので使用しないでください。また、これらは eval タグの exp 属性では指定しないでください (代わりに close タグを使用してください)。
+
+ +
+例:
[link exp="kag.close()"]終了[endlink]
+[link exp="kag.shutdown()"]終了[endlink]
+
+
+ +
+
kag.restoreBookMarkkag.storeBookMark
+
 kag.restoreBookMark は、非フリーセーブモードにおいて、引数に指定された番号で示された栞をたどります。
+ 同様に、kag.storeBookMark は、引数に指定された番号で示された栞を挟みます。
+ ただし、これを直接呼び出すと、[store] タグで栞の使用が禁止されていても栞の操作が出来てしまいます。
+ これらは、成功すると真を、失敗すると偽を返します。
+ 例は kag.getBookMarkPageName の物を参照してください。
+
kag.loadBookMarkFromFileWithAskkag.saveBookMarkToFileWithAsk
+
 kag.loadBookMarkFromFileWithAsk は、フリーセーブモードにおいて、ファイル選択ダイアログボックスを表示し、ユーザに栞データを選択させます。ユーザが OK ボタンを押すとその栞から再開します。
+ 同様に、kag.saveBookMarkToFileWithAsk は、ファイル選択ダイアログボックスを表示し、栞を保存します。
+ これらは、成功すると真を、ユーザがキャンセルをするか、あるいは失敗すると偽を返します。
+ +
+例:
[link exp="kag.loadBookMarkFromFileWithAsk()"]栞をたどる[endlink]
+[link exp="kag.saveBookMarkToFileWithAsk()"]栞をはさむ[endlink]
+
+
+ +
+
kag.callExtraConductor
+
 kag.callExtraConductor は、TJS の制御によって KAG のシナリオをサブルーチンとして呼び出すために用います。このメソッドでシナリオを呼び出すときは、シナリオがクリック待ちや s タグで停止中である必要があります ( kag.inStable や KAG プラグインの onStableStateChanged で知ることができます )。
+ kag.callExtraConductor には引数が3つあります。
+ 最初の引数は呼び出すシナリオファイルです。次の引数は呼び出すラベルです。
+ 3番目の引数は省略可能ですが、KAG のシナリオから戻ったときに実行する関数/メソッドを指定します。必要ない場合は指定しなくてかまいません。
+
+ +
+例:
[button graphic="showhist" exp="kag.callExtraConductor('rclick.ks', '*showhist')"]
+
+ +
+ これで呼び出すサブルーチンの書き方は、右クリックサブルーチンの書き方に準じます。
+ 右クリックサブルーチン中や、すでにこの機能を使って KAG のシナリオを呼び出している最中では、この機能は使用できません。
+
kag.se[n].play
+
 効果音バッファの play メソッドは、効果音の再生を開始します。
+ 以下の形式で指定します。
+
+  +
+kag.se[効果音バッファ番号].play(%[storage: 再生する効果音のファイル名, loop: ループするか]); +
+ +
+ これをたとえば、以下の例のように link タグの onenter 属性に指定すれば、選択肢の上にマウスカーソルが乗ったときに効果音を発音することができます。
+
+ +
+例:
[link target=*foo onenter="kag.se[0].play(%[storage:'select.wav', loop: false])"]選択肢〜[endlink]
+
+ +
+ この例では、効果音バッファ 0 番で select.wav を、ループをせずに再生します。他にも TJS の制御で効果音を鳴らしたいときに便利です。
+

配列 +

+ 吉里吉里2/KAG3 では配列を簡単に使うことができます。
+ 配列を使う場合は、最初に [ ] を使って配列を宣言しないとなりません。
+
+ +
+例:
[eval exp="f.hairetsu = []"]
+
+ +
+ 上記の例では、f.hairetsu を配列として使うことを宣言しています。もしすでに f.hairetsu が配列だったり、他の数値とか文字列であったとすると f.hairetsu の内容は消去されてしまいますので注意してください。
+ システム変数などで配列を使いたい場合は、初期状態では変数はすべて void が代入されていると見なされることを利用して、
+
+ +
+例:
[eval exp="sf.hairetsu = [] if sf.hairetsu === void"]
+
+ +
+ とすれば、初回起動時だけ配列を宣言することができます。2回目以降でも配列が消去されることはありません。
+
+ 配列に値を代入するには [ ] を使います。[ ] 内には添え字 ( 要素番号 ) を書きます。添え字は 0 から始まります。
+
+ +
+例:
[eval exp="f.hairetsu[0] = 'zero', f.hairetsu[1] = 'one'"]
+
+ +
+ 上記の例では f.hairetsu[0] に 'zero' を、f.hairetsu[1] に 'one' を代入しています。
+ 配列の要素数は宣言する必要はありません。必要な大きさまで自動的に拡張されます。配列の要素数を得たり設定したりするには count プロパティを用いて f.hairetsu.count などとします。
+
+ 表示も同様に行えます。
+
+ +
+例:
0 : [emb exp="f.hairetsu[0]"]    1 : [emb exp="f.hairetsu[1]"]
+
+ +
+ 2次元配列を用いるのはすこし難しいですが、例だけ挙げておきます。
+ +
+@iscript
+// 1次元目の要素数が 5 の2次元配列を作成する
+f.twodim = [] if f.twodim === void; // twodim に1次元目の配列を作成
+for(var i = 0; i < 5; i++) f.twodim[i] = [] if f.twodim[i] === void;
+// この状態で f.twodim[0] 〜 f.twodim[4] がそれぞれ配列なので
+// f.twodim[0][3] や f.twodim[4][2] などと指定できる
+@endscript
+
+// あるいは、単純にたとえば1次元目の要素数が5の配列を作成するならば
+f.twodim = [ [], [], [], [], [] ];
+// ( 配列を [] で作成するときにその中に初期要素をカンマで区切って指定できるが、
+//   そのときに初期要素として配列を入れ子に指定する )
+
+
+ +
+

辞書配列 +

+ 吉里吉里2/KAG3 では辞書配列も使うことができます。
+ 辞書配列 ( 連想配列とも呼びます ) とは、名前と、それに対応する値の組を覚えることのできる配列です。
+ 辞書配列を使う場合は、配列と同じように、最初に %[ ] を使って配列を宣言しないとなりません。
+
+ +
+例:
[eval exp="f.dict = %[]"]
+
+ +
+ 上記の例では、f.dict を辞書配列として使うことを宣言しています。もしすでに f.hairetsu が辞書配列だったりしたばあいの注意は配列と同じです。
+
+ 辞書配列に値を代入するにも [ ] を使います ( %[ ] ではありません )。[ ] 内には「名前」となるものを書きます。
+
+ +
+例:
[eval exp="f.dict['zero'] = 0, f.dict['one'] = 1"]
+
+ +
+ 上記の例では f.dict['zero']0 を、f.dict['one']1 を代入しています。普通の配列と違うのは文字列を [ ] 内に指定することです。
+
+ 表示も同様に行えます。
+
+ +
+例:
zero : [emb exp="f.dict['zero']"]    one : [emb exp="f.dict['one']"]
+
+ +
+ ちなみに [ ] ではなく . を使うこともできます。f.dict['zero']f.dict.zerof.dict['one']f.dict.one と記述することができます ( ただし . の次には「予約語」や「変数名として使えない名前」が来ることはできません )。
+
+ 実は KAG の fsf といったもの自体も辞書配列で、f.dict としたばあいは、辞書配列の中の 'dict' という名前のついた値にアクセスしていたことになります ( もちろん、f['dict'] でもアクセスできます )。
+
+ +

日付/時刻を得る +

+ 現在の日付や時刻を得るには以下のようにします。
+ +
+[iscript]
+{
+    // ↑  endscript の中を {  } で囲むのは この中で宣言された変数を
+    // ローカル変数にするため ( そうしないとグローバル変数になる )
+    var d = new Date(); // Date クラスのオブジェクトを作成
+    // Date クラスのオブジェクトは、作成時に引数に何も指定しなければ
+    // 作成時点の現在時刻を保持している
+    f.year = d.getYear();  // f.year に 年
+    f.month = d.getMonth() + 1; // f.month に 月
+    f.date = d.getDate(); // f.date に 日
+    f.hours = d.getHours(); // f.hours に 時
+    f.minutes = d.getMinutes(); // f.minutes に 分
+    f.seconds = d.getSeconds(); // f.seconds に 秒
+}
+[endscript]
+
+
+ +
+

process +

+ kag.process は、シナリオを指定した位置から実行します。
+ 最初の引数は読み込むシナリオファイル名です。空文字列を指定すると現在のシナリオファイルが使用されます。
+ 2番目の引数は、実行を開始するラベルです。空文字列を指定するとシナリオファイルの先頭から実行します。
+
+ +
+例:
kag.process('', '*label2')
+kag.process('scenario4.ks', '*label5')
+
+
+ +
+ たとえシナリオが実行中であろうとも、強制的にそのラベルに飛ぶので注意してください。
+
+ +

leftClickHook, rightClickHook, keyDownHook +

+ KAG は、左クリックされたとき、右クリックされたとき、キーが押されたときのそれぞれの場合に、登録した関数を呼び出す機能があり、フックと呼んでいます。
+ フックは、複数の関数を登録できるように配列になっています。それぞれ kag.leftClickHookkag.rightClickHookkag.keyDownHook でアクセスできるようになっています。
+ これらに登録した関数で true が返されると、KAG はもともとその機能に割り当てられていた機能を実行しません。たとえば、R キーが押されたとき、keyDownHook に登録された関数が true を返すと、元々の機能である「メッセージ履歴を表示する」の機能は実行されなくなります。
+
+ leftClickHook と rightClickHook には、呼び出される関数に引数はありません。
+ leftClickHook は、Enter キーや Space キー等でも発生します。また、マウスで選択肢などをクリックしたときには発生しません。
+
+ +
+例:
@iscript
+function myLeftClickHook()
+{
+    kag.process('', '*label');
+    return true;
+}
+@endscript
+@eval exp="kag.leftClickHook.add(myLeftClickHook)"
+@s
+
+*label
+@eval exp="kag.leftClickHook.remove(myLeftClickHook)"
+やあー。
+@s
+
+
+ +
+ 上記の例では、クリックされると *label が実行されます。
+ 強制的に実行が *label に移るので注意してください。トランジションや自動移動を実行中等の場合は stoptrans や stopmove タグで実行を停止したほうが安全です。
+
+ keyDownHook は、呼び出される関数には2つ引数が渡されて、一つ目は押されたキーの仮想キーコード、二つ目はそのキーが押されていたときに同時に押されていたシフト系のキーの状態です。詳しくは吉里吉里2 SDK Help を参照してください。
+
+ +
+例:
@iscript
+function myKeyDownHook(key, shift)
+{
+    if(key == #'R')
+    {
+        // R のキーが押されたら
+        kag.process('', '*label');
+        return true;
+    }
+}
+@endscript
+@eval exp="kag.keyDownHook.add(myKeyDownHook)"
+@s
+
+*label
+@eval exp="kag.keyDownHook.remove(myKeyDownHook)"
+やあー。
+@s
+
+
+ +
+

touchImages +

+ System.touchImages は、画像をキャッシュに読み込みます。
+ 詳しくは 吉里吉里2ドキュメントの System.touchImages をご覧ください。このメソッドは、たとえばなにかのウェイトで時間があいたときを利用して、画像を先読みしておく用途に使えます。
+ KAG で使う場合は、前景、背景画像 ( ただし key 属性を指定しないものに限る ) に対して有効です。image や img タグの storage 属性に指定するものと同じ物を storages 引数に配列にして指定してください。
+ 第2引数は -2*1024*1024 あたりを指定しておくと良いようです。
+ 第3引数には、待つ時間 - 200ms あたりを指定しておくと良いようです。
+
+ +
+例:
@resetwait
+@eval exp="System.touchImages(['24_5', '24_4', 'uni', '24'], -2*1024*1024, 800)"
+@wait mode=until time=1000
+
+
+ +
+ ただし、このメソッドは、画像がキャッシュに入るということは保証しないという、不確定的なものです。ですから、絶対に画像を先に読んでおかなければいけない用途には使うべきではありません。そのような用途には後述の assignImages の項で説明する方法を使う方が確実です。
+
+

assignImages +

+ assignImages は、レイヤの画像を他のレイヤにコピーします。
+ たとえば、
+
+@eval exp="kag.fore.base.assignImages(kag.fore.layers[0])"
+
+ とすれば、表前景レイヤ 0 に読み込まれている画像を表背景レイヤにコピーすることができます。
+ assignImages は実際には画像のデータをコピーはせず、「コピー元とコピー先の画像が同じになった」という印を付けるだけなので高速です。デモシーンなどで、シーンの途中で画像を読み込むときのタイムロスが問題になるような場合に、あらかじめ画像を非表示の前景レイヤなどに読み込んでおいてから、必要なときに背景レイヤなどにコピーする用途に使えます。
+
+ +

hact タグの応用 +

+ hact タグはメッセージ履歴をクリックしたときに任意の TJS 式を実行できるようにするもので、音声履歴 ( 声つきのゲームなどでメッセージ履歴をクリックしたときにそのメッセージに対応する音声を再生できるようにするもの ) を実装することができます。
+ 以下は、それを実現するための例で、音声を再生するためのマクロ pv と、音声を停止するためのマクロ sv を定義するものです。
+ +
+例:
@iscript
+function stopAllVoices()
+{
+    // 2 〜 6 のすべての効果音を停止する
+    for(var i = 2; i <= 6; i++) kag.se[i].stop();
+}
+function playVoice(buf, storage)
+{
+    // 効果音バッファ buf にて storage を再生する
+    // KAG がスキップ処理中の場合は処理を行わない
+    if(!kag.skipMode)
+    {
+        stopAllVoices();
+        kag.se[buf].play(%[ storage : storage ]);
+    }
+}
+function createHistoryActionExp(buf, storage)
+{
+    // メッセージ履歴をクリックしたときに実行する TJS 式を生成する
+    return "stopAllVoices(), kag.se[" + buf  +"].play(%[ storage : '" + storage + "' ])";
+}
+@endscript
+@macro name=pv
+@hact exp="&createHistoryActionExp(mp.b, mp.s)"
+@eval exp="playVoice(mp.b, mp.s)"
+@endmacro
+@macro name=waitvoices
+@ws buf=2
+@ws buf=3
+@ws buf=4
+@ws buf=5
+@ws buf=6
+@endmacro
+@macro name=sv
+@endhact
+@waitvoices cond="kag.autoMode"
+@eval exp="stopAllVoices()"
+@endmacro
+
+
+ +
+ createHistoryActionExp 関数では、hact タグの exp 属性に渡すための TJS 式を生成しています。ここで生成した TJS 式が実行されることになります。
+
+ このマクロを使った例は以下のようになります。
+
+ +
+例:
[pv b=2 s=hoge.ogg]ほげ[l][sv][r]
+[pv b=3 s=hogera.ogg]ほげら[l][sv][r]
+[pv b=4 s=hogemoge.ogg]ほげもげ[p][sv]
+
+
+ +
+ + +

初期化時に実行されるスクリプト +

+ KAG はシステムのカスタマイズのために、初期化のいくつかの段階において 任意の TJS スクリプトを実行する機能があります。現バージョンでは以下の方法が用意されています。
+
+
+
Override.tjs
+
 このファイルは MainWindow.tjs が読み込まれた後に、もし存在すれば実行されます。初期状態ではこのファイルは存在しないので、新しく作成してください。
+
AfterInit.tjs
+
 すべての初期化が終わり、 first.ks が実行される直前に実行されます。このファイルも初期状態では存在しないので、新しく作成してください。
+
追加の設定
+
 Config.tjs 内には、いくつか「◆ ウィンドウや動作の追加の設定」など、「追加の設定」を記述できるところがあります。そこに記述した内容は Config.tjs の実行される各段階で実行されます。
+

メニューのカスタマイズ +

+ メニュー項目に、たとえば、単純な on/off だけの設定項目を追加するには、AfterInit.tjs に以下のような内容を書きます。
+
+ +
+例:
kag.menu.insert(kag.optionsMenu =
+    new KAGMenuItem(this, "効果(&G)", 0, void, false), 2);
+kag.optionsMenu.stopRecur = true;
+
+kag.optionsMenu.add(
+    kag.doTransMenuItem = new KAGMenuItem(
+        this,
+        "画面切り替えを行う(&T)",
+        0,
+        function(sender) { sf.dotrans = sender.checked = !sf.dotrans; },
+        false));
+
+if(sf.dotrans === void) sf.dotrans = true;
+kag.doTransMenuItem.checked = sf.dotrans;
+
+kag.optionsMenu.add(
+    kag.playSEItem = new KAGMenuItem(
+        this,
+        "効果音を再生する(&S)",
+        0,
+        function(sender) { sf.playse = sender.checked = !sf.playse; },
+        false));
+
+if(sf.playse === void) sf.playse = true;
+kag.playSEItem.checked = sf.playse;
+
+
+ +
+ kag.menu.insert(kag.optionsMenu = new KAGMenuItem(this, "効果(&G)", 0, void, false), 2); では、KAG のメニューバーに「効果」メニューを挿入しています。kag.optionMenu がその「効果」メニューのオブジェクトになります。insert メソッドの第2引数は、メニュー項目を挿入する位置です。
+ 次の行ではそのオブジェクトの stopRecur を true に設定していますが、これは kag.internalSetMenuAccessibleAll で不必要なメニューアイテムの検索を行わないようにするためです。
+
+ その kag.optioneMenu に、add メソッドで子のメニュー項目を作成しています。
+
+ KAGMenuItem の第4引数は、メニューアイテムがクリックされたときに実行する式を指定します。
+
+ if(sf.dotrans === void) sf.dotrans = true; では、sf.dotrans が void ( つまり、何も値が無い状態 ) の時に、初期値を入れています。kag.doTransMenuItem.checked = sf.dotrans; では、メニューアイテムのチェックの初期状態を設定しています。システム変数に記録しているため、プログラムを終了しても次回に設定が引き継がれます。
+
+ あとは sf.dotrans や sf.playse に現在のメニューの状態が記録されているので、
+
+@playse storage="kon.wav" cond="sf.playse"
+ のようにして使用することができます。
+
+ 応用でいろいろできると思います。
+
+ +

KAG用プラグインを書く +

+ KAGPlugin クラス のサブクラスを作り、KAG に登録することで KAG の機能を拡張するプラグインを作ることができます。
+ サンプルが KAG の配布ファイルとともに配布されていると思うので参照してみてください。
+
+ + + + diff --git a/docs/kag3doc/contents/Tags.html b/docs/kag3doc/contents/Tags.html new file mode 100644 index 0000000..7ef5c16 --- /dev/null +++ b/docs/kag3doc/contents/Tags.html @@ -0,0 +1,1634 @@ + + + + + + タグリファレンス + + + + + + + + + +

タグリファレンス

+
 KAG で使用可能なタグのリファレンスです。
+

タグの概要

+
+ タグは、[ ] の間に囲まれたものです。基本的に半角英数小文字で記述します。 + [ の次にすぐにタグ名を書きます。たとえば、trans +というタグであれば [trans となります。
+ タグには、タグのオプションを指定するために属性というものがあります。なにも属性を指定しなくていい場合は、タグ名のあとに ] を書いてタグは終わりです。たとえば +[ct] +となります。
+ 属性を指定する場合は、タグ名のあとや、前の属性のあとには必ず半角スペースを空けて、属性名を書きます。属性名の後には += を書き、その後に属性の値を書きます。すべての属性を書いたら ] +でタグを閉じます。
+ たとえば、trans タグに time という属性を書きたい場合は、[trans time=0] とします。また、さらに rule=trans vague=1 という属性を書きたい場合は +[trans time=0 rule=trans vague=1] とします。
+ 属性の値は "" で囲んでも囲まなくても同じです。たとえば、[trans time="0"][trans time=0] +は同じです。ただし、属性の値に空白を含むような場合は、"" で囲まなければなりません。たとえば、[font face="MS Pゴシック"] です。
+ また、属性の値に対し、& を最初につけると、その後に書いたものを +TJS 式として評価し、その結果を属性の値とします。たとえば、[trans time=&f.clearTime] とすると、f.clearTime という変数の内容が、time +属性の値となります。
+ 属性の値を省略すると (属性のうち '=' 以降を書かないと)、true という属性の値が指定されたと見なされます。たとえば、[playse loop storage="shock.wav"] は、loop 属性の値が省略されていますが、これは [playse loop=true storage="shock.wav"] と同じ意味になります。
+
+

コマンド行

+
+ コマンド行は、@ で始まり、その次にタグ名と属性を記述するものです。
+ 一つの行には一つのタグのみを書くことができます。
+ 以下の二つの行は等価になります。
+
+
+[trans time=0 rule=trans vague=1]
+@trans time=0 rule=trans vague=1
+
+
+
+

cond 属性

+
+ macro endmacro if else elsif endif ignore endignore iscript endscript のタグをのぞき、すべてのタグに cond 属性があります。
+ cond 属性には TJS式 を指定し、この式を評価した結果が真の時のみにそのタグが実行されます。偽の時はタグは実行されません。
+
+例 :
+
+[l cond=f.noskip]
+; ↑ f.noskip が真の時のみ l タグを実行
+
+
+
+ +

ジャンル・タグ一覧

+ + +

+
システム操作

+ + + + + + + + + + + + + + + + + + + + +
autowc( 自動ウェイト )
clearsysvar( システム変数の全消去 )
clickskip( クリックスキップの設定 )
close( ウィンドウを閉じる )
cursor( マウスカーソルの変更 )
hidemessage( メッセージを消す )
loadplugin( プラグインの読み込み )
mappfont( レンダリング済みフォントの割り当て )
nextskip( 「次の選択肢まですすむ」の設定 )
quake( 画面を揺らす )
rclick( 右クリックの設定 )
resetwait( ウェイトの初期化 )
s( 停止する )
stopquake( 画面揺らしの停止 )
title( タイトル指定 )
wait( ウェイトを入れる )
waitclick( クリックを待つ )
wc( 文字数分のウェイトを入れる )
wq( 画面揺らしの終了待ち )
+
+
フォーム操作

+ + + + +
checkbox( チェックボックスの作成 )
commit( フォーム内容の確定 )
edit( 単一行エディットの作成 )
+
+
マクロ操作

+ + + + +
endmacro( マクロの記述(の終了) )
erasemacro( マクロの消去 )
macro( マクロの記述 )
+
+
メッセージ操作

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cancelautomode( 「自動的に読み進む」の解除 )
cancelskip( スキップの解除 )
ch( 文字を表示する )
cm( すべてのメッセージレイヤのクリア )
ct( メッセージレイヤのリセット )
current( 操作対象のメッセージレイヤの指定 )
deffont( デフォルトの文字属性設定 )
defstyle( デフォルトのスタイルの設定 )
delay( 文字の表示速度の設定 )
endindent( インデントの解除 )
endnowait( 文字表示ノーウェイト(の終了) )
er( メッセージレイヤの文字の消去 )
font( 文字属性設定 )
glyph( クリック待ち記号の指定 )
graph( インライン画像表示 )
hch( 縦中横を表示する )
indent( インデントの設定 )
l( 行末クリック待ち )
locate( 文字表示位置の指定 )
locklink( リンクのロック )
nowait( 文字表示ノーウェイト )
p( 改ページクリック待ち )
position( メッセージレイヤの属性 )
r( 改行する )
resetfont( 文字属性をデフォルトに戻す )
resetstyle( スタイルをデフォルトに戻す )
ruby( ルビ指定 )
style( スタイルの設定 )
unlocklink( リンクのロックの解除 )
+
+
メッセージ履歴操作

+ + + + + + +
endhact( メッセージ履歴アクションの終了 )
hact( メッセージ履歴アクション )
history( メッセージ履歴の設定 )
hr( メッセージ履歴の改行/改ページ )
showhistory( メッセージ履歴の表示 )
+
+
ラベル・ジャンプ操作

+ + + + + + + + + + + + + +
button( グラフィカルボタン )
call( サブルーチンの呼び出し )
cclick( クリック待ち解除 )
click( クリック待ちジャンプ )
ctimeout( タイムアウト待ち解除 )
cwheel( ホイール待ち解除 )
endlink( ハイパーリンク(の終了) )
jump( シナリオのジャンプ )
link( ハイパーリンク )
return( サブルーチンから戻る )
timeout( タイムアウト待ちジャンプ )
wheel( ホイール待ちジャンプ )
+
+
レイヤ操作

+ + + + + + + + + + + + + + + + + + + + + +
animstart( アニメーションの開始 )
animstop( アニメーションの停止 )
backlay( レイヤ情報の表ページから裏ページへのコピー )
copylay( レイヤ情報のコピー )
freeimage( レイヤ画像の解放 )
image( 画像の読み込み )
laycount( レイヤの数の変更 )
layopt( レイヤの属性 )
mapaction( クリッカブルマップ用領域アクション定義ファイルの指定 )
mapdisable( クリッカブルマップの無効化 )
mapimage( クリッカブルマップ用領域画像の指定 )
move( レイヤの自動移動 )
pimage( 画像の部分追加読み込み )
ptext( レイヤへの文字描画 )
stopmove( レイヤの自動移動の停止 )
stoptrans( レイヤのトランジションの停止 )
trans( レイヤのトランジション )
wa( アニメーションの停止待ち )
wm( 自動移動の終了待ち )
wt( トランジションの終了待ち )
+
+
効果音・BGM・ビデオ操作

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bgmopt( BGM の設定 )
cancelvideoevent( ピリオドイベントの解除 )
cancelvideosegloop( ビデオのセグメントループ再生の解除 )
clearbgmlabel( BGM のラベル通過処理の解除 )
clearbgmstop( BGM の停止処理の解除 )
clearvideolayer( ビデオレイヤ解除 )
fadebgm( BGMのフェード )
fadeinbgm( フェードインしながらのBGM再生開始 )
fadeinse( 効果音のフェードイン再生 )
fadeoutbgm( BGMのフェードアウト )
fadeoutse( 効果音のフェードアウト )
fadepausebgm( BGM 演奏のフェードアウトしながらの一時停止 )
fadese( 効果音のフェード )
openvideo( ビデオ/SWFの再生準備 )
pausebgm( BGM 演奏の一時停止 )
pausevideo( ビデオの一時停止 )
playbgm( BGM の演奏 )
playse( 効果音の再生 )
playvideo( ビデオ/SWFの再生 )
preparevideo( ビデオの再生準備 )
resumebgm( BGM 演奏の再開 )
resumevideo( ビデオ再生の再開 )
rewindvideo( ビデオの巻き戻し )
seopt( 効果音の設定 )
setbgmlabel( BGM のラベル通過処理の登録 )
setbgmstop( BGM の停止処理の登録 )
stopbgm( BGM 演奏の停止 )
stopse( 効果音再生の停止 )
stopvideo( ビデオ/SWF再生の停止 )
video( ビデオ/SWF表示領域の属性を指定 )
videoevent( ピリオドイベントの発生 )
videolayer( ビデオレイヤ設定 )
videosegloop( ビデオのセグメントループ再生 )
wb( BGM フェードの終了待ち )
wf( 効果音フェードの終了待ち )
wl( BGM 再生の終了待ち )
wp( ビデオピリオドイベント待ち )
ws( 効果音再生の終了待ち )
wv( ビデオ再生の終了待ち )
xchgbgm( BGM を入れ替える )
+
+
変数・TJS 操作

+ + + + + + + + + + + + + + + +
clearvar( ゲーム変数の全消去 )
else( if の中身が実行されなかったときに実行 )
elsif( それまでの if の中身が実行されていなかったときに、条件付きで実行 )
emb( 式評価結果の埋め込み )
endif( 条件によりシナリオを実行(の終了) )
endignore( 条件によりシナリオを無視(の終了) )
endscript( TJS スクリプトの記述(の終了) )
eval( 式の評価 )
if( 条件によりシナリオを実行 )
ignore( 条件によりシナリオを無視 )
input( 文字列の入力 )
iscript( TJS スクリプトの記述 )
trace( コンソールへ値の出力 )
waittrig( トリガを待つ )
+
+
栞・通過記録操作

+ + + + + + + + + + + + + + + +
copybookmark( 栞のコピー )
disablestore( 栞の機能の一時的な使用不可 )
erasebookmark( 栞の消去 )
goback( 前に戻る )
gotostart( 最初に戻る )
load( 栞の読み込み )
locksnapshot( スナップショットのロック )
record( 通過記録を行う )
save( 栞の保存 )
startanchor( 「最初に戻る」の有効・無効 )
store( 栞機能の設定 )
tempload( 栞のメモリ上からの読み込み )
tempsave( 栞のメモリ上への保存 )
unlocksnapshot( スナップショットのロックの解除 )


+ +

animstart ( アニメーションの開始 )

+
レイヤ操作
+
+ + + + +
属性必須?説明
layeryes"base" または 0 以上の整数 アニメーションを開始するレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。  指定したレイヤには、アニメーション情報が読み込まれていないとなりません。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
segyes1 以上の整数 この属性で指定したセグメント番号でアニメーションを開始します。
 異なるセグメント番号では同時に複数のアニメーションを実行できます。
 セグメント番号は任意の番号を指定できますが、必要以上に大きな番号を 指定しないでください。また、セグメント 0 は指定できません。
targetyes開始ラベル名 アニメーションを開始するための asd ファイル中のラベルを 指定します。
 linkタグなどと同じように、 * (アステリスク) を忘れないようにしてください。
 アニメーションを、指定したセグメントで、指定したラベルから開始します。
 セグメントは、一つのレイヤ、一つのアニメーション定義ファイル ( asd ファイル ) で 複数のアニメーションを同時に実行するための概念で、一つのレイヤで複数のセグメントを 使用でき、各セグメントで同時に別々のラベルからアニメーションを開始することができます。
 セグメント 0 は特別なセグメントで、レイヤに画像が読み込まれたのと同時に実行される アニメーションで、このタグや animstop タグではセグメント 0 は 指定できません。
+
+ +

animstop ( アニメーションの停止 )

+
レイヤ操作
+
+ + + +
属性必須?説明
layeryes"base" または 0 以上の整数 アニメーションを停止するレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。  指定したレイヤには、アニメーション情報が読み込まれていないとなりません。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
segyes1 以上の整数 この属性で指定したセグメント番号のアニメーションを停止します。
 セグメント番号 0 は指定できません。
 任意のセグメントのアニメーションを停止します。
 このタグはアニメーションの終了を待ちません。アニメーションの終了を待つには wa タグを使用してください。
 アニメーションがループしている場合、asd ファイル上で home タグを通過するまで アニメーションは停止しません。
+
+ +

autowc ( 自動ウェイト )

+
システム操作
+
+ + + +
属性必須?説明
enablednotrue または false 自動ウェイトを有効にする場合は true を、無効にするには false を指定します。
 省略すれば設定は変更されません。
chno対象の文字 自動ウェイトを入れる文字を指定します。指定された文字のあとに、time 属性で 指定した文字数分のウェイトが入ります。
 省略すれば設定は変更されません。
timenoウェイト(文字数単位) 自動ウェイトを入れる時間を文字数単位で指定します。
 ch 属性で指定した文字それぞれに対して、カンマで区切って時間を指定できます。
 一つしか時間を指定しなかった場合は ch タグで指定したすべての文字にその時間が 設定されます。
 この属性を省略した場合は 4 を指定したと見なされます。
 特定の文字の後に指定文字数分のウェイトを入れることができます。
 ch 属性で指定した文字が表示された後、time 属性で指定した時間がウェイトとして入ります。
 文字は ch タグで複数指定できて、それに対応してそれぞれの文字に time 属性でタイミングを 指定できます。
+
例:
+[autowc enabled=true ch="、。・" time="3,5,3"]
; ↑ "、。・" の各文字に対してそれぞれ 3, 5, 3 文字数分のウェイトを入れる +
+
+ +

backlay ( レイヤ情報の表ページから裏ページへのコピー )

+
レイヤ操作
+
+ +
属性必須?説明
layerno"base" または 0 以上の整数 また は message0 または message1 または message 対象となるレイヤを指定します。
 base を指定すると 背景レイヤ になります。
 0 以上の整数を指定すると前景レイヤになります。
 message0 または message1 を指定するとメッセージレイヤにな ります。単に message とのみ指定した場合は、 current タグで指定した現在の操作対象のメッセージレイヤが 対象になります ( 裏ページのメッセージレイヤが操作対象であっても そのメッセージレイヤの表ページ→裏ページへのコピーが行われます )。
 省略すると、すべてのレイヤの情報が裏ページにコピーされます。
 指定したレイヤ、あるいはすべてのレイヤの情報を、表ページから裏ページに コピーします。
 コピーされるのは、copylay タグでコピーされる 情報と同じです。
 trans タグは表ページのレイヤの画像を裏ページの レイヤの画像に置き換えます。そのため、トランジション前にこの backlay タ グで画像を裏ページに転送し、裏ページでレイヤを操作してから、トランジションを 行うという方法に用います。
+
+ +

bgmopt ( BGM の設定 )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
volumeno音量% (0〜100) BGM の音量を % で指定します。初期状態の KAG では 100 % です。省略すれば音量は変更されません。
 100 が上限です。音量の抑制のみをサポートします(増幅は 音源の特性上、できません)。
gvolumeno音量% (0〜100) BGM の大域音量を % で指定します。初期状態の KAG では 100 % です。省略すれば音量は変更されません。
 大域音量は volume 属性で指定する通常の音量とは別に、 BGM の音量を制御することができるもう一つのものです。実際に再生 される音量は、通常の音量と大域音量を掛け合わせた音量になります ( たとえば volume=50 で gvolume=75 ならば 50(%)*75(%)=37.5(%) )
 大域音量はシステム変数に記録され、次回起動時 にも引き継がれます ( 各栞に保存されるわけではありません )。
 BGM のさまざまな設定を 変更します。
+
+ +

button ( グラフィカルボタン )

+
ラベル・ジャンプ操作
+
+ + + + + + + + + + + + + + + + +
属性必須?説明
graphicyes画像ファイル名 ボタンにする画像を指定します。
 image タグの storage 属性を参照してください。
graphickeyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt"ボタンにする画像のカラーキーを指定します。
 image タグの key 属性を参照してください。
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
recthitnotrue(デフォルト) または false 矩形で当たり判定を行うかどうかを指定します。true が指定されていると、 ボタンの表示されている矩形全域でマウスのクリックなどに反応します。 false が指定されていると、ボタンの不透明度が 64 未満の領域では マウスのクリックなどに反応しなくなります。
 省略すると true が指定されたと見なされます。
expnoTJS 式 クリックされたときに実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
hintnoヒントとして表示させる文字列 リンクを選択し、マウスカーソルを静止させたときに表示される ツールチップヒントを指定します。
 省略すると表示は行われません。
onenternoTJS 式 ボタン内にマウスカーソルが入ってきたときに実行される TJS 式を 指定します。
onleavenoTJS 式 ボタン内からマウスカーソルが出ていった時に実行される TJS 式を 指定します。
countpagenotrue(デフォルト) または false ボタンを選択して他のラベルに移行するときに、このリンクのある 場所のラベルを「読んだ」とみなすかどうかを指定します。
 [s] タグを実行する前にボタンが選択されてジャンプする際に、 そのページが「読んだ」ことになっては困る場合に false を指定します。
clickseno効果音ファイル名 クリックされたときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
clicksebufno効果音バッファ番号 clickse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
enterseno効果音ファイル名 マウスが進入したときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
entersebufno効果音バッファ番号 enterse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
leaveseno効果音ファイル名 マウスが退出したときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
leavesebufno効果音バッファ番号 leavese で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
 現在のメッセージレイヤ上に link タグと 同様にリンクを作成しますが、 画像を用いたボタンを作成します。
 ボタンが作成される位置は locate タグで指定した 位置が画像の左上点になりますので、このタグを使う前に locate タグで 位置を指定してください。このタグは文字表示位置を移動しません。
 graphic 属性で指定する画像は、
・通常の状態
・ボタンが押された状態
・ボタンの上にマウスカーソルがある状態
 の3つの画像が左から順に横並びになった画像です。一つの画像に、同じサイズの3つの状態の画像が横に並んだ形式になっています。つまり、この属性で指定する画像は、ボタンの横幅の3倍の横幅を持つことになります。
 このタグを使う場合は、なるべく s タグですぐに選択肢待ちにしてください。
+
+ +

call ( サブルーチンの呼び出し )

+
ラベル・ジャンプ操作
+
+ + + +
属性必須?説明
storagenoシナリオファイル名 呼び出したいサブルーチンのあるのシナリオファイルを 指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 呼び出すサブルーチンのラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
countpagenofalse(デフォルト) または true 他のラベルに移行するときに、このタグのある 場所のラベルを「読んだ」とみなすかどうかを指定します。
 サブルーチンを呼び出す際に、呼び出し元のページが その時点で「読まれた」ことにしたい場合に true を 指定します。
 指定されたシナリオファイルの指定されたラベルで示される サブルーチンを呼び出します。
 呼び出されたサブルーチンは、 return タグで 呼び出し元や任意の場所に戻ることができます。
+
+ +

cancelautomode ( 「自動的に読み進む」の解除 )

+
メッセージ操作
+
 「自動的に読み進む」を強制的に解除します。
+
+ +

cancelskip ( スキップの解除 )

+
メッセージ操作
+
 スキップ状態の解除を行います。
 スキップ状態とは、クリックスキップ ( メッセージ表示途中で画面 をクリックすることによりクリック待ちまで一気に文章を表示する機 能 ) と、「次の選択肢まですすむ」でスキップが行われている状態の 事です。
 「次の選択肢まで進む」機能自体が無効になったり、クリックスキップの 機能自体がそれ以降無効になったりするわけではありません。
+
+ +

cancelvideoevent ( ピリオドイベントの解除 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
videoeventタグで設定したピリオドイベントを解除します。
+
+ +

cancelvideosegloop ( ビデオのセグメントループ再生の解除 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
videosegloopタグで設定したセグメントループを解除します。
+
+ +

cclick ( クリック待ち解除 )

+
ラベル・ジャンプ操作
+
 click で現在のメッセージレイヤに対して登録されたクリック待ちを解除します。
+
+ +

ch ( 文字を表示する )

+
メッセージ操作
+
+ +
属性必須?説明
textyes文字 ここで指定した文字が表示されます。
 複数の文字を指定できますが、自動改行はされません ( メッセージ履歴レイヤも ここで複数の文字を指定された場合は改行されません )。また、複数の 文字を指定した場合は一気に表示されます ( nowait で表示するよりも かなり高速 )。通常は一文字のみを指定します。
 文字を current タグで指定したメッセージレイヤに表示します。普通は使いません。
 KAG 内部では、通常の文字は、一文字一文字すべてがこのタグに分解されて処理されます。
+
+ +

checkbox ( チェックボックスの作成 )

+
フォーム操作
+
+ + + + +
属性必須?説明
nameyes変数名 チェックボックスの状態を格納する変数を指定します。
 変数が 0 (または未定義)ならばチェックされていない、0 でなければ チェックされているとみなされます。
 もし変数がすでに 0 以外であれば、チェックボックスはチェックされた 状態で作成されます。
bgcolorno0xRRGGBB 形式 背景色を 0xRRGGBB 形式で指定します。
opacityno0(完全透明) 〜 255(完全不透明) bgcolor 属性で指定した背景色の不透明度を 0 〜 255 で指定します。
colorno0xRRGGBB 形式 チェックマークの色を 0xRRGGBB 形式で指定します。
 現在操作対象になっているメッセージレイヤの、現在の位置に、チェックボックスを作成します。
 チェックボックスの状態は、commit タグが 実行されるまで、指定した変数に代入されることはありません。
 commit タグが実行されると、チェックボックスがチェックされていれば 1 が、 チェックされていなければ 0 が変数に入ります。
+
+ +

clearbgmlabel ( BGM のラベル通過処理の解除 )

+
効果音・BGM・ビデオ操作
+
 setbgmlabelの指定をクリアします
+
+ +

clearbgmstop ( BGM の停止処理の解除 )

+
効果音・BGM・ビデオ操作
+
 setbgmstopの指定をクリアします
+
+ +

clearsysvar ( システム変数の全消去 )

+
システム操作
+
 システム変数をすべて消去します。
+
+ +

clearvar ( ゲーム変数の全消去 )

+
変数・TJS 操作
+
 ゲーム変数をすべて消去します。すべてのゲーム変数は未定義になります。
+
+ +

clearvideolayer ( ビデオレイヤ解除 )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
channelyes1 または 2 レイヤ描画モードによる描画を解除したいチャンネルを指定します。
 videolayerタグで設定したレイヤを解除します。
+
+ +

click ( クリック待ちジャンプ )

+
ラベル・ジャンプ操作
+
+ + + + + +
属性必須?説明
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
expnoTJS 式 クリック時に実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
seno効果音ファイル名 クリック時に再生する効果音を指定します。指定しなければ 効果音は再生されません。
sebufno効果音バッファ番号 clickse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
 現在のメッセージレイヤに対してクリック待ちを登録します。 リンクやボタンが無い場所をクリックした場合に反応します。  このタグを使う場合は、なるべく s タグですぐに選択肢待ちにしてください。
+
+ +

clickskip ( クリックスキップの設定 )

+
システム操作
+
+ +
属性必須?説明
enabledyestrue または false クリックスキップ機能を有効にする場合は true、無効にする場合は false を指定します。
 クリックスキップとは、メッセージ表示途中で画面をクリックすることにより、 トランジションや自動移動を中断したり、 クリック待ちまで一気に文章を表示する機能です。
 デモシーンなどでは無効にしていたほうがいい場合があります。
+
+ +

close ( ウィンドウを閉じる )

+
システム操作
+
+ +
属性必須?説明
asknotrue(デフォルト) または false true を指定すると、終了するかどうかの確認をします。false を 指定するとこの確認はありません。この属性を省略 すると、 true を指定したとみなされます。
 この確認でユーザが「いいえ」を選んだ場合、実行は そのまま継続します。
 ウィンドウを閉じます。ask 属性に false を指定しない限り、終了確認があります ( バージョン情報ダイアログでは終了確認は出ません )。
+
+ +

cm ( すべてのメッセージレイヤのクリア )

+
メッセージ操作
+
 すべてのメッセージレイヤのクリアを行います。
 すべてのメッセージレイヤの文字は消去されますが、ct タグのように 操作対象のメッセージレイヤが表ページの message0 に指定されるようなことはありません。 このタグを実行後も操作対象のレイヤは同じです。
 font タグで指定した文字の属性、style タグ で指定したスタイルはすべて標準状態に戻ります。ただ し、position タグ や layopt タグで指定した属性は引き継が れます。
 「*ラベル名|見出し名」 形式のラベルの次には、この cm タグあるい は ct タグを書くべきです。 ( 栞のロード時にはラベルから実行が始まるが、ロード時には必ずメッセ ージレイヤ上の文字がクリアされるため )。
+
+ +

commit ( フォーム内容の確定 )

+
フォーム操作
+
 現在操作対象になっているメッセージレイヤ上のすべてのエディットや チェックボックスなどの「フォーム要素」の内容を確定します。
 内容が確定されると、フォーム要素で編集されていた文字列や状態が、 各変数に実際に代入されます。
 各フォーム要素は erct タグのような メッセージレイヤを消去する系のタグで消去されてしまいますので、そのまえに commit タグを実行する必要があります。
+
例:
+*editname
@er
名字 : [edit name="f.sname" length=200][r]
名前 : [edit name="f.name" length=200][r]
[link target=*ok]OK[endlink][r]
[link target=*cancel]キャンセル[endlink][s]
*ok
; OK が選択された
; commit を行って変数に代入を行う
[commit]
[jump target=*exit]
*cancel
; キャンセルが選択された
; commit は行わない
[jump target=*exit]
+
+
+ +

copybookmark ( 栞のコピー )

+
栞・通過記録操作
+
+ + +
属性必須?説明
fromyes0または正の整数 コピー元の栞の番号を指定します。省略すると 0 が指定されたと見なされます。
toyes0または正の整数 コピー先の栞の番号を指定します。省略すると 0 が指定されたと見なされます。
 非フリーセーブモードにおいて、from 属性で指定された番号の栞から to 属性で指 定された番号の栞へ内容のコピーを行います。
+
+ +

copylay ( レイヤ情報のコピー )

+
レイヤ操作
+
+ + + + +
属性必須?説明
srclayeryes"base" または 0 または 1 または 2 また は message0 または message1 または message コピー元となるレイヤを指定します。
 この属性と srcpage 属性で指定したレイヤがコピー元になります。
 base を指定すると 背景レイヤ になります。
 0 または 1 または 2 を指定すると前景レイヤになります。
 message0 または message1 を指定するとメッセージレイヤにな ります。単に message とのみ指定した場合は、 current タグで指定した現在の操作対象のメッセージレイヤが 対象になります。
destlayeryes"base" または 0 または 1 または 2 また は message0 または message1 または message コピー先となるレイヤを指定します。
 この属性と destpage 属性で指定したレイヤがコピー先になります。
 base を指定すると 背景レイヤ になります。
 0 または 1 または 2 を指定すると前景レイヤになります。
 message0 または message1 を指定するとメッセージレイヤにな ります。単に message とのみ指定した場合は、 current タグで指定した現在の操作対象のメッセージレイヤが 対象になります。
srcpageno"fore" または "back" コピー元となるページを指定します。
 この属性と srclayer 属性で指定したレイヤがコピー元になります。
 "fore" を指定すると表ページ、"back" を指定すると裏ページになります。 省略すると "fore" を指定したと見なされます。
destpageno"fore" または "back" コピー先となるページを指定します。
 この属性と destlayer 属性で指定したレイヤがコピー元になります。
 "fore" を指定すると表ページ、"back" を指定すると裏ページになります。 省略すると "fore" を指定したと見なされます。
 指定したレイヤの情報をコピーします。
 ただし、同種のレイヤ ( 背景レイヤ同士、前景レイヤ同士、メッセージレイヤ同士 )でのみ コピーできます。
+
+ +

ct ( メッセージレイヤのリセット )

+
メッセージ操作
+
 メッセージレイヤをリセットします。
 すべてのメッセージレイヤの文字は消去され、操作対象のメッセージレイヤは 表ページの message0 に指定されます。
 font タグで指定した文字の属性、style タグ で指定したスタイルはすべて標準状態に戻ります。ただ し、position タグ や layopt タグで指定した属性は引き継が れます。
 これに対し、er タグは、現在の操作対象のメッセージ レイヤ上の文字を消去したり文字やスタイルの属性を標準状態に戻したりす るだけです。
 「*ラベル名|見出し名」 形式のラベルの次には、この ct タグあるい は cm タグを書くべきです。 ( 栞のロード時にはラベルから実行が始まるが、ロード時には必ずメッセ ージレイヤ上の文字がクリアされるため )。
+
+ +

ctimeout ( タイムアウト待ち解除 )

+
ラベル・ジャンプ操作
+
 timeout で現在のメッセージレイヤに対して登録されたタイムアウトを解除します。
+
+ +

current ( 操作対象のメッセージレイヤの指定 )

+
メッセージ操作
+
+ + + +
属性必須?説明
layerno"message0" または "message1" 操作対象とするメッセージレイヤを指定します。
pageno"fore"(デフォルト) または "back"  表(fore)画面のレイヤを対象とするか、裏(back)画面のレイヤを対象と するかを指定します。省略すると表ページであると見なされます。
withbacknotrue または false (デフォルト) 表ページが対象の場合、裏ページにも同様に文字を描画するかを 指定します。この属性を省略すると false が指定されたとみなされます。  裏ページに同時に文字を描画する必要があるのは、同時にトランジションを 進行させる場合などです。
 操作対象とするメッセージレイヤを指定します。以後、文章や font タグでの文字属性の指定、l タグ等のクリック待ちなどは、このレイヤに対して行われます。
 message0 はデフォルトで可視の状態で すが、message1 は layopt タグ 等で visible=true としないと表示されないので注意してください。
+
+ +

cursor ( マウスカーソルの変更 )

+
システム操作
+
+ + + + +
属性必須?説明
defaultnocr で始まるカーソル定数 または カーソルファイル名通常のマウスカーソルを指定します。
pointednocr で始まるカーソル定数 または カーソルファイル名リンクやボタンをポイントしたときのマウスカーソルを指定します。
clicknocr で始まるカーソル定数 または カーソルファイル名クリック待ちのマウスカーソルを指定します。
draggablenocr で始まるカーソル定数 または カーソルファイル名position タグで draggable=true としたときに、 マウスがメッセージレイヤをドラッグ可能な位置に来たときに表示される マウスカーソルを指定します。
 マウスカーソルを変更します。いずれの属性も省略すれば設定は変わりません。
 cr で始まるマウスカーソル定数については、吉里吉里 SDK ヘルプの 「マウスカーソル定数一覧」を参照してください。また、その場合 は default=&crArrow のように、定数の前に & 記号をつけて指定してください。
 マウスカーソルファイルには、.cur または .ani の拡張子を持つマウスカーソル ファイルを指定することができます ( 拡張子は省略しないでください )。
+
+ +

cwheel ( ホイール待ち解除 )

+
ラベル・ジャンプ操作
+
 wheel で現在のメッセージレイヤに対して登録されたホイール待ちを解除します。
+
+ +

deffont ( デフォルトの文字属性設定 )

+
メッセージ操作
+
+ + + + + + + + + + +
属性必須?説明
sizeno文字サイズ(pixel単位) デフォルトの文字サイズを指定します。
facenoフォント名 または "user" デフォルトのフォント名を指定します。
colorno0xRRGGBB 形式 デフォルトの文字色を指定します。
rubysizenoルビの文字サイズ(pixel単位) デフォルトのルビの文字のサイズを指定します。
rubyoffsetnoルビの表示オフセット(pixel単位) デフォルトのルビの表示オフセットを指定します。
shadownotrue または false デフォルトで文字に影をつけるかを指定します。
edgenotrue または false デフォルトで文字を袋文字 ( 縁取り文字 ) にするかを指定します。
edgecolorno0xRRGGBB 形式 デフォルトの文字の袋の色を指定します。
shadowcolorno0xRRGGBB 形式 デフォルトの影の色を指定します。
boldnotrue または false デフォルトで文字を太文字にするかを指定します。
 現在操作対象のメッセージレイヤに対する、デフォルトの文字属性を指定します。
 各属性の詳細については fontタグを指定してください。ただし 属性の値として "default" を指定することはできません。
 ここで指定した属性は、resetfont タグで実際に反映されます。
 逆に言うと、このタグを実行しただけではすぐにはフォントの属性は反映されません。resetfont タグ を実行する必要があります。
+
+ +

defstyle ( デフォルトのスタイルの設定 )

+
メッセージ操作
+
+ + + +
属性必須?説明
linespacingno行間 (pixel単位) デフォルトの行間を指定します。
pitchno字間オフセット(pixel単位) デフォルトの字間のオフセットを pixel 単位で指定します。
linesizeno予約サイズ(pixel単位) デフォルトの行の幅を指定します。
 現在操作対象のメッセージレイヤに対する、デフォルトの行のスタイルを指定します。
 各属性の詳細については styleタグを指定してください。ただし 属性の値として "default" を指定することはできません。
 ここで指定した属性は、resetstyle タグで実際に反映されます。
 逆に言うと、このタグを実行しただけではすぐにはフォントの属性は反映されません。resetstyle タグ を実行する必要があります。
+
+ +

delay ( 文字の表示速度の設定 )

+
メッセージ操作
+
+ +
属性必須?説明
speedyes"nowait" または "user" またはウェイトの値(ms単位) "nowait" を指定すると、文字の表示にウェイトをかけずに、 一気に文字が表示されます。"user" を指定すると、 [システム|文字速度] でユーザーが指定した速度になりま す(デフォルト)。ウェイトの値を指定すると、値で示した 時間につき 1 文字の速度で文字を表示します。
 文字表示速度は、すべてのメッセージレイヤで同じになります。
 文字の表示速度を指定します。
 文字表示をノーウェイトにするには nowait タグをつかう こともできます。
+
+ +

disablestore ( 栞の機能の一時的な使用不可 )

+
栞・通過記録操作
+
+ + +
属性必須?説明
storenotrue(デフォルト) または false 「栞をはさむ」の機能を使用不可にするかを指定します。
 使用不可にするときに true を設定します。
restorenotrue または false(デフォルト) 「栞をたどる」の機能を使用不可にするかを指定します。
 使用不可にするときに true を設定します。
 store 属性と違い、こちらは属性を省略すると false であると見なされます。
 「栞をはさむ」の機能を一時的に使用不可能にします。
 以後、セーブ可能なラベルを通過しない限り「栞をはさむ」の機能は使用不可能になります。
 KAG 起動直後は、この「使用不可能」で「栞をはさむ」が使用不可の状態になっており、セーブ可能なラベルを通過しない限り「栞をはさむ」の機能は使用できません。
 ゲームのメインメニューなど、栞をはさんでも仕方のないところに記述します。
 このタグに対し、store タグでは栞をはさむ・たどる の両方の機能を恒久的に使用不可・可に設定できます。
+
+ +

edit ( 単一行エディットの作成 )

+
フォーム操作
+
+ + + + + + +
属性必須?説明
nameyes変数名 入力した文字列を格納する変数を指定します。
 もし変数にすでに文字列が入っていた場合は、単一行 エディットの初期文字列として表示されます。
lengthno幅 (pixel 単位) 単一行エディットの幅 ( 縦書きの場合は高さ ) をピクセル単位で指定します。
bgcolorno0xRRGGBB 形式 背景色を 0xRRGGBB 形式で指定します。
opacityno0(完全透明) 〜 255(完全不透明) bgcolor 属性で指定した背景色の不透明度を 0 〜 255 で指定します。
colorno0xRRGGBB 形式 文字色を 0xRRGGBB 形式で指定します。
maxcharsno最大文字数 入力できる最大文字数を指定します。0 を指定すると無制限になります。
 デフォルトでは無制限です。
 現在操作対象になっているメッセージレイヤの、現在の位置に、現在のフォントで、一行のみの文字列を編集できる 入力欄(エディット)を作成します。  編集がおこなわれた文字列は、commit タグが 実行されるまで、指定した変数に代入されることはありません。
+
+ +

else ( if の中身が実行されなかったときに実行 )

+
変数・TJS 操作
+
 if タグもしくは elsif タグ と endif タグの間で用いられます。 if または elsif ブロックの中身がひとつも実行されていないとき、 else から endif までの間を実行します。
 使い方の例については、if タグの項目を参照してください。
+
+ +

elsif ( それまでの if の中身が実行されていなかったときに、条件付きで実行 )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。
 if タグと endif タグの間で用いられます。 それまでの if タグまたは elsif タグの中身がひとつも実行されていないときに 式を評価し、その結果が真ならば elsif から次の elsif・else・endif までの間を実行します。
 使い方の例については、if タグの項目を参照してください。
+
+ +

emb ( 式評価結果の埋め込み )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。ここで評価された式の結果が、 この emb タグと置き換わります。
 exp で示された式を評価(実行)し、その結果を埋め込みます。
 変数をシナリオ中に表示させたい場合に使います。
 通常は、eval タグで代入した 変数の内容に 置き換えます。
+
例:
+[eval exp="f.value1='変数の値だよ〜ん'"]

とどこかで書いておいて、

[emb exp="f.value1"]

と書くと、この emb タグが 変数の値だよ〜ん という内容に置き換わります。
+
+
+ +

endhact ( メッセージ履歴アクションの終了 )

+
メッセージ履歴操作
+
hact タグで設定したメッセージ履歴アクションを 終了(設定をクリア)します。
+
+ +

endif ( 条件によりシナリオを実行(の終了) )

+
変数・TJS 操作
+
 if タグの終了を示します。endignore とまったく 同一の動作をします。
+
+ +

endignore ( 条件によりシナリオを無視(の終了) )

+
変数・TJS 操作
+
 ignore タグの終了を示します。
+
+ +

endindent ( インデントの解除 )

+
メッセージ操作
+
 indent タグで設定したインデントを解除します。通常は改行の前に記述します。
+
+ +

endlink ( ハイパーリンク(の終了) )

+
ラベル・ジャンプ操作
+
 link タグで開始したハイパーリンクの終了を示します。
+
+ +

endmacro ( マクロの記述(の終了) )

+
マクロ操作
+
 macro タグで記述を開始したマクロの終了を示します。
+
+ +

endnowait ( 文字表示ノーウェイト(の終了) )

+
メッセージ操作
+
 文字の表示速度を、nowait タグでノーウェイト にする直前の文字表示速度に戻します。
+
+ +

endscript ( TJS スクリプトの記述(の終了) )

+
変数・TJS 操作
+
 [iscript] で記述したスクリプトの記述の終了を 示します。
このタグのある行には、このタグしか書いてはいけません ( 行末の \ 記号も不可 )。
+
+ +

er ( メッセージレイヤの文字の消去 )

+
メッセージ操作
+
 現在の操作対象のメッセージレイヤ上の文字を消去します。
 ct タグと違うのは、er タグは現在のメッセージ レイヤ上の文字を消去し、文字属性とスタイルをリセットするだけで、 ct タグのようにすべてのメッセージレイヤ上の文字を消去したり、 操作対象のレイヤを message0 に戻したりしません。
+
+ +

erasebookmark ( 栞の消去 )

+
栞・通過記録操作
+
+ +
属性必須?説明
placeno0または正の整数(0がデフォルト) 栞の番号を指定します。省略すると 0 が指定されたと見なされます。
 非フリーセーブモードにおいて、指定した番号の栞を消去します。栞は"(未設定)"になります。
+
+ +

erasemacro ( マクロの消去 )

+
マクロ操作
+
+ +
属性必須?説明
nameyesタグ名 消去するタグを指定します。マクロとして定義されたタグのみを 消去することが出来ます。
 macro タグで記述したマクロを消去します。
+
+ +

eval ( 式の評価 )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。
 exp で示された式を評価します。通常は変数への値の代入に用います。
 exp には任意の TJS 式を指定できるので、TJS として有効な式であれば 何でも評価できます。
+
例:
+[eval exp="f.test=500"]
;↑ゲーム変数 test に数値を代入している
[eval exp="f.test2='文字列'"]
;↑ゲーム変数 test2 に文字列を代入している
[eval exp="sf.test=400"]
;↑システム変数 test に数値を代入している
[eval exp="f.test2=f.test*3"]
;↑ゲーム変数 test2 に ゲーム変数 test の 3 倍の数値を代入している
+
+
+ +

fadebgm ( BGMのフェード )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
volumeyes音量% (0〜100) フェード後に到達させる BGM の音量を % で指定します。
 100 が上限です。音量の抑制のみをサポートします(増幅は 音源の特性上、できません)。
timeyes時間(ms単位) フェードを行っている時間を ms 単位で指定します。 3000 と指定すれば 3 秒間の間、フェードを行っています。
 現在演奏中の BGM を指定音量までフェードします。
 フェード終了後も曲は演奏されたままです。
 このタグはフェードの終了を待ちません。フェードの終了を待つに は、wb タグを使用してください。
+
+ +

fadeinbgm ( フェードインしながらのBGM再生開始 )

+
効果音・BGM・ビデオ操作
+
+ + + + +
属性必須?説明
storageyesBGM ファイル名 または CD トラック番号 演奏する BGM ファイル名または CD トラック番号を指定します。
startnoBGM 開始位置指定 ループチューナで指定したラベルで BGM の再生開始位置を指定します。
loopnotrue(デフォルト) または false BGM をループするかを指定します。
 true を指定するとループします。false を指定すると ループしません。
 省略すると true であると見なされます。
timeyes時間(ms単位) フェードインを行っている時間を ms 単位で指定します。 3000 と指定すれば 3 秒間の間、フェードインを行っています。
 BGM ファイルを演奏しますが、曲の先頭でフェードインを行います。
 このタグはフェードの終了を待ちません。フェードの終了を待つに は、wb タグを使用してください。
+
+ +

fadeinse ( 効果音のフェードイン再生 )

+
効果音・BGM・ビデオ操作
+
+ + + + + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 効果音を再生するバッファを指定します。一つのバッファでは 同時には一つの効果音を鳴らすことができます。
 省略すると 0 であると見なされます。
storageyes効果音ファイル名 演奏する効果音ファイル名を指定します。
 拡張子は省略可能ですが、省略した場合に自動的に探し出されるのは .wav または .ogg または .mp3 の拡張子を持つファイルだけです。 ( ただし ogg と mp3 の再生には SDK 付属のプラグインが必要 )
そのほかのプラグインで使用可能になるそのほかの ファイル形式を指定する場合は拡張子も指定してください。
startnoSE 開始位置指定 ループチューナで指定したラベルで SE の再生開始位置を指定します。
timeyesフェードイン時間(ms) フェードインを行っている時間をミリ秒単位で指定します。
loopnotrue または false(デフォルト) 効果音を繰り返し再生するかどうかを指定します。
 true を指定すると繰り返し再生されます。false を 指定すると一回限りの再生となります。省略すると false であると見なされます。
 true を指定した場合は ws タグ で効果音再生の終了を待つことはできません。
 効果音をフェードインしながら再生します。
 このタグはフェードの終了を待ちません。 待つには wf タグを使用してください。
+
+ +

fadeoutbgm ( BGMのフェードアウト )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
timeyes時間(ms単位) フェードアウトを行っている時間を ms 単位で指定します。 3000 と指定すれば 3 秒間の間、フェードアウトを行っています。
 現在演奏中の BGM をフェードアウトします。
 フェードアウトが終了すると曲は自動的に停止します。
 このタグはフェードの終了を待ちません。フェードの終了を待つに は、wb タグを使用してください。
+
+ +

fadeoutse ( 効果音のフェードアウト )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 効果音をフェードアウトするバッファを指定します。
 省略すると 0 であると見なされます。
timeyesフェードアウト時間(ms) フェードアウトを行っている時間をミリ秒単位で指定します。
 効果音をフェードアウトします。フェードアウトし終わると再生は 自動的に停止します。
 このタグはフェードの終了を待ちません。 待つには wf タグを使用してください。
+
+ +

fadepausebgm ( BGM 演奏のフェードアウトしながらの一時停止 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
timeyes時間(ms単位) フェードアウトを行っている時間を ms 単位で指定します。 3000 と指定すれば 3 秒間の間、フェードアウトを行っています。
 BGM 演奏をフェードアウトしながら一時停止します。Config.tjs で BGM 再生メディアに "Wave" を指定 した場合のみに有効です。
 BGM の一時停止状態は栞に保存されますが、一時停止していた場合の BGM の 再生位置の情報は保存されないので注意してください。
 一時停止した BGM を再開するには resumebgm タグ を使用してください。
+
+ +

fadese ( 効果音のフェード )

+
効果音・BGM・ビデオ操作
+
+ + + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 効果音をフェードするバッファを指定します。
 省略すると 0 であると見なされます。
timeyesフェード時間(ms) フェードを行っている時間をミリ秒単位で指定します。
volumeyes音量% (0〜100) フェードの到達音量を % で指定します。  100 が上限です。音量の抑制のみをサポートします(増幅は 音源の特性上、できません)。
 効果音を指定の到達音量までフェードします。
 このタグはフェードの終了を待ちません。 待つには wf タグを使用してください。
+
+ +

font ( 文字属性設定 )

+
メッセージ操作
+
+ + + + + + + + + + + +
属性必須?説明
sizeno文字サイズ(pixel単位) または "default" 文字サイズを pixel 単位で指定します。
facenoフォント名 または "default" または "user" フォント名を指定します。
 フォント名には曖昧な指定はできません。スペース、半角/全角も正確に指定してください。
 複数のフォント名をカンマで区切って指定できます。この場合は、最初の方に書いた フォントが存在すれば、それが優先されて選択されます。
 例 : face="HG行書体,MS Pゴシック"
 縦書き用フォントは自動的に設定されますので、フォント名の先頭に @ マークをつける 必要はありません。  "user" を指定すれば、メニューの [文字表示|フォント] でユーザが選択したフォントに なります。
colorno0xRRGGBB 形式 または "default" 文字色を 0xRRGGBB 形式で指定します。
italicnotrue または false または "default" 文字を斜体にするかどうかを指定します。true を指定すると斜体になりま す。
rubysizenoルビの文字サイズ(pixel単位) または "default" ルビ(読み仮名)の文字のサイズを pixel 単位で指定します。
rubyoffsetnoルビの表示オフセット(pixel単位) または "default" ルビの表示オフセットを pixel 単位で指定します。負の数を指定すると本文に より近い位置に表示されます。
shadownotrue または false または "default" 文字に影をつけるかを指定します。true を指定すると影がつきます。
edgenotrue または false または "default" 文字を袋文字 ( 縁取り文字 ) にするかを指定します。true を指定すると袋文字になります。
edgecolorno0xRRGGBB 形式 または "default" 文字の袋の色を 0xRRGGBB 形式で指定します。
shadowcolorno0xRRGGBB 形式 または "default" 影の色を 0xRRGGBB 形式で指定します。
boldnotrue または false または "default" 文字を太文字にするかを指定します。 true を指定すると太文字になります。
 文字の様々な属性を指定します。
 これらの属性は、メッセージレイヤごとに個別に設定できます。
 いずれの属性も、省略すると前の状態を引き継ぎます。また、default を指定すると Config.tjs 内で指定したデフォルトの値に戻ります。
 edge と shadow は同時に true にした場合は、袋文字のみが有効になり、影は無視されます。
 これらの属性は、resetfont タ グや ct cm er タグが実行され ると、Config.tjs 内や deffont タグで指定し たデフォルトの値に戻ります。
+
+ +

freeimage ( レイヤ画像の解放 )

+
レイヤ操作
+
+ + +
属性必須?説明
layeryes"base" または 0 以上の整数 画像を解放するレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
 レイヤの画像を解放します。
 とくにアニメーション情報を保持しているレイヤは、非表示にしていても CPU パワーを 使用するので、不必要になった時点でこのタグを使って解放するといいかと思います。
+
+ +

glyph ( クリック待ち記号の指定 )

+
メッセージ操作
+
+ + + + + + + +
属性必須?説明
lineno行末クリック待ち記号ファイル名 行末クリック待ち記号画像のファイル名を指定します。 拡張子は指定しないでください。
linekeyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt"カラーキーを指定します。
 image タグの key 属性を参照してください。
pageno改ページクリック待ち記号ファイル名 改ページ待ち記号画像のファイル名を指定します。
拡張子は指定しないでください。
pagekeyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt"カラーキーを指定します。
 image タグの key 属性を参照してください。
fixnotrue または false 記号表示位置を指定位置に固定するかどうかを指定します。true を指定すると 記号は left および top を指定した位置に表示されます。
 false を指定すると left および top 属性は無視され、記号は現在の文字表示 位置に表示されるようになります。
leftno左端位置(pixel単位) fix 属性を true にしたときに記号を表示する位置のうち、左端位置を 指定します。
topno上端位置(pixel単位) fix 属性を true にしたときに記号を表示する位置のうち、上端位置を 指定します。
 クリック待ちに用いる画像を指定します。
 line や page 属性で指定されたファイル名の画像が記号として、そのファイル名に .asd を つけたファイル名が アニメーションレイヤのスクリプトとして読み込まれます。
 アニメーションレイヤ用の画像やスクリプトの書き方については、AnimationLayer.tjs を 参照してください。
 これらの設定は、メッセージレイヤごとに個別に設定できます。
+
+ +

goback ( 前に戻る )

+
栞・通過記録操作
+
+ +
属性必須?説明
asknotrue または false(デフォルト) true を指定すると、前に戻るかどうかの確認をします。false を 指定すると前に戻るかどうかの確認はありません。この属性を省略 すると false を指定したとみなされます。
 前に戻るかどうかの確認でユーザが「いいえ」を選んだ場合、実行は そのまま継続します。
 メニューから システム|前に戻る を選択したときと同じ動作をします。
+
+ +

gotostart ( 最初に戻る )

+
栞・通過記録操作
+
+ +
属性必須?説明
asknotrue または false(デフォルト) true を指定すると、最初に戻るかどうかの確認をします。false を 指定すると最初に戻るかどうかの確認はありません。この属性を省略 すると false を指定したとみなされます。
 最初に戻るかどうかの確認でユーザが「いいえ」を選んだ場合、実行は そのまま継続します。
 startanchor タグで指定された場所に戻ります。
 メニューから システム|最初に戻る を選択したときと同じ動作をします。
+
+ +

graph ( インライン画像表示 )

+
メッセージ操作
+
+ + + + +
属性必須?説明
storageyes画像ファイル名 表示させたい画像ファイル名を指定します。 読み込める形式は imageタグで読み込める 形式と同じです。  ここで指定したファイル名 (拡張子を除く) 部分に _m を追加 したファイルが、もしあれば、マスク画像として読み込まれます。 マスク画像は必ず 256 色グレースケールで保存してください。
keyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt" どの色を抜き色とするかを指定します。省略すると抜き色は無効になります。  key=0xRRGGBB という形式で 16 進数で抜き色を指定する と、RR(赤) GG(緑) BB(青)で塗られた部分を抜き色として透明にします。 たとえば、key=0xff00ff では (r,g,b)=(255,0,255) つまり真マゼンダの部 分を抜き色として透明にするという指定になります。
 ただ単に数値を指定すれば、そのパレットインデックスの数値が抜き 色となります。16色/256色の画像に対して有効です。
 key=adapt と指定すれば、自動的に抜き色が決定されます。 使用される抜き色は、画像の一番上のラインにて、一番多く使われている色です。 16色/256色の画像に対して有効です。
 マスク画像を使用する場合は、このタグを指定する必要はありません。
charnotrue (デフォルト) または false true を指定すると、画像はfont タグで 指定した色、影、袋文字の状態が、文字同様に表示されます。 そのため、true を設定すると画像の色情報は無視されます。 また、画像が影や袋文字である必要はありません。
 graph タグが特殊記号の表示に使われることが多いことを 想定してデフォルトでは true になっているので、普通の 画像を表示する場合は注意してください。
altno代替文字 メッセージ履歴に表示する、この画像の代替文字を指定します。 メッセージ履歴は文字情報しか表示できませんので、alt 属性に 指定された文字が代わりに表示されます。
 任意の画像をメッセージレイヤの文字位置に表示します。
 読み込み可能な形式は image タグで表示する ことのできる前景画像と同じです。
 通常は、普通のフォントでは含まれていないような特殊な記号を 画像として用意し、それを表示させる用途に使用します。
 記号でなく、画像を表示する場合は char 属性に false を指定してく ださい。
 よく使う記号はマクロを組んでおくと楽かと思います。
+
例:
+; heart にはハートマークの画像
[macro name="heart"][graph storage="heart" alt="(は〜と)"][endmacro]
; 以後、[heart] タグでハートマークを使用可能
+
+
+ +

hact ( メッセージ履歴アクション )

+
メッセージ履歴操作
+
+ +
属性必須?説明
expyesTJS式 メッセージをクリックしたときに実行する TJS 式を指定します。
 メッセージ履歴に対するアクションを指定します。このタグと endhact タグ で囲まれた部分は、メッセージ履歴上でクリックできるようになり、クリックされた時に実行する TJS 式 を指定することができます。過去にメッセージと共に再生した声を、メッセージ履歴のクリックで 再生できるようにするなどに応用できます。
+
+ +

hch ( 縦中横を表示する )

+
メッセージ操作
+
+ + +
属性必須?説明
textyes文字 ここで指定した文字がそこだけ横書きで表示されます。
expandnotrue または false(デフォルト) true を指定すると、長い縦中横を描画しようとしたときに 行間を自動的に拡張します。false を指定すると、縦中横が 行からはみ出て正常に描画されない可能性がありますが、 行間はそのままになります ( 通常半角2桁ならば false で OK )。
この属性を指定しないと false であると見なされます。

 縦中横 ( 縦書き中に算用数字2桁を書くような場合にそこだけ横書きにする書き方 ) で文字を表示します。
 現在対象となっているメッセージレイヤが縦書きモードである必要があります。
+
例:
+今日は平成[hch text="15"]年[hch text="12"]月[hch text="30"]日 +
+
+ +

hidemessage ( メッセージを消す )

+
システム操作
+
 メッセージレイヤを一時的に隠します。メニューから「メッセージを消す」を選んだのと 同じ動作を行います。
 クリック待ちを行った後、メッセージレイヤは表示され、 実行は継続します。
+
+ +

history ( メッセージ履歴の設定 )

+
メッセージ履歴操作
+
+ + +
属性必須?説明
outputnotrue または false メッセージ履歴への文字情報の出力をするかどうかを指定します。
 true を指定すると、メッセージレイヤに表示した文字がメッセージ履歴に 表示されるようになります。
 シナリオを最初に実行したときは true の状態になっています。
 false を指定するとメッセージ履歴には文字情報は出力されません。
enablednotrue または false メッセージ履歴を表示可能かどうかを指定します。
 true を指定すると表示可能に、false を指定すると表示不可能になります。
 ユーザーにメッセージ履歴を表示させたくない場合に false にしてください。
 メッセージ履歴の機能に関する設定を行います。
+
+ +

hr ( メッセージ履歴の改行/改ページ )

+
メッセージ履歴操作
+
+ +
属性必須?説明
repagenotrue または false(デフォルト) 改ページを行うかどうかを指定します。
 true を指定すると改行ではなく改ページが行われます。false を指定すると 改行が行われます。
 この属性を省略すると false が指定されたと見なされます。
 改ページは、Config.tjs のメッセージ履歴の設定で everypage が true に なってないと動作しません。
 メッセージ履歴を改行または改ページします。
+
+ +

if ( 条件によりシナリオを実行 )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。この式の結果が false ( または 0 な らば、elsif・else・endif タグまでの文章やタグが無視されます。
式を評価し、その結果が true ( または 0 以外 ) ならば、 elsif・else・endif のいずれかまでにある文章やタグを実行し、 そうでない場合は無視します。
 if 〜 endif の間にはラベルを挟まないでください。
+
例:
+; 例1 [if exp="false"]
ここは表示されない
[else]
ここは表示される
[endif]

; 例2 [if exp="false"]
ここは表示されない
[elsif exp="false"]
ここは表示されない
[else]
ここは表示される
[endif]

; 例3 [if exp="false"]
ここは表示されない
[elsif exp="true"]
ここは表示される
[else]
ここは表示されない
[endif]

; 例4 [if exp="true"]
ここは表示される
[elsif exp="true"]
ここは表示されない
[else]
ここは表示されない
[endif]

+
+
+ +

ignore ( 条件によりシナリオを無視 )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。この式の結果が true ( または 0 以外 )な らば、endignore タグまでの文章やタグが無視されます。
 式を評価し、その結果が true ( または 0 以外 ) ならば、endignore タグまでにある文章 やタグが無視されます。
 ignore 〜 endignore の間にはラベルを挟まないでください。
+
+ +

image ( 画像の読み込み )

+
レイヤ操作
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性必須?説明
storageyes画像ファイル名 読み込みたい画像を指定します。拡張子は省略可能です。
 ここで指定したファイル名 (拡張子を除く) 部分に _m を追加 したファイルが、もしあれば、マスク画像として読み込まれます。  また、同様に _p を追加したファイルが、もしあれば、クリッカブル マップ用の領域画像として読み込まれます。
 マスク画像は必ず 256 色グレースケールで保存してください。
 領域画像はかならず 256 色で保存してください。
 また、拡張子が asd のファイルが存在すればアニメーション シーケンスデータとしてアニメーションの情報も読み込みまれ、 拡張子が ma のファイルが存在すれば、クリッカブルマップ用の 領域アクション定義ファイルとして読み込まれます。
layeryes"base" または 0 以上の整数 画像を読み込むレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤに画像を読み込みます。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
keyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt" どの色を抜き色とするかを指定します。省略すると抜き色は無効になります。
 key=0xRRGGBB という形式で 16 進数で抜き色を指定する と、RR(赤) GG(緑) BB(青)で塗られた部分を抜き色として透明にします。 たとえば、key=0xff00ff では (r,g,b)=(255,0,255) つまり真マゼンダの部 分を抜き色として透明にするという指定になります。
 ただ単に数値を指定すれば、そのパレットインデックスの数値が抜き 色となります。16色/256色の画像に対して有効です。
 key=adapt と指定すれば、自動的に抜き色が決定されます。 使用される抜き色は、画像の一番上のラインにて、一番多く使われている色です。 16色/256色の画像に対して有効です。
 マスク画像を使用する場合は、この属性は指定する必要は ありません。
modeno"alpha"(デフォルト) または "transp" "opaque" "rect" "add" "sub" "mul" "dodge" "darken" "lighten" "screen" "psadd" "pssub" "psmul" "psscreen" "psoverlay" "pshlight" "psslight" "psdodge" "psdodge5" "psburn" "pslighten" "psdarken" "psdiff" "psdiff5" "psexcl" のいずれか 前景レイヤの透過モードを指定します。前景レイヤ以外には 指定しないでください。
 "alpha" または "transp" を指定するとαチャネルが有効になって画像を 透過して表示することができます。"alpha" でも "transp" でも同じ意味です。
 "opaque" または "rect" を指定すると画像は透過されません (矩形で表示されます)。"opaque" でも "rect" でも同じ意味です。
 "addalpha" を指定すると、画像を透過して表示することができます。"alpha" はアルファ合成ですが、 "addalpha" は加算アルファ合成を表します。この違いについては「吉里吉里2 リファレンス」を参照してください。
 "add" を指定すると加算合成が行われます。
 "sub" を指定すると減算合成が行われます。
 "mul" を指定すると乗算合成が行われます。
 "dodge" を指定すると「覆い焼き」合成が行われます。
 "darken" を指定すると「比較(暗)」合成が行われます。
 "lighten" を指定すると「比較(明)」合成が行われます。
 "screen" を指定すると「スクリーン乗算」合成が行われます。
 "psadd" を指定すると、Photoshop互換の「覆い焼き(リニア)」合成が行われます。
 "pssub" を指定すると、Photoshop互換の「焼き込み(リニア)」合成が行われます。
 "psmul" を指定すると、Photoshop互換の「乗算」合成が行われます。
 "psscreen" を指定すると、Photoshop互換の「スクリーン」合成が行われます。
 "psoverlay" を指定すると、Photoshop互換の「オーバーレイ」合成が行われます。
 "pshlight" を指定すると、Photoshop互換の「ハードライト」合成が行われます。
 "psslight" を指定すると、Photoshop互換の「ソフトライト」合成が行われます。
 "psdodge" を指定すると、Photoshop互換の「覆い焼きカラー」合成が行われます。
 "psdodge5" を指定すると、Photoshop互換の「覆い焼きカラー」合成(Photoshop 5.x 以下と互換)が行われます。
 "psburn" を指定すると、Photoshop互換の「焼き込みカラー」合成が行われます。
 "pslighten" を指定すると、Photoshop互換の「比較(明)」合成が行われます。
 "psdarken" を指定すると、Photoshop互換の「比較(暗)」合成が行われます。
 "psdiff" を指定すると、Photoshop互換の「差の絶対値」合成が行われます。
 "psdiff5" を指定すると、Photoshop互換の「差の絶対値」合成(Photoshop 5.x 以下と互換)が行われます。
 "psexcl" を指定すると、Photoshop互換の「除外」合成が行われます。
 透明度情報を持たない画像を指定する場合は "opaque" に指定する方が 負荷が軽くて済みます。

 省略すると "alpha" であるとみなされます。例外的に、 TLG5/6 画像の場合は、画像中に透過モードを表す情報が埋め込まれています。この場合は、この属性を 省略すると、その画像が情報として持っている透過モードに従って表示されます。
grayscalenotrue または false 画像をグレースケールにするかどうかを指定します。 grayscale=true と指定すると、画像をグレースケールにします。 省略すると false であると見なされます。
rgammanoガンマ補正値 (0.1 〜 1.0(デフォルト) 〜 9.9) r (赤) 、g (緑) 、 b (青) の各成分のガンマ値を指定します。 たとえば画像をセピア調にするには、 grayscale=true rgamma=1.3 ggamma=1.1 と指定します。
ggammanoガンマ補正値 (0.1 〜 1.0(デフォルト) 〜 9.9) r (赤) 、g (緑) 、 b (青) の各成分のガンマ値を指定します。 たとえば画像をセピア調にするには、 grayscale=true rgamma=1.3 ggamma=1.1 と指定します。
bgammanoガンマ補正値 (0.1 〜 1.0(デフォルト) 〜 9.9) r (赤) 、g (緑) 、 b (青) の各成分のガンマ値を指定します。 たとえば画像をセピア調にするには、 grayscale=true rgamma=1.3 ggamma=1.1 と指定します。
rfloorno輝度最低値 ( 0(デフォルト) 〜 255 ) 各成分の輝度最低値を指定します。
gfloorno輝度最低値 ( 0(デフォルト) 〜 255 ) 各成分の輝度最低値を指定します。
bfloorno輝度最低値 ( 0(デフォルト) 〜 255 ) 各成分の輝度最低値を指定します。
rceilno輝度最高値 ( 0 〜 255(デフォルト) ) 各成分の輝度最高値を指定します。 たとえば、 rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 と 指定すると、色が反転します。
gceilno輝度最高値 ( 0 〜 255(デフォルト) ) 各成分の輝度最高値を指定します。 たとえば、 rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 と 指定すると、色が反転します。
bceilno輝度最高値 ( 0 〜 255(デフォルト) ) 各成分の輝度最高値を指定します。 たとえば、 rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 と 指定すると、色が反転します。
mcolorno0xRRGGBB 形式 色ブレンドによる色調効果において、ブレンドする色を 0xRRGGBB 形式で指定しま す。濃度は mopacity 属性で指定します。
 省略すると色ブレンドによる色調効果は行われません。
mopacitymcolor を指定した場合不透明度(0 〜 255) 色ブレンドによる色調効果で、mcolor で指定した色をどれぐらいの不透 明度でブレンドするかを指定します。
lightcolorno0xAARRGGBB形式 光ブレンドによる色調効果の、ブレンドする色を 0xAARRGGBB 形式で指定します。 α値を含むのに注意してください。
 省略すると光ブレンドによる色調効果は行われません。この処理は mcolor 処理の後で実行されます。
lighttypelightcolor を指定した場合mode と同じ 光ブレンドによる色調効果の、合成モードを指定します。
shadowno0xRRGGBB 形式 レイヤの画像に影をつけます。影色を 0xRRGGBB 形式で指定します。数値省略時は 0x000000 扱いです。 shadowopacity,shadowx,shadowy,shadowblur でつける影のパラメータを指定できます。
shadowopacityno濃度指定(0〜255) shadowで影をつけるときの影の濃度を指定します。未指定時の値は200です。
shadowxnoピクセル値 shadowで影をつけるときの影のX方向のずれの量を指定します。未指定時の値は10です。
shadowynoピクセル値 shadowで影をつけるときの影のY方向のずれの量を指定します。未指定時の値は10です。
shadowblurno数値指定(0〜) shadowで影をつけるときの影のぼかし具合を指定します。未指定時の値は 3 です。
clipleftnoクリップ矩形左端位置(pixel単位) 画像クリップ矩形の左端位置を指定し ます。clipleft, cliptop, clipwidth, clipheight で矩形を指定 すると、storage 属性で指定された画像のその矩形のみが切り取られ、 指定されたレイヤの画像になります。画像の一部だけを切り取って 表示したいときなどに使用します。
 これらの属性を省略すると、storage 属性で指定された画像全部が レイヤの画像になります。
cliptopnoクリップ矩形上端位置(pixel単位) 画像クリップ矩形の上端位置を指定し ます。
clipwidthnoクリップ矩形幅(pixel単位) 画像クリップ矩形の幅を指定します。
clipheightnoクリップ矩形高さ(pixel単位) 画像クリップ矩形の高さを指定し ます
flipudnotrue または false(デフォルト) 画像の上下反転を行いたい場合に true を指定します。
fliplrnotrue または false(デフォルト) 画像の左右反転を行いたい場合に true を指定します。
visiblenotrue または false layer 属性で指定したレイヤを表示するか、しないかを指定 します。visible=true と 指定すれば、レイヤは表示状態になります。visible=false と指定すれば、 非表示状態になります。省略すると表示状態は変わりませ ん。layer=base を指定した場合はこの属性は指定しないでください。
leftno左端位置(pixel単位) layer 属性で指定したレイヤの左端位置を指定します。 省略すると、画像読み込み前の位置を保持します。layer=base と指定した場合は この属性は指定しないでください。
topno上端位置(pixel単位) layer 属性で指定したレイヤの上端位置を指定します。 省略すると、画像読み込み前の位置を保持します。layer=base と指定した場合は この属性は指定しないでください。
posnoleft または left_center または center または right_center または right レイヤ位置を自動的に決定します。前景レイヤに対して使います。
 横方向の位置は、この属性で指定した left ( 左端 ) 、left_center ( 左より )、center ( 中央 )、 right_center ( 右より )、right ( 右端 ) の位置に表示されます。各横方向の座標の中心 位置は Config.tjs で指定することができます。
 left, left_center, center, right_center, right の代わりに、それぞれ l, lc, c, rc, r を 指定することもできます ( 動作は同じです )。
 縦方向の位置については、レイヤの下端は画面の下端に合わせて ( 下側に 詰められて ) 表示されます。
 この属性を指定した場合は left 属性や top 属性は無視されます。
 layer=base と指定した場合にはこの属性は指定しないでください。
opacityno不透明度 ( 0 (全くの透明) 〜 255 (全くの不透明 ) ) layer 属性で指定したレイヤの不透明度を指定します。
 デフォルトで 255 (全くの不透明) です。つまり、この属性を指定しないで 画像を読み込むと、そのレイヤの opacity が 255 以外でも、255 に設定し なおされます。
 128 を指定すると半分程度の透明度になり、透けて表示されます。
 opacity=0 としてもレイヤを見えなくすることが出来ますが、全くの透明に なっただけで非表示になるわけではありません。
 この属性を設定してもレイヤの画像自体が変化するわけではありません。 変化するのは表示の状態です。
mapimageno画像ファイル名 クリッカブルマップに用いる領域画像を指定します。
 ここで指定を行わなくても、storage 属性で指定したファイル名 (拡張子を除く) 部分に _p を追加したファイルが もしあれば自動的に領域画像として読み込まれますが、 別のファイルを代わりに読み込みたい場合にこの属性を用います。
mapactionno領域アクション定義ファイル名 クリッカブルマップに用いる領域アクション定義ファイルを指定します。
 ここで指定しなくても、storage 属性で指定したファイル名と同名で拡張子が ma の ファイルがあれば自動的に涼気アクション定義ファイルとして読み込まれますが、 別のファイルを代わりに読み込みたい場合にこの属性を用います。
 拡張子 ( 通常は .ma ) は省略できませんので拡張子も含めて指定してください。
indexno正の整数 背景レイヤには指定しないでください。
 重ね合わせ順序を指定します。値が大きいほど手前に表示されます。
 標準では、前景レイヤ 0 が 1000、前景レイヤ 1 が 2000 ( 以降 1000 ずつ増える )、 メッセージレイヤ 0 が 1000000、メッセージレイヤ 1 が 1001000 ( 以降 1000 ずつ増える )、  メッセージ履歴を表示するためのレイヤが 2000000 となっています。
 背景レイヤの重ね合わせ順序は変更することはできません。
 laycount タグを実行すると、この重ね合わせ順序は 標準の状態に戻されてしまう場合があるので注意してください。
 画像を読み込みます。img でも image でも同じ意味です。多くの属性がありま すが、必須なのは storage と layer のみです。
 前景レイヤは KAG 初期状態では非表示状態なので、visible=true とすれば 表示されるようになります。

 色調補正は読み込む画像に対して、
・grayscale によるグレースケール化
・?gamma , ?floor , ?ceil によるガンマ補正
・mcolor, mopacity による色ブレンド
の順番で行われます。
 アニメーション情報の作成の方法は AnimationLayer.tjs 内を参照してください。
 クリッカブルマップの使い方については KAG システムリファレンスを参照してください。
+
+ +

indent ( インデントの設定 )

+
メッセージ操作
+
 このタグの位置に左インデント ( 縦書きの場合は頭インデント ) を設定します。発言者インデントなどとして使うことができます。インデントを解除する場合は、改行の前に endindent タグを使用します。
+
例:
+【あんぱん】[indent]このように発言者インデントなどとして使うことができます。[endindent] +
+
+ +

input ( 文字列の入力 )

+
変数・TJS 操作
+
+ + + +
属性必須?説明
nameyes変数名 入力したい文字列を格納する変数を指定します。
 もし変数にすでに文字列が入っていた場合は、 その文字列がダイアログボックスの初期文字列として表示されます。
 ユーザーがダイアログボックスのキャンセルボタンや ESC キーを押したときは 変数の値は変わりません。
 変数には KAG からアクセスできるすべての変数を指定することができます。
promptnoプロンプトとして表示する文字列 ダイアログボックスのプロンプト ( 入力欄のすぐ上に表示される文字列 ) を 指定します。省略すると空欄になります。
 「名前を入力してください」などにします。
titlenoダイアログボックスのタイトル ダイアログボックスのタイトルを指定します。
 省略するとタイトルは空欄になります。
 「名前の入力」などにします。
 文字列を入力するためにダイアログボックスを開き、ユーザーに入力を求めます。
 ユーザー名の入力などに使用することができます。
+
例:
+[eval exp="f.username='太郎'"]
[input name=f.username prompt="名前を入力してください" title="名前の入力"]
名前は : [emb exp=f.username]
+
+
+ +

iscript ( TJS スクリプトの記述 )

+
変数・TJS 操作
+
 [iscript] のみの行と、[endscript] のみの行で 囲まれた部分に TJS スクリプトを書き込むことが出来ます。
 [iscript] のみの行というのは、その行には [iscript] タグのみしか記述しては いけないと言うことです(endscript も同様)。
 また、マクロ中にこのタグを書くことはできません。
+
例:
+[iscript]
kag.restoreBookMark(0); // 0 番目の栞をたどる
[endscript]
+
+
+ +

jump ( シナリオのジャンプ )

+
ラベル・ジャンプ操作
+
+ + + +
属性必須?説明
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
countpagenotrue(デフォルト) または false 他のラベルに移行するときに、このタグのある 場所のラベルを「読んだ」とみなすかどうかを指定します。
 ジャンプする際にそのページが「読んだ」ことになっては 困る場合に false を指定します。
 指定されたシナリオファイルの指定されたラベルにジャンプします。
 サブルーチン内でジャンプする場合は、call 〜 return のバランスに注意してください。
+
+ +

l ( 行末クリック待ち )

+
メッセージ操作
+
 行末のクリック待ちを行います。 p タグとは、メッセージ履歴への改行の出力の違いや、 「文字表示 > ページ末まで一気に」 を使用したときの挙動の違いなどがあります。
 current タグで裏ページのメッセージレイヤを 指定している場合はこの記号は表示されません。表示したい場合は 表ページのメッセージレイヤを指定してください。
+
+ +

laycount ( レイヤの数の変更 )

+
レイヤ操作
+
+ + +
属性必須?説明
layersno0 または正の整数 前景レイヤの数を指定します。
messagesno正の整数 メッセージレイヤの数を指定します。
 0 は指定できません。
 前景レイヤまたはメッセージレイヤの数を変更します。いずれの属性も 省略すれば設定は変更されません。
 レイヤ数に制限はありませんが、実行環境の OS やメモリによって制限 を受ける可能性があります。
 レイヤの数は必要最小限にしておくべきです。たくさんのレイヤを確保して それを使い終わったら、なるべく必要最小限の状態に戻しておくのが良いでしょう。
+
+ +

layopt ( レイヤの属性 )

+
レイヤ操作
+
+ + + + + + + + +
属性必須?説明
layeryes0 以上の整数または message0 または message1 または message 対象となる前景レイヤまたはメッセージレイヤを指定します。  message とのみ指定した場合は、current タグで指定した、現在の操作対象のメッセージレイヤが対象となります。
pageno"fore"(デフォルト) または "back"  表(fore)画面のレイヤを対象とするか、裏(back)画面のレイヤを対象と するかを指定します。省略すると表ページであると見なされます。
 ただし、layer=message とのみ指定した場合でこの属性を省略した場合は 現在操作対象のページのメッセージレイヤが選択されます。
visiblenotrue または false layer 属性で指定したレイヤを表示するか、しないかを指定 します。visible=true と 指定すれば、レイヤは表示状態になります。visible=false と指定すれば、 非表示状態になります。省略すると表示状態は変わりませ ん。
leftno左端位置(pixel単位) layer 属性で指定したレイヤの左端位置を指定します。 省略すると位置は変更しません。
 layer 属性に message0 や message1 を指定した場合は、むしろ position タグで位置等を指定してください。
 ただし、position タグはメッセージレイヤをクリアしてしまいますが、 このタグではクリアしません。内容を維持したまま表示位置を変えたい場合は このタグを使います。
topno上端位置(pixel単位) layer 属性で指定したレイヤの上端位置を指定します。 省略すると位置は変更しません。
 layer 属性に message0 や message1 を指定した場合は、むしろ position タグで位置等を指定してください。
 ただし、position タグはメッセージレイヤをクリアしてしまいますが、 このタグではクリアしません。内容を維持したまま表示位置を変えたい場合は このタグを使います。
opacityno不透明度 ( 0 (全くの透明) 〜 255 (全くの不透明 ) ) レイヤの不透明度を指定します。
 デフォルトで 255 (全くの不透明) です。128 を指定すると半分程度の 透明度になり、透けて表示されます。
 opacity=0 としてもレイヤを見えなくすることが出来ますが、全くの 透明になっただけで非表示になるわけではありません。
 また、この属性を設定してもレイヤの画像自体が変化するわけではありません。 たとえば opacity=128 として半透明にした後に 255 に戻しても正常に表示されます。
 メッセージレイヤに対してもこの属性を指定できます が、position タグで指定する opacity 属性 とは意味が違います。
autohidenotrue または false 前景レイヤ以外には指定しないでください。
 [システム|メッセージを消す] メニューを選択したときにメッセージレイヤが隠れますが、 それと同時にこの前景レイヤも隠すかどうかを指定します。
indexno正の整数 背景レイヤには指定しないでください。
 重ね合わせ順序を指定します。値が大きいほど手前に表示されます。
 標準では、前景レイヤ 0 が 1000、前景レイヤ 1 が 2000 ( 以降 1000 ずつ増える )、 メッセージレイヤ 0 が 1000000、メッセージレイヤ 1 が 1001000 ( 以降 1000 ずつ増える )、  メッセージ履歴を表示するためのレイヤが 2000000 となっています。
 背景レイヤの重ね合わせ順序は変更することはできません。
 laycount タグを実行すると、この重ね合わせ順序は 標準の状態に戻されてしまう場合があるので注意してください。
 レイヤの属性を指定します。
+
+ +

link ( ハイパーリンク )

+
ラベル・ジャンプ操作
+
+ + + + + + + + + + + + + + +
属性必須?説明
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
expnoTJS 式 クリックされたときに実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
colorno0xRRGGBB 形式 リンクが選択されたときに出る半透明の矩形の色を指定します。
hintnoヒントとして表示させる文字列 リンクを選択し、マウスカーソルを静止させたときに表示される ツールチップヒントを指定します。
 省略すると表示は行われません。
 リンクの説明の補足に使えますが、 hint 属性のみを指定し、 target, storage, exp 属性は指定しないで空のリンクを作成し、 小難しい単語の説明をすることなどもできます。
onenternoTJS 式 リンク内にマウスカーソルが入ってきたときに実行される TJS 式を 指定します。
onleavenoTJS 式 リンク内からマウスカーソルが出ていった時に実行される TJS 式を 指定します。
countpagenotrue(デフォルト) または false リンクを選択して他のラベルに移行するときに、このリンクのある 場所のラベルを「読んだ」とみなすかどうかを指定します。
 [s] タグを実行する前にリンクが選択されてジャンプする際に、 そのページが「読んだ」ことになっては困る場合に false を指定します。
clickseno効果音ファイル名 クリックされたときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
clicksebufno効果音バッファ番号 clickse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
enterseno効果音ファイル名 マウスが進入したときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
entersebufno効果音バッファ番号 enterse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
leaveseno効果音ファイル名 マウスが退出したときに再生する効果音を指定します。指定しなければ 効果音は再生されません。
leavesebufno効果音バッファ番号 leavese で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
 link タグと endlink タグで囲まれた部分の文章を、 マウスやキーボードで選択可能にし、そこでクリックされたりキーを押されたときに、 ジャンプする先を指定できます。
exp 属性を指定すれば、リンクをクリックされたときに変数に値を代入するというよ うな動作も行わせることができます。
 囲まれた文章は、ページをまたぐことは出来ません(行をまたぐことはできます)。
 一画面中に最大で 255 個のリンクを作成することができます。
+
+ +

load ( 栞の読み込み )

+
栞・通過記録操作
+
+ + +
属性必須?説明
placeno0または正の整数(0がデフォルト) 栞の番号を指定します。省略すると 0 が指定されたと見なされます。
 どのような数値を指定してもかまいませんが、999 〜 1999 は特別な意味を持つ 栞です。
asknotrue または false(デフォルト) true を指定すると、栞をたどるかどうかの確認をします。false を 指定すると栞をたどるかどうかの確認はありません。この属性を省略 すると false を指定したとみなされます。
 栞をたどる確認でユーザが「いいえ」を選んだ場合、実行はそのまま 継続します。
 非フリーセーブモードにおいて、栞から読み込みます。メニューから「栞をたどる」を選んだときと同じ動作です。
+
+ +

loadplugin ( プラグインの読み込み )

+
システム操作
+
+ +
属性必須?説明
moduleyesプラグインファイル名読み込みたいプラグインファイル名を指定します。
 このタグで読み込むプラグインは、
・プロジェクトフォルダ直下
・吉里吉里実行可能ファイルのあるフォルダ以下の plugin フォルダ
・吉里吉里実行可能ファイルのあるフォルダ
のいずれかに置いておく必要があります。
 module 属性で指定するプラグインの拡張子は省略できません。
+
+ +

locate ( 文字表示位置の指定 )

+
メッセージ操作
+
+ + +
属性必須?説明
xno横方向位置 (pixel単位) 文字を表示する x 座標位置を指定します。
yno縦方向位置 (pixel単位) 文字を表示する y 座標位置を指定します。
 文字表示位置を指定します。
 position タグで指定した marginl と margint の属性の値が 実際には加算されます。
 横書きの場合は y を、縦書きの場合は x を省略することにより同じ行内での文字表示位置の 変更が可能となります。
+
+ +

locklink ( リンクのロック )

+
メッセージ操作
+
 すべてのメッセージレイヤのリンクをロックします。リンクがロックされると、 メッセージレイヤ上のリンク ( ボタン、エディット、チェックボックスも含む ) はすべて 選択や操作が不能になります。
 時間制限付きの選択肢などで、時間を経過したら選択肢を選択不能に する場合などに使用します。
 リンクのロックは、新しい別のリンクが作成されると自動的に解除されます。
 逆の動作をする unlocklink タグもあります。
+
+ +

locksnapshot ( スナップショットのロック )

+
栞・通過記録操作
+
 スナップショットをロックします。栞でサムネイルを保存する 場合に画面のスナップショットを撮りますが、 スナップショットをロックすると、次に unlocksnapshot タグでロックを解除するまで、 スナップショットをロックした時点での画像をサムネイルとして 保存するようになります。
 これを利用して、右クリックサブルーチンに入ったときに このタグを使用すれば、右クリックサブルーチン内で栞を保存しても、 保存されるサムネイルは右クリックサブルーチンに入ったときのスナップ ショットが使われるようになります ( ロックをしないと右クリックサブルーチンに 入っている最中のスナップショットが保存されてしまう )。
 locksnapshot タグを使ったら、かならず unlocksnapshot タグも 使用しなければなりません ( 右クリックサブルーチンに使ったならば、 右クリックサブルーチンを抜けるときには必ず unlocksnapshot タグを 実行するようにしてください )。
+
+ +

macro ( マクロの記述 )

+
マクロ操作
+
+ +
属性必須?説明
nameyesタグ名 タグ名を指定します。以後、この名前で新しいタグが定義され、 マクロを使用できるようになります。
 マクロ記述を開始します。新しいタグを定義することが出来ます。
 このタグから、endmacro タグまでにある文章やタグは、 name 属性で指定されたタグとして登録され、以後使用できるようになります。
 ただし、マクロ中に iscript タグを使用することはできません。
 マクロ中に書かれたタグには、特別に % を頭につけた属性の値を指定することができます。 % 以降にはマクロに渡された属性名を指定します。すると、マクロに渡された属性の値をその属性の値とすることができます。このとき、| を使って属性の省略値を指定することもできます ( 下の例参照 )。 属性名には小文字を用いてください。
 また、属性の代わりに * を書くと、マクロに渡されたすべての属性をそのタグに渡すこと ができます。
+
例:
+[macro name="newtag"][font color=0xff0000]新しいタグです[resetfont][endmacro]
[newtag]
[macro name="colortag"][font color=%iro]iro 属性付きのタグ[resetfont][endmacro]
[colortag iro=0x332211]
; ↑ colotag に渡された iro 属性の値が font タグの color 属性に渡される
[macro name="transwait"][trans *][wt][endmacro]
; ↑ この transwait に渡されたすべての属性が trans タグに渡される
[macro name="colortag"][font color=%iro|0xff0000]iro 属性付きで省略値をしていしたタグ[resetfont][endmacro]
; ↑ % の属性の値では、 | のあとに続けて、その属性の省略値を指定することができます
+
+
+ +

mapaction ( クリッカブルマップ用領域アクション定義ファイルの指定 )

+
レイヤ操作
+
+ + + +
属性必須?説明
layeryes"base" または 0 以上の整数 対象とするレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
storageyes領域アクション定義ファイル名 領域アクション定義ファイルを指定します。
 指定したレイヤのクリッカブルマップの領域アクション定義に使用するファイルを指定します。
 このタグや image タグで領域アクション定義ファイルを読み込むと 実際にクリッカブルマップが使用可能になります。mapdisable タグ でクリッカブルマップを使用不可能にすることができます。
 詳しくは KAG System リファレンスをご覧ください。
+
+ +

mapdisable ( クリッカブルマップの無効化 )

+
レイヤ操作
+
+ + +
属性必須?説明
layeryes"base" または 0 以上の整数 対象とするレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
 指定したレイヤのクリッカブルマップを無効にします。  以降は image タグや mapaction タグを 使って領域アクション定義ファイルを読み込まなければクリッカブルマップは使用できません。
+
+ +

mapimage ( クリッカブルマップ用領域画像の指定 )

+
レイヤ操作
+
+ + + +
属性必須?説明
layeryes"base" または 0 以上の整数 対象とするレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
storageyes画像ファイル名 クリッカブルマップの領域画像として用いるファイルを指定します。  ファイルは 256 色で保存されている必要があります。
 指定したレイヤのクリッカブルマップの領域画像に使用するファイルを指定します。
 image タグや mapaction タグで 領域アクション定義ファイルを読み込まないとクリッカブルマップは使用できません。
 詳しくは KAG System リファレンスをご覧ください。
+
+ +

mappfont ( レンダリング済みフォントの割り当て )

+
システム操作
+
+ +
属性必須?説明
storageyesファイル名現在のフォントに割り当てたいレンダリング済みフォントファイル を指定します。
 現在操作対象になっているメッセージレイヤの現在のフォントに、指定した レンダリング済みフォントを割り当てます。このタグ以降、吉里吉里でそのフォントを 描画するときは常に指定したレンダリング済みフォントが使用されます。
 割り当てるフォントは実際に存在していなくてもかまいません。たとえば、 "ほげほげフォント" というフォントが選択されている状態で mappfont を使えば、 その "ほげほげフォント" に任意のレンダリング済みフォントを割り当てることが できます。一つのフォント名には一つのレンダリング済みフォントしか割り当てる ことしかできません ( たとえば、一つのフォント名に対して複数のサイズの違う レンダリング済みフォントを割り当てるようなことはできません )。
 また、複数のレンダリング済みフォントをそれぞれ別のフォントに割り当てるこ とができます。
+
+ +

move ( レイヤの自動移動 )

+
レイヤ操作
+
+ + + + + + + +
属性必須?説明
layeryes0 以上の整数 また は message0 または message1 または message 対象となるレイヤを指定します。
 0 以上の整数を指定すると前景レイヤになります。
 message0 または message1 を指定するとメッセージレイヤにな ります。単に message とのみ指定した場合は、 current タグで指定した現在の操作対象のメッセージレイヤが 対象になります。
 背景レイヤは指定しないでください。
pageno"back" または "fore" layer 属性で指定したレイヤが、 表(fore)画面であるか、裏(back)画面であるかを指定します。 省略すると表ページであると見なされます。
 ただし、layer=message とのみ指定した場合でこの属性を省略した場合は 現在操作対象のページのメッセージレイヤが選択されます。
splinenotrue または false(デフォルト) true を指定すると、path 属性で指定した位置をBスプラインで 曲線補間した線上をレイヤが移動するようになります。
 false を指定すると、path 属性で指定した位置を直線補間した線上を レイヤが移動します。
 true を指定した場合は path には最低 2 点を指定してください。
timeyes時間(ms単位) レイヤが path を指定した点から点を移動するのに必要な時間を指定します。
 そのため、移動には、通過する点間の区間の数×この属性の値の時間がかかります。
 ただし、accel 属性に 0 以外を指定した場合は 一点を通過する時間は 変化します ( 移動全体に要する時間は 通過する区間の数×この属性の値です )。
delayno時間(ms単位) レイヤの自動移動が開始されるまでの時間を ms で指定します。
 省略すると 0 であるとみなされます。
pathyes"(x1,y1,opacity1) (x2,y2,opacity2) ..." 移動位置を指定します。
 移動位置は、x(レイヤ左端位置), y(レイヤ上端位置), opacity(レイヤ濃度) を3つ づつ、カンマや空白、( ) で区切って指定します。
 これらの間を、スプライン補間または直線補間にてレイヤが移動します。
 opacity にはレイヤの表示濃度を指定します。レイヤの濃度も点から点を移動する 間に連続的に変化します。レイヤの濃度を連続的ではなく、突発的 ? に変化させたい 場合は濃度に 256 を足した数値を指定してください。
 レイヤを移動させずに表示濃度変化のみを 行う場合は、レイヤ位置にはすべて同じ位置を指定します。
accelno-1 未満の数または 0(デフォルト) または 1 より大きい数 加速度的な動きを行わせるかどうかを指定します。
 0 を指定すると、最初から最後まで一定の割合で移動処理が進行し ます ( 各通過点を等間隔の時間で通過します )。省略すると 0 が指定され たと見なされます。
 -1 未満の数を指定すると、最初は早く、徐々に遅くなります。
 1 より大きい数を指定すると、最初は遅く、徐々に早くなります。
 実数を指定することもできます。
 指定したレイヤに自動移動をさせます。
 レイヤは現在の位置・表示濃度からスタートして、path で指定された位置・表示濃度を元にして 移動したり表示濃度を変化させます。現在の位置や表示濃度から移動がスタートするので、 path 属性の最初の位置/濃度には、一番最初のレイヤの位置や表示濃度を指定する必要はありません。 ( つまり一番最初の位置や表示濃度は layopt タグなどで 指定する必要があります )。
 複数のレイヤに対して move タグを非同期に実行することができます。
 このタグはレイヤの自動移動の終了を待ちません。待つには wm タグを 指定してください。
 前景レイヤに画面よりも大きな画面を読み込み、このタグを使って移動させればスクロールの 効果を得ることができます。斜めスクロールも可能です。
 自動移動中は、メッセージレイヤへの文字描画ができなかったり、文字描画が遅くなったり します。
 マウスのクリック等で自動移動は中断されます。中断されない ようにするには clickskip タグでクリック スキップを禁止してください。
+
例:
+[image storage=s1 layer=0 page=fore visible=true left=0 top=480 opacity=0]
[image storage=s2 layer=1 page=fore visible=true left=320 top=240 opacity=0]
[move time=4000 path="(0,240,255) (0,0,255) (0,-240,255) (0,-480,0)" layer=0]
[move time=4000 path="(320,240,0) (320,240,511) (320,240,0) (320, 240,0)" layer=1]
[wm][wm] +
+
+ +

nextskip ( 「次の選択肢まですすむ」の設定 )

+
システム操作
+
+ +
属性必須?説明
enabledyestrue または false 「次の選択肢まで進む」の機能を有効にする場合は true、無 効にする場合は false を指定します。
 ユーザーが「次の選択肢まで進む」の機能を使用できるようにするか否かを 指定できます。
 デモシーンなどでは無効にしていたほうがいい場合があります。
+
+ +

nowait ( 文字表示ノーウェイト )

+
メッセージ操作
+
 文字の表示速度をノーウェイトに設定します。
 このタグは、ノーウェイトに設定する前に、直前の文字表示速度を記憶します。 この記憶した文字表示速度に戻すには endnowait タグ を使うことができます。
 このタグと endnowait タグの間には、保存可能なラベルを記述しないでください。
+
+ +

openvideo ( ビデオ/SWFの再生準備 )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
storageyesファイル名 再生準備するファイル名を指定します。
 ビデオまたはSWF(Shockwave Flash)の再生の準備をします。
 一般的にビデオの再生準備には時間がかかるので、再生のタイミングを ほかのものと同期させたい場合など、このタグを使って再生準備のみを 先に行わせることができます。
 再生準備をしたビデオやSWFを再生するには playvideo タ グを使用します。
 このタグを使用しなくても playvideo タグで再生するファイル名を指定して 再生をさせることはできます。
+
+ +

p ( 改ページクリック待ち )

+
メッセージ操作
+
 改ページのクリック待ちを行います。
 行末に [p] と書いた場合は、そのあとに \ があってもなくても改行 はしません( Config.tjs で global.ignoreCR を false に設定した場合 )。
 current タグで裏ページのメッセージレイヤを 指定している場合はこの記号は表示されません。表示したい場合は 表ページのメッセージレイヤを指定してください。
+
+ +

pausebgm ( BGM 演奏の一時停止 )

+
効果音・BGM・ビデオ操作
+
 BGM 演奏を一時停止します。Config.tjs で BGM 再生メディアに "Wave" を指定 した場合のみに有効です。
 BGM の一時停止状態は栞に保存されますが、一時停止していた場合の BGM の 再生位置の情報は保存されないので注意してください。
 一時停止した BGM を再開するには resumebgm タグ を使用してください。
+
+ +

pausevideo ( ビデオの一時停止 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
 ビデオの再生を一時停止します。
+
+ +

pimage ( 画像の部分追加読み込み )

+
レイヤ操作
+
+ + + + + + + + + + + + +
属性必須?説明
storageyes画像ファイル名 追加して読み込む画像を指定します。
layeryes"base" または 0 以上の整数 画像を追加して読み込むレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤに画像を読み込みます。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
keyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt" storage で指定した画像の、どの色を抜き色とするかを指定します。 省略すると抜き色は無効になります。  key=0xRRGGBB という形式で 16 進数で抜き色を指定する と、RR(赤) GG(緑) BB(青)で塗られた部分を抜き色として透明にします。 たとえば、key=0xff00ff では (r,g,b)=(255,0,255) つまり真マゼンダの部 分を抜き色として透明にするという指定になります。
 ただ単に数値を指定すれば、そのパレットインデックスの数値が抜き 色となります。16色/256色の画像に対して有効です。
 key=adapt と指定すれば、自動的に抜き色が決定されます。 使用される抜き色は、画像の一番上のラインにて、一番多く使われている色です。 16色/256色の画像に対して有効です。
 マスク画像を使用する場合は、この属性は指定する必要は ありません。
dxyesピクセル単位重ね合わせ、あるいはコピーする先の左端 x 座標を (対象のレイヤ内の座標で)指定します。
dyyesピクセル単位重ね合わせ、あるいはコピーする先の上端 y 座標を (対象のレイヤ内の座標で)指定します。
sxnoピクセル単位重ね合わせ、あるいはコピーする元の左端 x 座標を (追加して読み込む画像内の座標で)指定します。
 省略すると 0 であると見なされます。
synoピクセル単位重ね合わせ、あるいはコピーする元の上端 y 座標を (追加して読み込む画像内の座標で)指定します。
 省略すると 0 であると見なされます。
swnoピクセル単位 重ね合わせ、あるいはコピーする幅を 指定します。
 省略すると、追加して読み込む画像の幅すべてであると見なされます。
shnoピクセル単位 重ね合わせ、あるいはコピーする高さを 指定します。
 省略すると、追加して読み込む画像の高さすべてであると見なされます。
modeno"copy"または "opaque" または "pile" (デフォルト) または "alpha" または "add" または "sub" または "mul" または "dodge" または "darken" または "lighten" または "screen" または "psadd" または "pssub" または "psmul" または "psscreen" または "psoverlay" または "pshlight" または "psslight" または "psdodge" または "psdodge5" または "psburn" または "pslighten" または "psdarken" または "psdiff" または "psdiff5" または "psexcl" sx sy sw sh の各属性で指定した矩形領域を 重ね合わせるか、あるいは 単純にコピーするか、あるいは演算を行うかを指定します。
 "copy" または "opaque" を指定すると矩形領域は コピーされます。"copy" でも "opaque" でも同じ意味です。
 "pile" または "alpha" を指定すると、アルファ合成による重ね合わせが行われます。"pile" でも "alpha" でも同じ意味です。
 "addalpha" を指定すると、加算アルファ合成による重ね合わせが行われます。
 そのほかのモードについては image タグの mode 属性を参照してください。
 省略すると "pile" が指定されたと見なされます。例外的に TLG5/6 画像は画像中にどの重ね合わせモードで重ね合わされるかの情報を持っています (この情報は image タグで読み込まれる物と同一です)。この場合は、この属性が省略された場合は、その画像が情報として持っている重ね合わせモードに従います。
opacityno不透明度 ( 0 (全くの透明) 〜 255 (全くの不透明 ) ) mode 属性で "pile" を指定した場合の重ね合わせの不透明度、あるいは "add" "sub" "mul" "dodge" "darken" "lighten" "screen" の いずれかを指定した場合の演算の強度を指定します。
 省略すると 255 であると見なされます。
 指定したレイヤに画像を追加して読み込みます。
 指定したレイヤの指定した部分に、別の画像ファイルの一部分を重ね合わせたり、コピーしたりすることができます。
 いくらでも画像を追加して読み込むことができます。ただし、いくらでも、といっても、画像を追加して 読み込むとその「画像を追加して読み込んだ」という情報がどんどんと蓄積されていってしまうので注意してください。
 新しく image タグでレイヤに画像を読み込んだり、freeimage タグで 画像を解放すると、追加して読み込んだ画像やその情報は消えます。
 たとえば、一定時間間隔でレイヤに画像を追加して読み込んでアニメーション、という用途にはこのタグではなくて アニメーションの機能を使ったほうが良いでしょう。
 このタグは、image タグで画像を読み込んだが、その画像の一部分だけを変えたい、というときに、該当する image タグの 直後に記述する、という用途に使います。
+
+ +

playbgm ( BGM の演奏 )

+
効果音・BGM・ビデオ操作
+
+ + + +
属性必須?説明
storageyesBGM ファイル名 演奏する BGM ファイル名を指定します。
startnoBGM 開始位置指定 ループチューナで指定したラベルで BGM の再生開始位置を指定します。
loopnotrue(デフォルト) または false BGM をループするかを指定します。
 true を指定するとループします。false を指定すると ループしません。
 省略すると true であると見なされます。
 BGM を演奏します。
+
+ +

playse ( 効果音の再生 )

+
効果音・BGM・ビデオ操作
+
+ + + + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 効果音を再生するバッファを指定します。一つのバッファでは 同時には一つの効果音を鳴らすことができます。
 省略すると 0 であると見なされます。
storageyes効果音ファイル名 演奏する効果音ファイル名を指定します。
 拡張子は省略可能ですが、省略した場合に自動的に探し出されるのは .wav または .ogg または .mp3 の拡張子を持つファイルだけです。 ( ただし ogg と mp3 の 再生には SDK 付属のプラグインが必要 )
そのほかのプラグインで使用可能になるそのほかの ファイル形式を指定する場合は拡張子も指定してください。
startnoSE 開始位置指定 ループチューナで指定したラベルで SE の再生開始位置を指定します。
loopnotrue または false(デフォルト) 効果音を繰り返し再生するかどうかを指定します。
 true を指定すると繰り返し再生されます。false を 指定すると一回限りの再生となります。省略すると false であると見なされます。
 true を指定した場合は ws タグ で効果音再生の終了を待つことはできません。
 効果音を再生します。
 このタグは効果音の再生の終了を待ちません。終了を待つに は ws タグを使ってください。
+
+ +

playvideo ( ビデオ/SWFの再生 )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
storagenoファイル名 再生するファイル名を指定します。
 すでに openvideo タグで 再生の準備をしていた場合はこの属性を指定する必要はありません。
 逆に、openvideo タグを使用しない場合はここでファイル名を 指定する必要があります。
 ビデオまたはSWF(Shockwave Flash)を再生します。video タグで指定した表示領域にて再 生します。ビデオ表示領域はデフォルトでは非表示なので、video タグで表示状態にしないと 表示されません。
 このタグはビデオの再生の終了を待ちません。待つには wv を使用してください。
+
+ +

position ( メッセージレイヤの属性 )

+
メッセージ操作
+
+ + + + + + + + + + + + + + + + + +
属性必須?説明
layernomessage0 または message1 または message 対象とするメッセージレイヤを指定します。
 省略すると current タグで指定された 現在のメッセージレイヤが選択されます。
 この属性も page 属性も省略された場合は、current タグで指定された 現在のページ・現在のメッセージレイヤが選択されます。
pageno"fore" または "back" 対象とするページを指定します。
 この属性を省略すると current タグで指定された 現在のページが選択されます。
leftno左端位置 ( pixel 単位 ) メッセージレイヤの左端位置を指定します。
topno上端位置 ( pixel 単位 ) メッセージレイヤの上端位置を指定します。
widthno幅 ( pixel 単位 ) メッセージレイヤの幅を指定します。
heightno高さ ( pixel 単位 ) メッセージレイヤの高さを指定します。
framenoフレーム画像のファイル名 メッセージレイヤのフレーム画像として表示させる画像を指定 します。使用しない場合は "" を指定してください。"" を指定す ると、メッセージレイヤが color および opacity 属性で指定した 色、濃度で矩形で表示されます。  ここで指定したファイル名 (拡張子を除く) 部分に _m を追加 したファイルが、もしあれば、マスク画像として読み込まれます。 マスク画像は必ず 256 色グレースケールで保存してください。
framekeyno0xRRGGBB 形式 または パレットインデックス番号 または "adapt" frame 属性で指定したフレーム画像の、どの色を抜き色と するかを指定します。省略すると抜き色は無効になります。  key=0xRRGGBB という形式で 16 進数で抜き色を指定する と、RR(赤) GG(緑) BB(青)で塗られた部分を抜き色として透明にします。 たとえば、key=0xff00ff では (r,g,b)=(255,0,255) つまり真マゼンダの部 分を抜き色として透明にするという指定になります。
 ただ単に数値を指定すれば、そのパレットインデックスの数値が抜き 色となります。16色/256色の画像に対して有効です。
 key=adapt と指定すれば、自動的に抜き色が決定されます。 使用される抜き色は、画像の一番上のラインにて、一番多く使われている色です。 16色/256色の画像に対して有効です。
 マスク画像を使用する場合は、この属性を指定する必要はありません。
colorno0xRRGGBB 形式 メッセージレイヤの表示色を 0xRRGGBB 形式で指定 します。 frame に "" を指定したときに有効です。
opacityno不透明度 ( 0 〜 255 ) メッセージレイヤの不透明度を 0 〜 255 の数値で指定しま す(文字の不透明度や、レイヤ自体の不透明度ではありません)。0 で完全 に透明です。frame に "" を指定したときに有効です。
marginlno左余白 ( pixel 単位 )メッセージレイヤの左余白を指定します。
margintno上余白 ( pixel 単位 )メッセージレイヤの上余白を指定します。
marginrno右余白 ( pixel 単位 )メッセージレイヤの右余白を指定します。
marginbno下余白 ( pixel 単位 )メッセージレイヤの下余白を指定します。
verticalno"true" または "false" メッセージレイヤを縦書きにモードにするには "true" を指定します。 横書きにするには "false" を指定してください。
draggableno"true" または "false" true に設定すると、marginl, margint, marginr, marginb で指定した マージンの部分でかつ、フレーム画像の不透明度が 64 以上の箇所を、マウスで ドラッグすることによりメッセージレイヤをユーザが移動できるようになります。
 false を指定するとこの動作は行われません。
visibleno"true" または "false" true に設定すると、メッセージレイヤが可視(表示状態)になります。
 false に設定すると、メッセージレイヤは不可視(非表示状態)になります。
 メッセージレイヤに対する様々な属性を指定します。
 いずれの属性も、省略すれば設定は変更されません。
 marginl, margint, marginr, marginb のそれぞれの属性は、frame で指定した フレーム画像での表示領域を指定するのにも使います。  メッセージレイヤに対して個別に設定できます ( 裏ページ・面画面を別の 設定にすることもできます )。
+
+ +

preparevideo ( ビデオの再生準備 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
ビデオの再生準備を行います。
レイヤー描画モード時に未描画画像が表示されてしまうのを防ぐためにこの機能を使用してください。
このタグの直後にかならず[wp]タグを置いて準備完了を待ってください。
このタグはレイヤー描画モード時のみ有効です。
+
+ +

ptext ( レイヤへの文字描画 )

+
レイヤ操作
+
+ + + + + + + + + + + + + + + + +
属性必須?説明
layeryes"base" または 0 以上の整数 文字を描画するレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤに文字を描画します。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
xyespixel単位 文字を描画する横位置を pixel 単位で指定します。
yyespixel単位 文字を描画する縦位置を pixel 単位で指定します。
textyes文字列 描画する文字列を指定します。
verticalnofalse(デフォルト) または true 縦書きかどうかを指定します。true を指定すると縦書きになります。
angleno角度の10倍 文字描画の角度を指定します。角度の 10 倍の値 ( 0 〜 3600 ) で指定します。
 省略すると、横書きの場合は 0、縦書きの場合は 2700 が指定されたと見なされます。
sizeno文字サイズ(pixel単位) 文字サイズを pixel 単位で指定します。
 この属性を省略すると 12 が選択されます。
facenoフォント名 フォント名を指定します。
 フォント名には曖昧な指定はできません。スペース、半角/全角も正確に指定してください。
 複数のフォント名をカンマで区切って指定できます。この場合は、最初の方に書いた フォントが存在すれば、それが優先されて選択されます。
 例 : face="HG行書体,MS Pゴシック"
 縦書き用フォントは自動的に設定されますので、フォント名の先頭に @ マークをつける 必要はありません。
 この属性を省略すると MS Pゴシックが選択されます。
colorno0xRRGGBB 形式 文字色を 0xRRGGBB 形式で指定します。
 省略すると 0x000000 であると見なされます。
italicnotrue または false(デフォルト) 文字を斜体にするかどうかを指定します。true を指定すると斜体になりま す。
 この属性を省略すると false であると見なされます。
shadownotrue(デフォルト) または false 文字に影をつけるかを指定します。true を指定すると影がつきます。
 edge と shadow 両方に true を指定することはできません。
edgenotrue または false(デフォルト) 文字を袋文字 ( 縁取り文字 ) にするかを指定します。true を指定すると袋文字になります。
edgecolorno0xRRGGBB 形式 文字の袋の色を 0xRRGGBB 形式で指定します。
 省略すると 0x000000 が指定されたと見なされます。
shadowcolorno0xRRGGBB 形式 影の色を 0xRRGGBB 形式で指定します。
 省略すると 0x000000 が指定されたと見なされます。
boldnotrue または false(デフォルト) 文字を太文字にするかを指定します。 true を指定すると太文字になります。
 指定したレイヤに文字を描画します。
 メッセージレイヤに表示するのと異なり、このタグで描画した内容は栞に記録されます (栞を読み込んでも再現されます)。
 文字はレイヤに画像を読み込むと消去されます。
 なにかの数値ステータスなどを画面上に表示し続けたい場合に便利です。
+
+ +

quake ( 画面を揺らす )

+
システム操作
+
+ + + + +
属性必須?説明
timeyes文字数または ms(ミリ秒) ここで指定した文字数を表示するのと同じだけの時間、画面を揺らします。
 timemode 属性で ms を指定した場合はミリ秒単位で、delay を指定した場合は delay タグで指定した文字表速度×このタグの time 属性で 指定した時間分揺れが続きます。
timemodeno"ms" または "delay" time 属性の単位を指定します。
 ここの設定のデフォルトは Config.tjs の defaultQuakeTimeInChUnit に  従います。
hmaxnopixel 単位 揺れの横方向への最大振幅を指定します。省略すると 10 が指定されたと見なされます。
vmaxnopixel 単位 揺れの縦方向への最大振幅を指定します。省略すると 10 が指定されたと見なされます。
 画面を揺らします。
 このタグは揺れの終了を待ちません。揺れの終了を待つに は wq タグを使用してください。
 vmax 属性を 0 に設定すると横揺れになります。hmax 属性を 0 に設定すると縦揺れになります。
+
+ +

r ( 改行する )

+
メッセージ操作
+
+ +
属性必須?説明
eolnotrueConfig.tjs の ignoreCR が false の場合、KAG は改行の際に r タグを生成しますが、この「改行の際に生成される r タグ」の場合は この属性があり、値が true になっています。シナリオ中に書かれた [r] タグの場合はこの属性はありません。
この属性はTJSスクリプト内部で改行と[r]タグを区別したい場合に 使用されますので、KAGシナリオ上でこの属性を指定する意味はありません。
 改行します。
+
+ +

rclick ( 右クリックの設定 )

+
システム操作
+
+ + + + + + +
属性必須?説明
callnotrue または false true を設定すると、右クリックで storage と target 属性で指定した サブルーチンを呼び出すようになります。jump 属性とこの属性の両方に false を 指定すると、通常の 「メッセージを消す」の動作になります。
 この属性と jump 属性を同時に true にする事はできません。
jumpnotrue または false true を設定すると、右クリックで storage と target 属性で指定した 場所にジャンプするようになります。call 属性とこの属性の両方に false を 指定すると、通常の「メッセージを消す」の動作になります。
 この属性と call 属性を同時に true にする事はできません。
targetnoラベル call 属性か jump 属性に true を設定した場合、その呼び出し先/ジャンプ先のラベルを指定します。
 この属性を target="" とした場合、storage 属性で指定したファイルの先頭から 実行が始まります。
storagenoファイル call 属性か jump 属性に true を設定した場合、その呼び出し先/ジャンプ先のファイルを指定します。
 この属性を storage="" とした場合、右クリックがされた時点でのファイル内の ラベルが検索されます。
enablednotrue または false true を設定すると、右クリックによりメッセージレイヤが隠されたり、 指定のルーチンが呼び出されたり、指定場所にジャンプしたりします。
 false を指定すると、これらの動作は行われません。
namenoメニュー項目名または "default" システムメニュー内の「メッセージを消す」のメニュー項目名を指定します。
 name=default とすると、デフォルトの「メッセージを消す」になります。
 メニューホットキー ( メニュー項目内で下線のついた文字 ) を 指定するには、& に続けて文字を指定してください ( たとえば「メッセージを 消す(&S)」 )。
 右クリックや、キーボードから ESC キーを押した時の動作を設定します。
 いずれの属性も、省略すれば設定は変更されません。
 これらの機能は、[l] [p] タグでのクリック待ち、[s] タグでの停止時にのみ 発動することができます。
+
例:
+@rclick call=true target="*rclick" name="右クリック用サブルーチンを呼ぶ(&S)" enabled=true

*rclick
@rclick jump=true target="*exit" name="戻る(&S)" enabled=true
@current layer=message1
@layopt layer=message1 page=fore visible=true
@er
ここは右クリックルーチン内です。
@s
*exit
@layopt layer=message1 page=fore visible=false
@current layer=message0
@rclick call=true target="*rclick" name="右クリック用サブルーチンを呼ぶ(&S)" enabled=true
@return
+
+
+ +

record ( 通過記録を行う )

+
栞・通過記録操作
+
 現在の位置で通過記録を行います。
 通過記録には、直前にある「栞を保存可能なラベル」の位置が記録され、戻るときは そこに戻りますが、それが実際に通過記録として記録されるタイミングは、このタグを記述し た次の「栞を保存可能なラベル」を通過したときです。
+
+ +

resetfont ( 文字属性をデフォルトに戻す )

+
メッセージ操作
+
 font タグで指定した文字の属性をデフォルトに戻します。
 文字属性は、メッセージレイヤごとに個別に設定できます。
+
+ +

resetstyle ( スタイルをデフォルトに戻す )

+
メッセージ操作
+
 style タグで指定した行のスタイルをすべてデフォルトの設定に 戻します。
+
+ +

resetwait ( ウェイトの初期化 )

+
システム操作
+
 wait タグの mode=until で使用する時間原点を設定します。
 このタグと wait タグの間には栞を保存可能なラベルを書かないでください ( 途中で栞を 保存してもこの情報までは保存されないので )。
+
例:
+[resetwait]
[wait mode=until time=3000]
; ↑ resetwait を通過した時間から 3 秒経過するまで待つ +
+
+ +

resumebgm ( BGM 演奏の再開 )

+
効果音・BGM・ビデオ操作
+
 pausebgm タグ で一時停止した BGM を再開します。
+
+ +

resumevideo ( ビデオ再生の再開 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
ビデオの再生を再開します。
pausevideoでの一時停止後は、resumevideoを使用して、再生を再開します。
+
+ +

return ( サブルーチンから戻る )

+
ラベル・ジャンプ操作
+
+ + + +
属性必須?説明
storagenoシナリオファイル名 戻り先のシナリオファイルを指定します。storage 属性を省略して、 target 属性だけが書かれていると、現在のシナリオファイル内であると見なされます。
targetnoラベル名 戻り先のラベルを指定します。
 target 属性を省略して、storage 属性だけがかかれていると、 ファイルの先頭から実行されます。
countpagenotrue(デフォルト) または false 呼び出し元に戻るときに、この return タグのある 場所のラベルを「読んだ」とみなすかどうかを指定します。
 戻る際にそのページが「読んだ」ことになっては 困る場合に false を指定します。
 サブルーチンから呼び出し元に戻ります。
 storage と target を両方とも省略すると、呼び出し元の call タグの直後に 戻ります。storage や target を指定すれば、任意の場所に戻ることができます。
 call タグで呼び出されたサブルーチンは、 このタグで呼び出し元に戻すか、任意の場所にもどす必要があります。
+
+ +

rewindvideo ( ビデオの巻き戻し )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
 ビデオを先頭まで巻き戻します。
+
+ +

ruby ( ルビ指定 )

+
メッセージ操作
+
+ +
属性必須?説明
textyesルビとして表示される文字ルビとして表示させる文字を指定します。
 次の一文字に対するルビを指定します。
 ルビを表示させたい場合は毎回指定してください。
 複数の文字にルビを振る場合は、一文字毎にルビを指定する必要があります。
+
例:
+ [ruby text="かん"]漢[ruby text="じ"]字 +
+
+ +

s ( 停止する )

+
システム操作
+
 シナリオファイルの実行を停止します。
 link タグで選択肢待ちをするときに、このタグを書きます。
+
+ +

save ( 栞の保存 )

+
栞・通過記録操作
+
+ + +
属性必須?説明
placeno0または正の整数(0がデフォルト) 栞の番号を指定します。省略すると 0 が指定されたと見なされます。
 どのような数値を指定してもかまいませんが、999 〜 1999 は特別な意味を持つ 栞です。
asknotrue または false(デフォルト) true を指定すると、栞を保存するかどうかの確認をします。false を 指定すると栞を保存するかどうかの確認はありません。この属性を省略 すると false を指定したとみなされます。
 非フリーセーブモードにおいて、指定された栞に保存します。メニューから「栞をはさむ」を選択された場合と 同じ動作をします。
+
+ +

seopt ( 効果音の設定 )

+
効果音・BGM・ビデオ操作
+
+ + + + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 設定を変更するバッファを指定します。
 省略すると 0 であると見なされます。
volumeno音量% (0〜100) 効果音の音量を % で指定します。初期状態の KAG では 100 % です。省略すれば音量は変更されません。
 100 が上限です。音量の抑制のみをサポートします(増幅は 音源の特性上、できません)。
gvolumeno音量% (0〜100) 効果音の大域音量を % で指定します。初期状態の KAG では 100 % です。省略すれば音量は変更されません。
 大域音量は volume 属性で指定する通常の音量とは別に、 バッファの音量を制御することができるもう一つのものです。実際に再生 される音量は、通常の音量と大域音量を掛け合わせた音量になります ( たとえば volume=50 で gvolume=75 ならば 50(%)*75(%)=37.5(%) )
 大域音量は効果音バッファごとにシステム変数に記録され、次回起動時 にも引き継がれます ( 各栞に保存されるわけではありません )。
pannoパン (-100〜0〜100) パン (左右の音像位置) を指定します。
 -100 が完全な左、0 が中央、100 が完全な右です。
 効果音の個々のバッファに対する設定を変更します。
+
+ +

setbgmlabel ( BGM のラベル通過処理の登録 )

+
効果音・BGM・ビデオ操作
+
+ + + + +
属性必須?説明
nameyesラベル名 BGM 中のループチューナで指定したラベル名を指定します。
storagenoシナリオファイル名 ラベル通過時の遷移先シナリオファイル名を指定します。
targetnoラベル名 ラベル通過時の遷移先ラベル名を指定します。
expnoTJS 式 ラベル通過時に実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
 BGM のラベルを通過した際に行う処理を登録します。複数登録可能です。BGM が変更された場合はこの指定は自動的に消去されます。
+
+ +

setbgmstop ( BGM の停止処理の登録 )

+
効果音・BGM・ビデオ操作
+
+ + + +
属性必須?説明
storagenoシナリオファイル名 BGM停止時の遷移先シナリオファイル名を指定します。
targetnoラベル名 BGM停止時の遷移先ラベル名を指定します。
expnoTJS 式 BGM停止時に実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
 BGM が停止した際に行う処理を登録します。BGM が変更された場合はこの指定は自動的に消去されます。
+
+ +

showhistory ( メッセージ履歴の表示 )

+
メッセージ履歴操作
+
 メッセージ履歴を表示します。
 メッセージ履歴の表示を終了すると、実行は継続します。
+
+ +

startanchor ( 「最初に戻る」の有効・無効 )

+
栞・通過記録操作
+
+ +
属性必須?説明
enabledno"true"(デフォルト) または "false" "true" を指定するかこの属性を省略すると、このタグのある すぐ前のセーブ可能なラベルが「最初に戻る」の戻り先であると され、「最初に戻る」の機能が有効になります。
 "false" を指定すると「最初に戻る」の機能が無効になります。
 Config.tjs 内で goToStartMenuItem.visible =true; と設定すると、システム|最初に戻る メニューが表示されますが、それが選択された場合に戻る場所をこのタグで指定します。
 戻る場所を指定する場合は enabled 属性を省略するか true を指定しますが、このタグはセーブ可能なラベルの直後に書いてください。このラベルを通過しない間は、システム|最初に戻るのメニューは使用不可能になります。
 enabled 属性に false を指定すると「最初に戻る」の機能は無効になります。
 「最初に戻る」の動作は、このタグの書かれた場所のラベルの栞を読み出す動作に 似ていますが、ゲーム変数の内容は保持されたままとなります。
+
+ +

stopbgm ( BGM 演奏の停止 )

+
効果音・BGM・ビデオ操作
+
 BGM 演奏を停止します。
+
+ +

stopmove ( レイヤの自動移動の停止 )

+
レイヤ操作
+
 move タグで開始した自動移動を 強制的に中止します。すべてのレイヤの自動移動が停止します。
 画像は最終位置に移動し、最終の表示濃度になります。
+
+ +

stopquake ( 画面揺らしの停止 )

+
システム操作
+
 quakeタグで開始した揺れを終了させます。
 quake タグの time 属性で指定した回数を待たずに揺れを終了させることができます。
+
+ +

stopse ( 効果音再生の停止 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 効果音を停止するバッファを指定します。
 省略すると 0 であると見なされます。
 効果音再生を停止します。
+
+ +

stoptrans ( レイヤのトランジションの停止 )

+
レイヤ操作
+
 trans タグで開始したトランジションを 強制的に中止します。すべてのレイヤのトランジションが停止します。
 画像は完全に切り替わった状態になります。
+
+ +

stopvideo ( ビデオ/SWF再生の停止 )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
 ビデオ/SWFの再生を停止します。
+
+ +

store ( 栞機能の設定 )

+
栞・通過記録操作
+
+ +
属性必須?説明
enabledyestrue または false 栞機能を有効にする場合は true 、無効にする場合は false を指定 します。false を指定すると栞によるセーブ・ロードができなく なります。
 栞機能を有効にするか、無効にするかを指定します。ユーザーにセーブ・ロード の動作を行わせたくない場合に [store enabled=false] とします。
 disablestore の機能と違うのは、store タグは 栞をはさむ・たどるの両方の機能を恒久的に設定するのに対し、 disablestore タグはセーブ可能なラベルを通過するまでの間の一時的な 間だけ「栞をはさむ」または「たどる」の 機能を無効にするだけです。使い勝手は disablestore の方が良いでしょう。
+
+ +

style ( スタイルの設定 )

+
メッセージ操作
+
+ + + + + +
属性必須?説明
alignno"left"/"top" または "center" または "right"/"bottom" または "default" 行の文字揃えを指定します。
 横書きの場合、"left" を指定すると左揃え(デフォルト)、"center" を指定すると センタリング、"right" を指定すると右揃えになります。"default" を指定すると 左揃えになります。
 縦書きの場合、"top" を指定すると上詰め(デフォルト)、"center" を指定すると センタリング、"bottom" を指定すると下詰めになります。"default" を指定すると 上詰めになります。
linespacingno行間 (pixel単位) 行間を pixel 単位で指定します。一行全体の幅は、この属性で指 定した値と linesize 属性で 指定した値を足した値になります。
pitchno字間オフセット(pixel単位) 字間のオフセットを pixel 単位で指定します。  0 を指定すると、その文字のデフォルトの字間で表示されます。負の数、たと えば -1 を指定すると、その文字のデフォルトの字間 -1 のピクセル数分、文字 が詰めて表示されます。正の数を表示すると字間をあけることが出来ます。
linesizeno予約サイズ(pixel単位) または "default" 行の幅を指定します。
 "default" を指定すると行の幅は自動的に決定されますが、途中で文字が大きく なると、その大きい文字に合わせて文字の再配置が行われます。
 再配置を防ぐには、あらかじめこの属性で、文字の最大の大きさを指定してください。
autoreturnno"true" または "false" または "default" 自動改行・自動改ページを行わせるかどうかを指定します。
 "true" または "default" を指定すると自動改行・改ページを行います。
 "false" を指定すると自動改行・改ページは行われませんので、表示する 文字が長すぎてもメッセージレイヤをはみ出して描画されます。
 行のスタイルを指定します。
 KAG ドキュメントの「文字表示の詳細」も参照してください。  これらの属性は、resetstyle タグや ct タグが 実行されると、デフォルトの値に戻ります。
 行のスタイルはメッセージレイヤごとに個別に設定できます。
+
+ +

tempload ( 栞のメモリ上からの読み込み )

+
栞・通過記録操作
+
+ + + + +
属性必須?説明
placeno0または正の整数(0がデフォルト) 栞の番号を指定します。省略すると 0 が指定されたと見なされます。
senotrue (デフォルト) または false 読み込むときに、効果音の情報も読み込むかを指定します。
 false を指定すると効果音の情報は読み込みません ( 現在の効果音が そのまま鳴り続けます )。
bgmnotrue (デフォルト) または false 読み込むときに、BGM の情報も読み込むかを指定します。
 false を指定すると BGM の情報は読み込みません ( 現在の BGM が そのまま演奏され続けます )。
backlaynotrue または false (デフォルト) 読み込むときに、前景レイヤの情報は読み込まずに、かつ 背景レイヤには前景レイヤの情報を読み込むかどうかを指定します。
 true を指定すると、メモリ上の「栞」では表ページとして記録されている 情報が、実際には裏ページに読み込まれ、表ページはそのままになります。
 tempsave タグで保存したメモリ上の「栞」を 読み出します。
 ただ、通常の栞の読み出しと違うのは、保存した位置に実行が移動しないで、 そのまま実行が続行するところと、変数の内容は変化しないことです。
 メッセージレイヤも消去されません。また、se、bgm、backlay 属性に より、ロード時の挙動を制御することができます。
 主な用途は、たとえばデモシーンなどに入るまえにいったん tempsave タグ で状態を保存し、デモシーンが終わったところでこのタグで復帰するという ように、いちいちすべての設定を元に戻すのが面倒なときに、一気に設定を元に 戻す用途で使います。
 rclick で指定した右クリック時のサブルーチンで一時的に情報を保存するのにも 使うことができます。
+
+ +

tempsave ( 栞のメモリ上への保存 )

+
栞・通過記録操作
+
+ +
属性必須?説明
placeno0または正の整数(0がデフォルト) 栞の番号を指定します。省略すると 0 が指定されたと見なされます。
 指定できる数値や保存箇所の個数に制限はありませんが、 あまり大きな整数は指定しないでください。
 メモリ上の「栞」に現在の位置での情報を挟みます。ここで保存されるのは ファイルではなくメモリ上の栞ですので、KAG が終了しても内容は保持されませんし、 通常の「栞」とはなんの関係も持ちません。
 また、最後に通過したラベル位置での状態が保存されるのではなくて、このタグのある位置での情報が 記録されます。また、変数の内容は記録されません。
 tempload タグと組み合わせて使います。
+
+ +

timeout ( タイムアウト待ちジャンプ )

+
ラベル・ジャンプ操作
+
+ + + + + + +
属性必須?説明
timeyesタイムアウト時間 タイムアウトまでの時間を ms で指定します。
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
expnoTJS 式 タイムアウト時に実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
seno効果音ファイル名 タイムアウト時に再生する効果音を指定します。指定しなければ 効果音は再生されません。
sebufno効果音バッファ番号 clickse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
 現在のメッセージレイヤに対してタイムアウトを登録します。 タイムアウト待ちは s タグが実行された時点からになります。  このタグを使う場合は、なるべく s タグですぐに選択肢待ちにしてください。
+
+ +

title ( タイトル指定 )

+
システム操作
+
+ +
属性必須?説明
nameyesタイトル 表示したいタイトルを指定してください。
 タスクバー、およびウィンドウキャプション ( タイトルバー ) に表示する文字を指 定します。
 通常はゲーム等のタイトルです。
+
+ +

trace ( コンソールへ値の出力 )

+
変数・TJS 操作
+
+ +
属性必須?説明
expyesTJS 式 評価する TJS 式を指定します。
 exp で示された式を評価し、結果をコンソールに出力します。
 コンソールは Shift+F4 で表示されるほか、Config.tjs 内で logMode を設定することに より、ファイルに記録することもできます。
+
例:
+[trace exp="f.test"]
; ↑ ゲーム変数 test の内容を コンソール に出力する
; コンソールには以下のように表示される ( 例 )
; 6:45:34 ▼[trace] expression="f.test" type of result=Number result=500
+
+
+ +

trans ( レイヤのトランジション )

+
レイヤ操作
+
+ + + + + + + + +
属性必須?説明
layerno"base"(デフォルト) または 0 以上の整数 または は message0 または message1 または message 対象となるレイヤを指定します。
 base を指定すると 背景レイヤ になります。
 0 以上の整数を指定すると前景レイヤになります。
 message0 または message1 を指定するとメッセージレイヤにな ります。単に message とのみ指定した場合は、 current タグで指定した現在の操作対象のメッセージレイヤが 対象になります ( 裏ページ・表ページのどちらのメッセージレイヤが操 作対象であっても裏ページ→表ページへのトランジションが行われます )。
 通常は base に対してトランジションを行わせます。
 base 以外に対してトランジションを行わせる場合はかなりの 制限があります。
childrennotrue(デフォルト) または false トランジションの対象に子レイヤも含めるかどうかを 指定します。true を指定すると子レイヤも含めます。 false を指定すると子レイヤは含まれません。
 layer=base と指定したときのみ使用できます。
 子レイヤには、前景レイヤとメッセージレイヤが含まれます。
timeyes時間(ms単位) トランジションを行っている時間を数値で指定します。
methodno"universal" (デフォルト) または "scroll" またはその他 トランジションのタイプを指定します。
"universal" を指定すると、 rule, vague, time 属 性に従ってユニバーサルトランジションが行われます。
"crossfade" を指定すると、time 属性に従って、単純な クロスフェードが行われます。
"scroll" を指定すると、from, stay を元にしてス クロールトランジションが行われます。
 プラグインによって使用可能になるトランジションの タイプもあります。その場合は method 属性にはその トランジションの名前を指定し、また、トランジションによっては 別の属性を指定しなければならない場合があります。
rulemethod=universal のときのみルール画像名 ユニバーサルトランジションに用いるルール画像を指定します。
vaguemethod=universal のときのみあいまい領域値 (0〜) ユニバーサルトランジションに適用する あいまい 領域値を指定します。
frommethod=scroll のときのみ"left" または "top" または "right" または "bottom" スクロールトランジションにおいて、裏ページの画像がどの 方向から現れてくるかを指定します。"left" = 左、"top"= 上、 "right" = 右、"bottom" = 下
staymethod=scroll のときのみ"stayfore" または "stayback" または "nostay"(デフォルト) スクロールトランシジョンにおいて、表ページの画像が その場にとどまったまま、裏ページの画像が外部から スクロールしてくるか ( "stayfore" )、
 表ページの画像がスクロールして出ていく裏から、 裏ページの画像がその場にとどまったまま現れてくるか ( "stayback" )、
 または表ページの画像と裏ページの画像が連結されて 一緒に移動しながら切り替わっていくか ( "nostay" )、を 指定します。
 指定したレイヤでトランジションを行います。
 トランジションは、常に裏ページの対象のレイヤが、表ページの対象のレイヤに 入れ替わる方向で行われます。
 トランジション後は、表ページの対象のレイヤの画像、位置、サイズ、可視・不可視 の状態は裏ページの対象のレイヤと同じになります。
 一般的に method=universal のトランジション は、backlay タグで表ページの情報を裏画 面にコピーし、裏ページに対し て imagelayopt タグで レイヤを操作し、この trans タグを layer=base children=true で使用し、 wt タグでトランジションの終了を待ちます。
 macro タグでこの一連の操作をマクロ化しておくと 便利かもしれません。
 トランジション中は、文字表示ができなかったり、遅くなったりします。 また、基本的に状態は「不定」なので、位置移動や表示・非表示の変更は トランジションの終了を待ってからにしてください。
 通常は背景レイヤに対してトランジションを行わせますが、特殊な用途 に使用する目的で前景レイヤやメッセージレイヤに対して個別にトランジシ ョンを 行わせることができます。しかし、「裏ページ・面画面のそのレイヤのサイズは 同一でなければならない」という制限があります。
 本当に特殊な用途 ( 一概に言えませんが ) に用いる以外は、layer には base を指定してください。

 このタグは、トランジションの終了を待ちません。トランジションの終了を 待つには wt タグを使用してください。
+
例:
+[backlay]
[image storage=fg0 layer=0 page=back]
[trans method=universal time=1500 rule=trans0 vague=64]
[wt]
+
+
+ +

unlocklink ( リンクのロックの解除 )

+
メッセージ操作
+
 すべてのメッセージレイヤのリンクのロックを解除します。
 リンクやボタンは、一回選択されると、再び新しいリンクやボタンが作成されるまで 選択不能になります ( エディットやチェックボックスも操作不能になります ) が、 それを強制的に再び選択可能にするためにこのタグがあります。
 逆の動作をする locklink タグもあります。
+
+ +

unlocksnapshot ( スナップショットのロックの解除 )

+
栞・通過記録操作
+
 locksnapshot で ロックしたスナップショットのロックを解除します。
+
+ +

video ( ビデオ/SWF表示領域の属性を指定 )

+
効果音・BGM・ビデオ操作
+
+ + + + + + + + + + + + + + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
visiblenotrue または false ビデオ/SWF の表示領域を表示するか ( true の場合 )、非表示にする か ( false の場合 ) を指定します。 非表示でもビデオ/SWFは再生できます ( 当然表示されません )。
leftno左端位置 ( pixel 単位 ) 表示領域の左端位置を指定します。
topno上端位置 ( pixel 単位 ) 表示領域の上端位置を指定します。
widthno幅 ( pixel 単位 ) 表示領域の幅を指定します。現バージョンではレイヤ描画モードでは指定は無視されます。
heightno高さ ( pixel 単位 ) 表示領域の高さを指定します。現バージョンではレイヤ描画モードでは指定は無視されます。
loopnotrue または false ループを行いたい場合は true を指定します。
positionno時間 ( ms 単位 ) 指定した時間までビデオの再生位置を移動したい場合に指定します。
framenoフレーム番号 指定した位置までビデオの再生位置を移動したい場合に指定します。
 position属性と違い、この属性ではフレーム単位で指定することができます。
modeno"overlay" または "layer" ムービーの描画モードを指定します。
 "overlay" を指定するとオーバーレイモードで再生できます。オーバーレイモードではビデオは他のレイヤより奥になることはできませんが、再生負荷を軽くすることができます。
 "layer" を指定すると、レイヤ描画モードで再生できます。レイヤ描画モードでは、ビデオの画像をレイヤに表示できますが、再生負荷は "overlay" よりも高くなります。表示するレイヤは videolayer タグで設定します。
playrateno再生速度(0.0より大きい値) メディアの再生速度を設定します。
 設定可能値はDirectShowのフィルタによって決まります。
 参考 : 音声付のMPEGファイルの場合、0.0より大きい値から2.0までの値が設定可能です。音声なしのMPEGファイルの場合、0.0より大きい値からdoubleの範囲内(たぶん)で設定可能ですが、実際の再生速度は処理速度によって上限が決まります。
volumeno音量% (0〜100) 音量を % で指定します。  100 が上限です。音量の抑制のみをサポートします(増幅は 音源の特性上、できません)。
pannoパン (-100〜0〜100) パン (左右の音像位置) を指定します。
 -100 が完全な左、0 が中央、100 が完全な右です。
 真中の値は 0 で、これは両方のチャンネルがフルボリュームであることを意味しています。
  一方のチャンネルが減衰されても、もう一方のチャンネルはフル ボリュームのままです。
audiostreamnumno音声ストリーム番号(0〜) 指定した音声ストリーム番号を有効にします。
 ビデオ/SWF表示領域の属性を指定します。
 ビデオ/SWF表示領域はデフォルトで非表示なので、このタグで表示状態にしないと表示されません。
 オーバーレイモードで表示される領域はレイヤではありません。すべてのレイヤよりも手前に表示されます。
 現バージョンではSWFはレイヤ描画モードによる再生はできません。
+
+ +

videoevent ( ピリオドイベントの発生 )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
frameyesフレーム番号 ピリオドイベントを発生させるフレーム番号を指定します。
 指定したフレームでピリオドイベントを発生させることができます。
 ピリオドイベントは、wpタグで待つことができます。
+
+ +

videolayer ( ビデオレイヤ設定 )

+
効果音・BGM・ビデオ操作
+
+ + + + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
channelyes1 または 2 レイヤ描画モードでは、同時に二つのチャンネルでビデオを再生できます。
 slot属性は、同時に異なるビデオを再生したいときのためにあり、channel属性は、同じビデオを2つのレイヤ(たとえば、表レイヤと裏レイヤ) で再生したいときのためにあります。
 この属性では、そのどちらのチャンネルに対してのレイヤを設定するかを指定します。
pageyes"fore" または "back" 表ページ("fore")か、裏ページ("back")かを指定します。
layeryesレイヤ番号(0〜) 表示したいレイヤ番号を指定します。
 レイヤー描画モード時に、ビデオの画像を表示させたいレイヤを指定します。レイヤサイズは、ビデオのサイズに自動的に変更されます。
 この設定を解除するにはclearvideolayerタグを使います。
+
+ +

videosegloop ( ビデオのセグメントループ再生 )

+
効果音・BGM・ビデオ操作
+
+ + + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
startyesフレーム番号 ループの始点を指定します。
endyesフレーム番号 ループの終点を指定します。
 start 属性と end 属性で示した区間内でループ再生を行います。
このタグはレイヤー描画モード時のみ有効です。
+
+ +

wa ( アニメーションの停止待ち )

+
レイヤ操作
+
+ + + +
属性必須?説明
layeryes"base" または 0 以上の整数 アニメーションの停止を待つするレイヤを指定します。
"base" を指定すると 背景レイヤ、 0 以上の整数を指定する と、対応する前景レイヤを表します。  指定したレイヤには、アニメーション情報が読み込まれていないとなりません。
pageno"back" または "fore" 表(fore)画面を対象とするか、裏(back)画面を対象とするかを指定します。 省略すると表ページであると見なされます。
segyes0 または正の整数 この属性で指定したセグメント番号のアニメーションの停止を待ちます。
 セグメント番号 0 も指定できます。
 任意のセグメントのアニメーションの停止を待ちます。
 アニメーションが停止するためには、asd ファイル上で s タグか home タグを 通過する必要があります。
+
+ +

wait ( ウェイトを入れる )

+
システム操作
+
+ + + +
属性必須?説明
timeyes時間(ミリ秒) ウェイトをミリ秒で指定します。
modeno"normal"(デフォルト) または "until" ウェイトの方式を指定します。
 "normal" を指定するか、この属性を省略すると単に time で指定する時間だけ 待つことになります。
 "until" を指定すると、resetwait タグで設定した 時間原点からの経過秒を time で指定したとみなし、指定した時間までを待ちます。すでに 指定した時間を過ぎていた場合は待ちません。
canskipnotrue(デフォルト) または false このウェイトを、マウスのクリックやキーボードでスキップできるかを 指定します。false を指定すると、マウスのクリックやキーボード では、このウェイトをスキップできません。
 ウェイトを入れます。
 現在の時間からを待つ (mode="normal") か、あるいは resetwait タグで指定した時間原点からの時間を待つ (mode="until") ことができます。
 mode="until" の場合、すでに指定した時間を過ぎていた場合は kag.lastWaitTime という 変数に 0 が入ります。ですので、[if exp="kag.lastWaitTime != 0"] のようにして 判断すれば、「まだ指定した時間を過ぎていない場合」(多くの場合、処理が追いついている場合) かどうかを判断できます。
+
+ +

waitclick ( クリックを待つ )

+
システム操作
+
 クリックを待ちます。
 l タグや p タグと違うのは、スキップできない ことと、クリック待ち記号が表示されないということ、待っている間は栞を挟む/たどるや、 そのほかのスキップ操作などができないなど、です。
+
+ +

waittrig ( トリガを待つ )

+
変数・TJS 操作
+
+ + + +
属性必須?説明
nameyesトリガ名 待つトリガ名を指定します。  kag オブジェクト ( MainWindow クラス ) の trigger メソッド で引数に同名のトリガ名を指定することにより、 トリガを発動し、待ち状態を解除することができます。
canskipnotrue または false(デフォルト) true を指定すると、クリックにより、待つ動作をスキップすることができます。
onskipnoTJS式 クリックによりスキップされたときに実行する TJS式 を指定します。
 TJS2 スクリプトが trigger メソッドを呼ぶのを待ちます。
 「トリガ」は イベント駆動型のプログラミングモデルで動作する KAG において、 シナリオ進行をいったん停止し、なんらかの処理を待つために使われる機構です。
 このタグは、TJS2 スクリプトの処理が終わるのを待つのに使います。
 たとえばトリガ名 "click" は、マウスがクリックされたときに発動するトリ ガ ( これについては KAG 内部ですでに定義されているトリガ ) で、 [waittrig name="click"]と記述することによりマウスのクリックを待つことが できます。
+
+ +

wb ( BGM フェードの終了待ち )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
canskipnotrue または false(デフォルト) true を指定するとクリックでフェードの終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 BGM フェードをスキップした場合は、音量は直ちにフェードの到達音量に なります。
 BGM のフェードアウト・フェードインの終了を待ちます。
+
+ +

wc ( 文字数分のウェイトを入れる )

+
システム操作
+
+ +
属性必須?説明
timeyes文字数 ここで指定した文字数を表示するのと同じだけの時間を待ちます。 一文字に必要な時間は delay タグで指定します。
 文字数分のウェイトを入れます。
+
+ +

wf ( 効果音フェードの終了待ち )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) フェードの終了を待つバッファを指定します。
 省略すると 0 であると見なされます。
canskipnotrue または false(デフォルト) true を指定するとクリックでフェード終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clipskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 効果音フェードをスキップした場合は、音量は直ちにフェードの到達音量に なります。
 効果音のフェードアウト・フェードインの終了を待ちます。
+
+ +

wheel ( ホイール待ちジャンプ )

+
ラベル・ジャンプ操作
+
+ + + + + + +
属性必須?説明
storagenoシナリオファイル名 ジャンプ先のシナリオファイルを指定します。省略すると、現在 のシナリオファイル内であると見なされます。
targetnoラベル名 ジャンプ先のラベルを指定します。
 省略すると、ファイルの先頭から実行されます。
funcnoTJS 式 ホイール時に実行されるメソッド名を指定します。func(shift, delta, x, y) の形で呼び出されます。 省略すれば呼び出しは実行されません。storage や target が指定されていた場合、このメソッド呼び出しが が実行されてからジャンプ先に移動します。
expnoTJS 式 ホイール時に実行される TJS 式を指定します。省略すれば 式は実行されません。storage や target が指定されていた場合、この式 が実行されてからジャンプ先に移動します。
seno効果音ファイル名 ホイール時に再生する効果音を指定します。指定しなければ 効果音は再生されません。
sebufno効果音バッファ番号 clickse で指定した効果音を鳴らす効果音バッファを指定します。 省略すると 0 であると見なされます。
 現在のメッセージレイヤに対してクリック待ちを登録します。 リンクやボタンが無い場所をクリックした場合に反応します。  このタグを使う場合は、なるべく s タグですぐに選択肢待ちにしてください。
+
+ +

wl ( BGM 再生の終了待ち )

+
効果音・BGM・ビデオ操作
+
+ +
属性必須?説明
canskipnotrue または false(デフォルト) true を指定するとクリックで BGM 再生の終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 途中で再生終了待ちをスキップした場合は、BGM は直ちに停止します。
 BGM 再生の終了を待ちます。  BGM が繰り返し再生の場合は待ちません。
+
+ +

wm ( 自動移動の終了待ち )

+
レイヤ操作
+
+ +
属性必須?説明
canskipnotrue(デフォルト) または false true を指定するとクリックで自動移動の終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 途中で自動移動の終了待ちをスキップした場合は、直ちに最終位置に移動します。
 自動移動の終了を待ちます。
+
+ +

wp ( ビデオピリオドイベント待ち )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
forno"loop","period","prepare","segLoop"のいずれか 待つイベントの種類を指定します。
 "loop"を指定すると、ループ終端を待ちます。
 "period"を指定すると、ピリオドイベントを待ちます。
 "prepare"を指定すると、preparevideoの準備完了を待ちます。
 "segLoop"を指定すると、セグメントループ終端を待ちます。
ピリオドイベントを待ちます。
for属性が未指定の場合、すべてのイベントを待ち、いずれかが発生すると処理を継続します。
+
+ +

wq ( 画面揺らしの終了待ち )

+
システム操作
+
+ +
属性必須?説明
canskipnotrue または false(デフォルト) true を指定するとクリックでトランジションの終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 途中でトランジション終了待ちをスキップした場合は、直ちに切り替わり後の状態に 移行します。
 quake タグで開始した画面揺らしの終了を待ちます。
+
+ +

ws ( 効果音再生の終了待ち )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
bufno効果音バッファ番号( 0(デフォルト) 〜 ) 再生終了を待つバッファを指定します。
 省略すると 0 であると見なされます。
canskipnotrue または false(デフォルト) 効果音再生をマウスのクリックでスキップできるかを 指定します。
 true を指定すると効果音再生をマウスのクリックで スキップできるようになります。
 ただし clipskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 また、スキップされると効果音の再生も自動的に停止します。
 効果音再生の終了を待ちます。
 効果音が繰り返し再生の場合は待ちません。
+
+ +

wt ( トランジションの終了待ち )

+
レイヤ操作
+
+ +
属性必須?説明
canskipnotrue(デフォルト) または false true を指定するとクリックでトランジションの終了待ちをスキップできます。
 false を指定するとスキップできません。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 途中でトランジション終了待ちをスキップした場合は、直ちに切り替わり後の状態に 移行します。
 トランジションの終了を待ちます。
+
+ +

wv ( ビデオ再生の終了待ち )

+
効果音・BGM・ビデオ操作
+
+ + +
属性必須?説明
slotnoムービーオブジェクト番号(0〜)この操作を行うムービーオブジェクト番号を指定します。
省略すると 0 が指定されたと見なされます。
複数のムービーを同時に操作する場合は、Config.tjs の numMovies の値も、必要な個数に変更してください。
canskipnotrue または false(デフォルト) ビデオ再生をマウスのクリックでスキップできるかを 指定します。
 true を指定すると ビデオ再生をマウスのクリックで スキップできるようになります。
 ただし clickskip タグでクリックスキップが 禁止されているとこのスキップもできないので注意してください。
 また、スキップされると ビデオの再生も自動的に停止します。
 ビデオ再生の終了や、preparevideo タグによる再生準備の完了、videoevent タグによるピリオドイベントを待ちます。
 SWF(Sockwave Flash) の再生の終了を待つことはできません。wait タ グ等で必要な時間を待つなどをして対処してください。
+
+ +

xchgbgm ( BGM を入れ替える )

+
効果音・BGM・ビデオ操作
+
+ + + + + +
属性必須?説明
storageyesBGM ファイル名 次に再生する BGM ファイル名または CD トラックを指定します。
loopnotrue(デフォルト) または false BGM をループするかを指定します。
 true を指定するとループします。false を指定すると ループしません。
 省略すると true であると見なされます。
timeyesフェードを行っている時間 (ms単位) 指定した時間で現在の曲のフェードアウトが行われた後、同じ時間で 指定した曲のフェードインが行われます。
overlapnoオーバーラップを行う時間(ms単位) overlap に時間を設定すると、その時間分、フェードアウトとフェード インの時間が重なります。省略すると 0 であると見なされます。 クロスフェードを行うときに指定します。
volumeno音量% (0〜100) 次の曲のフェード後に到達させる BGM の音量を % で指定します。
 省略すると、次の曲の音量は現在の音量と同じになります。
 BGM を入れ替えます。
 このタグを使う場合は、Config.tjs で doubleBuffered を true に設定してください。
+
+ + + diff --git a/docs/kag3doc/contents/Trans.html b/docs/kag3doc/contents/Trans.html new file mode 100644 index 0000000..20213f7 --- /dev/null +++ b/docs/kag3doc/contents/Trans.html @@ -0,0 +1,252 @@ + + + + + + + トランジションを使おう + + + + + + + + +

その前に +

+ フェードインやフェードアウト、ブラインドなど、時間をかけて画面を切り替える効果をトランジション(移り変わり)と呼びます。
+ 吉里吉里/KAGでは、クロスフェードトランジション、ユニバーサルトランジション、スクロールトランジションの、3つの種類のトランジションを使用することができます。
+ また、拡張トランジションプラグイン ( extrans.dll ) を用いると、いくつかのトランジションをさらに使うことができるようになります ( 吉里吉里 SDK ヘルプの「トランジションについて」を参照してください )。
+
+

クロスフェードトランジション +

+ クロスフェードトランジションは、単純な画面切り替え効果です。
+ トランジション(移り変わり)ですから、トランジション前の画像と、トランジション後の画像が必要になります。KAG の場合、トランジション前の画像は表ページのレイヤで、トランジション後の画像は裏ページのレイヤになります。つまり、裏ページのレイヤの画像が表ページにくるわけです。
+ トランジションの開始とともに、時間をかけて表ページの画像が裏ページの画像に置き換わり、最終的に裏ページの画像が表ページの画像になります。
+
+
Note
+ KAG にはフェードアウトフェードインという概念がありません。黒にフェードアウトさせたい場合は裏ページを真っ黒な状態にしてからクロスフェードトランジションをかけます。

+
+

ユニバーサルトランジション +

+ ユニバーサルトランジションというのは、ユニバーサル(汎用的な) トランジション(移り変わり)のことで、いわゆる「画面切り替え効果」を自由に作成することができるモノです。
+
+ また、ユニバーサルトランジションには、ルール画像と呼ばれる、グレースケールの画像が必要になります。ルール画像のサイズがトランジションを行いたいレイヤよりも小さい場合は、自動的にタイル状に敷き詰められて使用されます。この画像を「ルール」として、トランジションを進行させます。
+ そして、ユニバーサルトランジションに必要な属性、time (トランジションを行っている時間)と、vague (あいまい領域値) が必要になります。
+
+ 例を示します。
+
+ 以下の画像を見てください。
+
univtrans_A.pngunivtrans_B.pngunivtrans_R.png
トランジション前、トランジション後、ルール画像


+ このように、A と書いてある画像が、B と書いてある画像に移り変わるとします。また、ルール画像には、単純ですが 上から下へ、黒から白へのグラデーションの画像を使うとします。
+
+ さて、まず vague (あいまい領域値) を 1 にすると、以下のようにトランジションが進行します。左から右へと進行しています。便宜上、移り変わりを横に並べて示していますが、実際はこれが連続して同じ場所で表示されるのです。
+
univtrans_V1.png
vague=1 のとき


+ つまり、ルール画像の黒いところから、白いところに向かって、だんだんと B の画像に置き換わっていっているのです。
+
+ ここで vague=64 としてみましょう。
+
univtrans_V64.png
vague=64 のとき

 こんどは、A の画像と B の画像の境界がぼやけていますね? このように、vague の値を大きくすると、移り変わりの中で、A でも B でもない、あいまいな部分を大きくすることができます。vague には 1 以上の数値を指定できます。
+
+ ルール画像には、このように単純なグラデーションだけではなく、いろいろな模様を指定することによって、それに従って自由にトランジションを行わせることができます。
+
+ 吉里吉里ダウンロードページhttp://kikyou.info/tvp/ には、「トランジションライブラリ」として、ユニバーサルトランジションのルール画像が 20 種類以上入ったものが公開されています。
+
+

スクロールトランジション +

+ スクロールトランジションは、ユニバーサルトランジションとは違い、切り替え元 ( 裏画面 ) の画像が切り替え先 ( 表画面 ) の画像の領域内にスクロールして入ってくる感じの物です。
+ 切り替え元 ( 裏画面 ) の画像が入ってくる方向は、左、上、右、下の4方向から選べます。
+ また、スクロールの仕方で3つの種類があります。
+
+ まず、stay 属性に "stayfore" を指定した場合のスクロールトランジションは、以下のようになります(下から入ってくる場合)。
+
univtrans_Sstay.png
stay=stayfore のとき

 このように、stay 属性に "stayfore" を指定すると、表ページの画像がその場にとどまったまま、裏ページが外から移動して入ってくる感じになります。
+
+ また、stay 属性に "stayback" を指定した場合のスクロールトランジションは以下のようになります。
+
univtrans_Sstaysrc.png
stay=stayback のとき

 この場合は、表ページのレイヤが移動して出ていく後ろから、裏ページのレイヤが見えてくる感じになります。
+
+ stay 属性に "nostay" を指定すると以下のようになります。
+
univtrans_Snostay.png
stay=nostay

 このように、入ってきた切り替え元の画像に押されるようにしてスクロール元の画像が出ていきます。A の画像と B の画像を横または縦に連続した物にすれば、大きな画面をスクロールさせているような効果を出すことができます。でも前景レイヤの切り替え効果にはあんまり向いていません(^^;;
+
+

表ページと裏ページ +

+ トランジションを行ううえで非常に重要なのが表ページ裏ページという概念です。
+ 背景を表示しよう でも紹介しましたが、KAG は、普段目に見える表ページと、目には見えない裏ページがあって、両方は見えるか見えないかだけが違うほかは、まったく同じ構成をしています。
+ KAG のトランジションは常に、いま表示されている表ページの内容にかわって、裏ページの内容がだんだんと表示されてくるという方向で行われます。トランジションが終わると、表ページの内容は完全に裏ページの内容と同じになります。
+ というわけで、トランジション前には裏ページを操作しなければなりません。
+
+ 例を示します。背景レイヤのみを入れ替える場合を考えます。
+ まず、トランジション前、レイヤの状態が次のようであったとします ( 左が表、右が裏 )
+
+
trans0f.jpgtrans0b.jpg
トランジション前

 この時点で表ページは背景レイヤに全景レイヤ、メッセージレイヤが表示されています。裏ページはどのような状態でもかまわないものとします。
+ ここで [backlay] タグで裏ページを表ページと同じにします。
+
trans0f.jpgtrans0f.jpg
backlay タグ実行後

 トランジションは裏ページの内容を表ページに移すものですので、トランジションを行う前に、裏ページをいじらないといけません。
+ ここでは背景レイヤのみを入れ替えたいので、裏ページの背景レイヤに画像を読み込みます。
+
trans0f.jpgtrans2b.jpg
裏ページの背景レイヤに画像を読み込んだ後

 ここでやっと trans タグでトランジションを行えます。くどいようですが、トランジションは裏ページの画像を表ページに持ってきます。
+ トランジション中は以下のようになります ( トランジションの例 )。
+
trans3f.jpgtrans2b.jpg
トランジション中

 トランジションは [wt] タグで待ちます。
+ トランジションが終われば、以下のように、裏ページと表ページが同じになります。
+
trans2b.jpgtrans2b.jpg
トランジション後

+

背景レイヤを切り替えてみよう +

+ トランジションを行うには trans タグを使います。
+ 基本的にトランジションは、裏ページに [backlay] タグにてすべての表ページのレイヤ情報を裏ページにコピーして、裏ページで変化させたい部分を image タグなどでいじり、そして trans タグでトランジションを実行します。すると、裏ページに適用した変化が、現在の表ページと入れ替わるように、表ページに適用されます。
+
+ まずは、背景レイヤをクロスフェードトランジションで切り替えてみましょう。
+
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。背景レイヤを切り替えます。[l][r]
+[backlay]
+[image storage="bg1" layer=base page=back]
+[trans method=crossfade time=1500]
+[wt]
+切り替わりましたか?
+
+
+ + まず、[backlay] タグで表ページのレイヤの情報を裏ページにコピーしています。
+ そして、裏ページの背景レイヤに、次に表示すべき画像を読み込んでいます。
+ この時点で、裏ページが表ページと違うのは背景画像だけです。
+ 次に trans タグでトランジションを実行しています。このように、trans の属性で method=crossfade と指定するとユニバーサルトランジションとなります。この例では時間は 1.5 秒と指定しています。時間はミリ秒単位で指定するので time=1500 と指定します。
+
Note
+ ミリ秒単位で指定をしますが、精度がミリ秒単位ほどあるというわけではありません。

+
+ その後、wt タグでトランジションの終了を待っています。KAG は wt タグを書かないとトランジションを待たずに次にいってしまいますので、wt タグを忘れないようにしてください。
+
Note
+ トランジションに限らず、KAG の「時間をかけて何かを処理するもの」のほとんどのタグはそれ自体では終了を待たずに、終了を待つためのタグが別にあります。これにより、トランジションしながらBGM のフェードアウト、というようなことができます。
+ また、対応する「待つ」タグは必ず書いてください。異種類の物でまとうとする場合 ( トランジションの終了を wait タグで待つなど ) でも、正しく対応する「待つ」タグは一応書いておく必要があります。
+

+
+
+ また、ユニバーサルトランジションを使ってみると以下のようになります。
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。背景レイヤを切り替えます。[l][r]
+[backlay]
+[image storage="bg1" layer=base page=back]
+[trans method=universal rule="rule1" vague=1 time=1500]
+[wt]
+切り替わりましたか?
+
+
+ +
+ この例でも trans タグでトランジションを実行しています。このように、trans の属性で method=universal と指定するとユニバーサルトランジションとなります ( method タグを省略しても universal であると見なされます )。この例では、ルール画像として "rule1" 、時間は 1.5 秒、あいまい領域値は 1 という設定です。
+
+ また、これをスクロールトランジション、右から、居座りなしでトランジションを行うとすると・・・
+
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。背景レイヤを切り替えます。[l][r]
+[backlay]
+[image storage="bg1" layer=base page=back]
+[trans method=scroll from=right stay=nostay children=false time=1500]
+[wt]
+切り替わりましたか?
+
+
+ + となります。ここでは children=false と指定しているのは、このように指定しないと「子レイヤ」も一緒に移動してしまうからです。KAG では、背景レイヤが親、前景レイヤとメッセージレイヤは背景レイヤの子にあたります。
+ 子レイヤも一緒にスクロールしていいのであれば children=true にしてもかまいません。
+
+

前景レイヤを切り替えてみよう +

+ 前景レイヤを切り替えるにも trans タグを使います。
+
+ +
+[image storage="bg0" page=fore layer=base]
+[wait time=200]
+*start|スタート
+[cm]
+こんにちは。前景レイヤをトランジションを使って表示させます。[l][r]
+[backlay]
+[image layer=0 page=back storage="fg0" visible=true]
+; この時点で、表ページの前景レイヤ 0 は(デフォルトのままなので)不可視、
+; この時点で、裏ページの前景レイヤ 0 は可視で画像を保持していて、
+; 他の裏ページのレイヤは backlay タグの効果で、すべて表ページと同じ
+[trans method=crossfade time=1500][wt]
+つぎは、前景レイヤを入れ替えます。[l][r]
+[backlay]
+[image layer=0 page=back storage="fg1" visible=true]
+; この時点で、裏ページの前景レイヤ 0 は fg1 という画像、
+; 他の裏ページのレイヤは backlay タグの効果で、すべて表ページと同じ
+[trans method=crossfade time=1500][wt]
+そうしたら、前景レイヤを消します。[l][r]
+[backlay]
+[layopt layer=0 page=back visible=false]
+; この時点で、裏ページの前景レイヤ 0 は不可視、
+; 他の裏ページのレイヤは backlay タグの効果で、すべて表ページと同じ
+[trans method=crossfade time=1500][wt]
+
+
+ + 上の例は、前景レイヤを表示させ、それを別の画像に入れ替え、そして消しています。
+ まず、表示させる所ですが、まず、backlay タグを使って、表ページの情報をすべて裏ページにコピーしています。そのあと、変更したい部分、ここでは前景レイヤに前景を表示させたいわけですから、裏ページの前景レイヤに画像を読み込んでいます。
+ そのあと、trans タグを使用しています。
+
+ つぎに前景レイヤを入れ替えていますが、これも、backlay で裏ページにコピーした後、変更したい部分を操作し、trans タグでトランジションを行わせています。
+
+ 最後に前景レイヤを消していますが、backlay で裏ページにコピーした後、該当する前景レイヤを非表示にしています。非表示になっているということは、つまり表示されてないということで(あたりまえか) 、トランジションを行わせると消えます。
+
+ なお、このなかで、裏ページにあるレイヤに対して visible=true としているので、表示されてしまうのか、と心配かもしれませんが、裏ページ ( 背景レイヤとその子レイヤ ) はもともと非表示にしかならないので、visible=true と指定しても表示される心配はありません。
+
+
Note
+ 上記の例のように、trans タグの layer 属性を省略すると base ( 背景レイヤ ) が指定されたとみなされ、children 属性を省略すると true が指定された ( 子レイヤも含めて一緒にトランジション ) をするという意味になります。
+ 前景レイヤをトランジションを使って表示したいとき、入れ替えたいとき、消したいときなどや、その他の諸々のトランジションは、背景レイヤに対して、子レイヤも含めて一緒にトランジションさせるというのがミソです。layer=0 などとして前景レイヤやメッセージレイヤに対して個別にトランジションをかけることもできますが、通常は使いません。
+

+
+

メッセージレイヤを切り替えてみよう +

+ メッセージレイヤも同様の方法で切り替えることが出来ます。
+ メッセージレイヤの場合、表示・非表示は layopt タグで操作できるので同様の動作を行うことができます。
+
+ たとえば、メッセージレイヤを非表示のまま描画し、描画し終わってからトランジションで画面に表示するには以下のようにします。また、そのあと、メッセージレイヤをトランジションを使って非表示にしています。
+
+ +
+[layopt layer=message page=fore visible=false]
+; ↑最初は表ページメッセージレイヤを非表示に
+[layopt layer=message page=back visible=true]
+; ↑裏ページのメッセージレイヤを表示状態に
+[wait time=200]
+*start|スタート
+[cm]
+[current page=back]
+; ↑操作対象のメッセージレイヤを裏ページに
+[delay speed=nowait]
+; ↑文字描画速度をノーウェイトに
+このようにトランジションを使いながらメッセージレイヤを表示させることができます。[r]
+[delay speed=user]
+; ↑文字描画速度を元に戻す
+[trans method=universal rule="trans1" vague=1 time=1500][wt]
+; ↑ユニバーサルトランジション
+[current page=fore]
+; ↑念のために操作対象のメッセージレイヤを表ページの物に
+[l]
+; ↑クリック待ち
+[layopt layer=message page=back visible=false]
+; ↑裏ページのメッセージレイヤを非表示に
+[trans method=universal rule="trans1" vague=1 time=1500][wt]
+; ↑トランジション
+
+
+ +
+ + + + diff --git a/docs/kag3doc/contents/UsingFrame.jpg b/docs/kag3doc/contents/UsingFrame.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbdd63fbc3f06c3ca9e22eaf2f5f36e53d8139ed GIT binary patch literal 29340 zcmbTebyQqUvo|^fmp~x6%iykIa0wnDxJ%IB?hb(v+zIY(L59JD4^Hr4!I=#1E|=$h z&v)MMoWJh9z1E(!YVY0E^{cAh-CbQh&%dA70dEv#6=VSjFNF<(4FGsv21o;t5s{FP z5RqSgkdcv5P_fWZUkVN;COQ@_4jvvZ4leFnLUN+F_@o55xWqKXq!biXR8((?Xo0kp zKyped%72(3yi`R+LB&Qx!=}W?#i#uLT%NlDxM&FI2r`HWw18K*2#B}{&;0-@0005` zA88Q~0RL4GULhjANQs7yf%)b^=BJfH+K(DFK-{;urJ{eUn9RoB_*e%rlo(+$Sf=>E-5W5uc&NjYyvk! zT3XwB`}zk4p+mzX(=)Sk^9#Qhmo_%Hws&@6f8l$lXXh7}SJyYUcmLo*03iMw)_)`W zU$}5zaJ_ml3li!-xDZ}>y{k=|b$WhxnTTqSyzG0&up8O=DB%l8I?#J)YxY zy%L|K;g!o7MDTjmYa>0}QAE!x@Oo(#{8S;lB4l7JRPYJnW{So69u_BcJ>a?&-?J9+ zjtGza5f*99TRCyA<&L^;YbPFjtKrazL!J)( z`3BEOcGh2UR^Nb~l59gfQ=6nXOrsd=Vqkcz) zhi#Ig(Hxdr(#8hnY|3)P6P!+Ph~PlTsi!XNE*o#s+O29VYRX_pc{ccAjF6wY)+Hg| zllZFQk~3rtlWumaq20*SAYFN#y+0{|Br7>wa2VTdCRBxYlIQd9+vO)BssWrk3J<6I z8}Z&0f3ussXMl8V%`+ef^+snZA#n01ChP}M!qVPRIHo<3wKrX5VjS@sNs7n;w_guz zHzM<{e^g6uO6QkYX?)MdJD6gUi1I~pisL_Nm*G+}KLaqMH-jFr+aQk*R2vdE1E=Co zUyTf&o^Vd;e4hc~{3kBeV#|1T$xOKTtGgY_^2;GYy?U zhw{==N2sY7K`g#nl?ex|yuIQZF8->|fPw|>XTZ;}2c{Qh|7Nc9FXs7mVyF)^jU7?* zJ7A{m)GMsjW`cGU!CNoWEy0PIsC3yIoRcD*MuSnbOFbIXV(vD}AqyRiP~obI2cMpy z8UkCR(6L+C6A@1T@r!ay{!vc)|DZYty52l68!1k%$zKcWe+=yBl=r{__8OU=EaTl*@ZID(NXaiH?TFYr~Ph=~8Eo1A|XUiB}9 zt3LyJH~w{_^xrphe&P9J-+V~VGsoR)Ftl{RGfMN6HT?E!i(V+UkB&NSHdCjE^NW5B zxMU*RL+N|%V*dvShv0`JGc+VlfJKb|=;KC~ZWP5&K%)rae~HikFEAve;69*{>S@m~zlb1MAwRrz0rD0(77{YQoWZnd+vZ^ODLYltC7M?*6j zG+07jEg_On-^dN{UmO&8=%a;D-(a3JILL0P#<6Qm2ESTgGX)5S@(~pE4?^=(5Cexw(q}46S-$VpRoVCXFy)S zi_;?F+^D@sc>Es;wHvXB&H~XuK>v;ZSyNGr^Wnpbn@?)}%gtH;9^Y68MLYw}k1L)5 z>z|$h7$!H?@n5O_LxaDs2PL0KZKu1zaBd9N-irTqn+rN#|JR%UgS-=dBH7x2KHTpG z-4F-$#{X|V8SCQ7Cz8W-FwXzUMtsA`|9^&kaU%>a}U|h^_zMD*wMo6WRY&_aBX4p1}T(Pw2C)vHhDBj`jZ~*iL28 zi{bH$Hjn#%-jRb<|LOQ$(a(Sg-y64QfY@E$6AINy$qViGf6-NX6FM&sp8;o@oc}P( zJAsJN2mSgtFM^A*zUB4+rCu@eEThxiGVI1G{pt$Dy;1UH2Ja9t%A{OdSGwk@KpE{GM4$qT=!nAnL#jQCfR@WSWxh2+7RIXU4J9(M z37&U`Tyvq^MLByQ1$@4Wc6mRSHd28mv3C#2GG1e*(}%k{Mc-}V*ECd=VEkmk!w&sY zY4kUHar_YPge40pKjZ6=1XVum(vppKc7%sfyXfT%C*r1QBjsIg7JO_MxQy#UQua~D zPnw!INIyH-!}Y5TYCVhl_&4XC@!ws&woq@JRa^|`7NSJ>Eh|YloH*%PLOMzeIeyQ? z3<7RFlMp72Q3VmvH}i;AZ_N9Ng3LQuS&u1Aw0`%8<$kx137ZhStfQQ-)80F?DeWJ3 zp-CL&8s&zGOW794i0W-^p35ovC+OEqerP>~gw9W63e5A%f6;l(%OfG~N5^euutRsu zO-J0*LriU!3X2q>5fQk$bFA?pO6$_otD#(1cw=Sx!I5~eCAbf(sDQ$5@W?dlaF}?d zx-3F#s2hH(dA3SsnjeuGkMzou{2EofZXWFIO%i0Q?b%=wf17)kD|!-M`n|bu6aHyQ zvt7C+sek8tZncU6V+BamF0)}FkaSVO*P+hIJZYann{Y(l6ra!}edj*U-M=GO$b6`@ z>v5?#X0+)o#76{oIS!o2x2fZbS$oF4hr)E%Au`UqOR&@SPeWTcF@Y4|Vts!x>iI;P zT;bp!y=IeX^_9#R!47JqE^)JPf0L7Oqa*PqC!|AKWr|)s<|F~x73}p4wY?@|^Q&xO}tJ|!{BTFkpjpeJ?a=TM&@yV&2rb|*le7;8>mA}~RVFBL0o1rqU z>9L2|@ovNlz)~u^_Pi;+Jvpwmh5~0ZzVDIhgS+>X?KqA>?ouV4EH6LpA~uBu{WIdUyutQ&NhK#4)JPQAwA@is3i6i#04P;2EyC zFx;~haTum9HNoOD|L4@n=iovsjudQx&gv%+F#O+gS}SQAL+jg5Xps%-VN!DwhG!=J#) zJcw@I=yE*hjQTSDCxLC^gb)%6JTc8q6t#2z8MhrsarI0HL1dbgUa&n{!N)jJ*!0Fc z@Pr{iTv5S1sLa$%9p_Eq`!{L_wDeI~I=}AZByY0T*=c*&Wy^%Si2R~;J`SjTG$r4{ zs1&-o9Cst~GQs5JSC&&3nr}*f*T6R;Bqaz;;!YVv@xI#6Jfr%vy0j}p29@Y5uc|;S zb_p)BkLhvkuFnBamQeqxg1)z10XKKqIZmApxl2YPl=h>n z1oe+C{<4jqk%5T69FovId>FhFpl|83qi`_^sb7r`n-8PrR6$3LF0 z6XH#dK_>(+vz;z0(ttg&`$&404nf$qqr~gSnL%ei4HB(dG#=I}>(56_SGYLU!@^Xm zI5EaZtnK%T0bM_>f=-H~x2QraP3zZIxy^%-i?g3n&qkHr4tzm%eVp23naH+~nE6Ja zhkuC8yIclW{usT7gUeTEz9)NAzYb=3eK@F_ig<81>rqxWAdbdc$UZk^ZCWWdwyLUl z8$opuT#{~A2O_r?OZ^2uF>I(AFD=;}bu5VCO+q~X#kCKu6+TyEQTz7g6ij;;$T&4~ z1C#y|c(M`}>>1hcTNE2%f+gBt^(1M9y|u07oD6_N{W3VDZvEI_3ST|&LbtrqE0h4@ zzUK)O3HDtN^*f&dI~w+V@`tI<)i@$eCGASTF^pYvF7-U0l>DtD-go*0IGuqz?eF@s zKB%39D(rx_d+M`&7?NkWe&y(vRyU4f-p>WdO>Jy}m{iwXU5vWA2%9#JZN z#qG!P^WqjHPmb%bF0tG51$TWvr$4Lak?H|TyP=!PPY8S+eqi1G&QJ1%Ie6NXK<3l6 zvs=v7PUFp7Rjis7n3wg{_QtPzELDG($!CCZR(@USpwhd_w0gO=<(qw}mbGngpO0PZ zPp=rPEs@OpKxS_VaI5h&ZN7e`%r(Kk)caAk#mLoUqliBH@G)6Yq7n3THxO+}W+PvcTyt>X_ev$;E8MWwP7_RZm1>bQ{nTaMCEkCG&fsOFdbS0Wk|%iv zT+Ui=)`f+AxwjnLM0jz^Ul(<#dG2lmMChI0BQz0OpyqM5Ib(^K{$GB3?r4Sdd`fKb z^(3ato*Qs`HCFj&-eh6yj!1Lc@NDRD=q`sn7WxG82&Ka!B>k(=YAK|;Ist$fx zooI8PzE)C4i@tR!U|aP(je|m-0aa!Es^h6jz@WW371_YQR6}=L# z+{Y?$ORktBr=cja&RhW}LbI(#If_Z~{iDufrHo>dj7d^S65Dz3O#5vmd()A8jU>RJ z_}xXCn%tF@^BJC7d{)RK3nKTo6iQTTJlBAr8X{!m0HlaPDJ9kdSeM*IRbqkq`v(7h z^RVf{NCoB*RIB~)!>6F$GJ%GqcM+G{7grUn>Oo`uOTSIsLS{Xv^ncCJ*%T&xMfimP z5pB21x6@mXREZ%$r(>P-Bag~cL_K6Vc{Q@;S(QfBf;--~pf)R;8!ON$?F@Ro`Q1%{a9uoZBj#n6vyjJq zj%96oN!(pV5*#-AdC(jNu{^#Ez;;r&?IHy6?O+T z?cdvpA*mo(r>+U(5NhlSV#{VEweC@ap00Js8mKJbTXa0jN9R@Er6fxT;Whgp8BNW$ zsjLFA;NALs+E+e-rIMzFsooP_%b2WYoa^TEI3cq}x(MAd`?z;uBM{Xc143>k;FoF~ zmz_6?g%+IDZikr~I&y3~PQ0^)a~^w}Qf2Ry_Wtwwk0`UjHcxbmz8wUMHR0=jGLAYh*&~@I_HF%4?+s z6-4F(AH*rM%~bZBpr9#giy)TnepMfAs=GxX@Yvw`%JP(7y|73XaUF%d&OLJThi&zUz2)>Ng{@lifi@eLdUaW`7 z6gr|jLOP|nnb{m1gKoTiX&96|lEAA^@SEKl86V(S@ek(ga*q`uU-t=Htr=i@s9bCI zGI9ME=7;y!#}9jBQ@X|b7U>)(;mFzM$?+Q$f?_{Qu!}wU@>q>673Ojt2ACR>h>}qA zq0?pen1#eZnZ&UWs7ZTR;=&5fAeiqv?GH#s$2X3v=F5ODJaJz|Tz;MBele@GdrMoT z;Fv3otx+zL7w8wSxO+97eQOq8*?=atcx4&)XLvjK)vM4&Q(0B=x65b8AD0HODV_Ln zJ2o+xmOidiBEU$F57m|pM|UbCTCn=Cl^g-*FN0QP)pDUzTN2lSGy0%{{YenUXp&*v zU(Z#%iAnsf4^v3Pf>PWIYcnAq+S+57vzGh~g*D zkgWS&mKP?`w-7GUxTRSkB@opDu1HE$4ZQd@FY6DUkXr2OzWUlvD0sHFt>zh);IDl> zs5#kEvXF{$tW{Z4y>!b6#(JZvTu*N8b0twa-ul zBMCA|3endZT{d%Cd4(2usv1wq`drnVuw$qp)BfSO_0Tyt8o_XnL%#JXRIxo(ffZh_ zZO~bZWf3aN6~OxxB;=G$arXP;&tBDi4fvJz0+z@X_ZQ&?&0JJ9sAANC+|`f$W@bmae>OabP`w-@Ji*#)1g8YwO{F zvXdRNt22S_8y!ZVTX%_HDiD%P)~qE_5sa-eN1lAF=rGZ(VlZo78uX~S57z2qHs#KK zJ6Xb>Mh^0M?-~RE4RA$!?n)nSMbZ4k+ulMf6$3jE`hTO7MN?stuf?o5e}i2Hql@xr zSOE`fFlb)%S>T*c7qpWo>a?>ht4t}Hx%6khhEi+(9Z4GAi6M`LHrpgafylsbDQ%o( zfX(uiQ7<~D%vDIJuiF5hS;1s|-K*kQpav2viD1t#{748_ZB0IMXD1*g8iEur858Kf z?CE3vn!R3oh&q>trMU!OHPAdKZxo{gAy*(yTwKwM`=jB!MJ(R}2K5*Gm=oS#Col1t zN=P(vwY?cDFynUUp{0ykOMO%A%a9hivn;|R4qU4^_6UgRTlmx7oiD4obapctBH8wO zwpplyNO4E?`#Y|!9TBQunZHl}HU)Sp;6`#F%D2E63xEK0QB{J*QaENYn){)g;?tB+ z$ixR^QrwVSSrr7tQsKJ=X|Iie+39JU!f4Azr_U4y?uqUq>+ahj5K-1p?{e8P?w>-g zA5K>{`OOF-FUP4IX{nKPUGlyMv0QO~)^Ph$-`tQ$D9oqha7YXVUT)2hlV4V~aim@; z3#&m|8yY$xc|4J;^=H}KNR$#t^((3*@TKH2wq|DS=v7Lh*FzsSzG@_gg~i*>&p6cb zV|t~{qj+x^4ym5h)m4;>Xj$85j$hnqqKJyU)6(eR*$&CZUC2{O{q4^_JI%@R?qpx( z9sYgbv{dq*OE8!Cgq_VM$mV>&aH&$|ovdhXe7UXU_?I9X@3qgds*^M2B=CiWf{LTV zlBv>f92>dw2OP&aKCoFT=!#DD-@Cx{(s5Qjp!V5^``-n?GZjHNgt5#v?FsENOAFE& zKiL{9Z$mGo`L;)p5pnrvr*rkh`P^sMrp%ST6O>LjfjlhrmL$PosgZl#uxnQwjX}YO zai={`=IT|0@poz3t3zpPpmQ7~>)+Q5t>bjPqyf$JQSjnUECfnZqhc>|cX$s<@u_T$ zi^bJdbI*)5Ub|a|`{B%kU9OF0)qM?`2gtm3u(XV}CMBVJ6hoN!$3~?6Gr%j(ceB+1 zlcW~>W&y%X?s;IQ5WyK~1d9e9 z0XM?R%i(Wm<@eoefR&4SbdDWZIL5_M zI}agF-(%wLBiW`PSdy>`s4=V6(h)DqZ36lmjxf5Pd5)j=8 zhve1WZgyh4P05O$-B~m1i6m|&FEDfvR;)h+H_jx8wpKcK5H{8)S;{Zi$n^Ap_CSZ) zfpdPM^=&K^J`xrrD=W^Zn=IA(^yANfv>8<=B1;{6NS#<}QKp*zRvB5R-lyZ;w$8+& z5hw(CmVk{HDspvQW+eUgeM4hA9%@=;#)wmoxc=fy)4h?9jZCj2h9p~qg{h}#1WV52 zTtz$ChMqv}?7F3jw}=;Xy0t<}r6j+JL!UJ}8=^ib^#08u<7YG+;8g`p)Deh20)NQr z_Z~dt67-a_FZU7hU9}4rZ^%HHAY|PQo;zfM|g^5S?vemn>dR2w1|+!K28;IjeZ zWhHW@uq3p{(@zp3Qf}5CITd@|0}Hu%zN@(Jr=Q<%1fcRoyS4({Q&^ zD-*uQTG;MO0NGt5kP<2q^t!3uxx9A4>%*%p0Nz(Hex2Lj&#W5p1)~qnOMx`D7(Vi;cgS?+d-E%lLV{&-u~X#nre9B%*okQ_D@>9g~cUrVOB5evP1Z> zQOeWXp6VKHr?FNCCtyOA{JREO6!gDq#%r;X75(fw{;uCGQOVMs5GlC)wBQQgAQ4L= z=qqx*eY&*_PC~Nh2qa{!sQZVSU{LuV_1&&7>U&8FXdyKTU27S?*Zp#ZsT8B+>Ds;? z@|3Y);u8~JQ;639&ruO4V&0pp3ldX>Ye&Ed6uF#n$i6X(imM2zTbE$?8esqxBh0#9166Gpd)7-9k;pc0k7`N=@2dT|RrRuPcRjRQ2l?v3CsAQ-+_w&}09Rqyx6bHcIj&!flox(T7 zLxILW>j*kMJU|I_25k}Q#ke^wj4`KqPd~~JV^@f%I-6rPN~b~+bITxsb81s176u|6$R%HMyb*9*Sd*80}R%94II8mvo=RE}8c_cGV1wELDMr||wLQufu+Fyk-m z(5lq-gt7Vh^qANdT=F_VVq%ZzUS~;Ku^nR}Fs$zxu(V*?=I|Ifa{jhnfuIwO1Qqzg zC0r@rJ5WJH>Q0~>LP*42{z))}`6Jrk+A*Fpis-&lPg`IeQlUxXB3J8gFO{i;;2x-LJ}>WJWq`r!Np)6c;$lqk zB}(U=IFT_+w*}$}Uz~28x31;2V}_efav(i4b4LozQneHAHM%bDrGl=X+y)zTo^1i` z85ld7lwU=B;{)eLYwl${6$e|5U7C)Z+~7-KhSXzr|Ei2Jln=qQpKiDvJ5_Dfi>$JK zD;9k&@F|XUQzh(?MMoL{;1*khE<}6&3f)`PeI`8rODLxjUf`{z!0}_<9p)vHcz34} zI9c=l{?J%~RyUd~+!@dfkGX`3U_aW53SEfEV6p9$lWIh0i~3xU$Cynp~*Vx`GIv-n3PzSsy< zm*M@exMx7D`QAL_9chOWuyoA@w`zq|$btHb0>{vACicQpeTB)x?4ytUkn6+N6XFnb zOG~BjzH5Xo)l7SEz`;yNACRSEa+_p#!a zn?MzdOi=@2(Wv9wx8rYJbKjIwIjAg^7rZ=v6s){XT2dfqG{r;ip%YY#6YGS} zAA8XaTL39P3g-c^pMHkBpR<~La&2njXVYg4FNpvxCOQucZseuYNWd>E{y4GAulP^P zONN}?U9OY6+^D^dmShHp>W(4%B;sh~hQ$|@b3E)){Y>%67-> zu=A8p;)^>1qfr$*6&gJm#*|-6iiGT zRykv%f>4+DSYl>IPJ_xBY;d&g>xdCU))I9H7+LN0quEujyo=(jOqzywjxhQ^;W(?H zwmt(ul|O{}3#+j?hE^+y+^1m5YBK#o;dhxMUEIA}<@hI(2Sm88E&wxK`&bn)x< zN0x1CO1O;9jqWt0cbvJ@bi(nd%{>0nUrl#uiL#UFtOw|pN1nL0DVDFMN+v6LRf}&h z3T)3HP*b3Zm%a(oKkO1x;(TDMkph|mmik!NsGce}X2;$Eiz_DS@`6rkhive@iNiVV zIMvU^=5W)8Fcc>FlRXU$2Tfhu&&0GvE(LqGzR>`|cPPQN-9ZiG0OXq$)FoZ6yRH1P-P8$^s>Ux12}oPR{>oKbAaV=~Byx7cL; zo>G-5ex*jm^L453QWQ}M7{q~1sW|?;dlRlPY3R1E0wfwq(6# ze>c16w?sRiO5bOj@R;S5d3=@<(_YqvPMgFnSyf#d_d!~Hxc~rZ z4jB``Qv#)MpZyNrhfjz$E;WC&{UMdsr!LVh;kN56w0*uzHBx`@NBFgJaik!5RlTw9 zUEG#fOU*dxud!)c(wKNM{AI)rzncjjgdq`^%!%Sm9s6C^_WIC@7yKesh4g%3RZg8wbE zNz!^vBkJ7Vvh8skqm!jqS+n{(mg3+_c==wG;gV26+}ZpiKn^3{H+(zTRa~*Id_0=C zU*>57fZLBPfZfWt0J?(fjaPx2Q?aHMt#!sJg6^+}ZbPt%ZCkdB0%eRZVG zOGnEL6dYXGyne~AwXdN|1$*?MQd>NwCU3UqfM{?R7l|2?i8Yxn z&VFtK4mNkW5U286=fM(Pv_aBtgYlBgsq(FUr~7BLSsxM#_`9N9>`IS|LXCaCZz z*qeXL=c>A^FYo0u!n4|fx&I7UsBr(xH_F^`b3}bFDGSXY!CD*ykwreVQB5-Hozg$$ z?y_3sL?;w}B!*HmmH}aLE%#2k%3c+$W}esIglq zItMgPFTRx;8D!y-GO2Z9GVH9ImxTv{o?7gUrEkmYhdr(k$N;5u3spk-VrB z)78BlQ#n*gqB&}^*PQ{-F3`(1ymiu&?s|*8K{`vlu)}Y+HS()Ly8xPL>K_UoXh$?G z)x=-VQR#LBDNre%0guK|a17fLgPNL6vD;NT0~<;Vfrv%S)~$APO01hNeVp#Re7x2m z_bvH3RI%Lt@TfT&Jrm}d+$7r_Cx`mWV(YYqf@NMwaHlnjP#Rk@{WCJESm#X*%UnD| zR-*dyvifWys{k;FIRo7^IzCG*+td@fu)uG8Wm-Nq4HA}@!9WmoRuRvU@$myDDhYFc z>~{5S8HN$ByR6-6DW%IgZ_HN2vs8+m?zXPa%zZBxD_os?)AU8TnTyNU^=18MQldem zK71xo;Dba+ojizY%#zcWBFI#LYQMd;unbnfJo4Va1yq)-#+&l~6WTX!j?uahO6Aav zZ6E1Iq!`c3Mw|fs6&IQ$v7~x9ov6W&EW5LqfT_ zlVc0j)kM^eU+xz%d{-(e2KSqya@uShHu5_cLnOQ*GY$d@$(3~hH1emQSkJsBN0Uv< zyF$EWfh5$AQl}65ku&URc`N{%TcAUFSw{oBICQ2H?Q7e`?5Sr-P8tN`7l-d8!?xsJLVanlFIT?RofhG z;F8auP`1X>r|ecQRKjax?iDOvO5qu>uPrkflDVw+V>OUqCx!c4@-_yx>Ueg2H$2YH zPkQ>GNxqiDVW-_Dd!xu&*c?8{orZd+{Y5`KtjVj!g*uJ*N6!9P+&aQBTvw=3-BFmV zvLg?ZZtjAAmdK;|5QLBN9z@3FO8}Mri{o4Fc!_Bd#jO5k>oZeH%P54z1P4MPee5i8z@d3E!JTw1-ntqEc)BU+x=JSZS2ZN6Pqp_%*@QO1uMYN~eXH*O*D%yEX*MOQ~7 zOj0)lbNZEHvSLQGMVwjl-0a;7!#$p%nl``iZz&J?F)#|yW~Jg8cyu`nd@JieubSdE zL;PrS)qGlzx%s%gRLmns7QVteES6U`-{hiT%a2{GcF>%&ou!sM1{5@BkPYa5sJM$L zs6+S_j(t1k;oL#6h;7Arzzs9Q7=%O!C{nuHuRJobv}dO(eF z>THK**{6ZlX*=%=qBeN`yo@NemC>}p(;R=Zk_@-R=OOO1iE9T%f{XU<%dw5E&i=%WA~_yy|N7o@t+5NB8bl1QxtlR>vqiNlj1l6^fP_F^7+M@|QQKkbi1 zqZ5*XFwDdKxcqZ1PMLn9gN@>(UnBkzsd3!!Q13(dOU`R5iIA5ga}IXyeA+Z9%4)_^ z_4|-mz%~qka)qQ;zGr0sX~|ep_`{R%P2g}Dsy(#TC2*RVQx;|5%{ZsMC;~RBXGRv- zq6>NWT4Uy&wma`&EMpLwc0^FT++<;Dj<~RYtF3ljQjx<4W92jP(=}09fxy$Lcm@{{ za~~`&C_CXIS1BEMY*GD|(i{X*Tg$mzLV*OTeM_O3Umy|7<8i-}$VND(x3`^Dh#(Sv z^PPVnL`kPguiFP78j%NO#Ss@~{pLU;9P|G!MNry9F(~;f)ejelsc?W5=`2b5`78C1$o%ebwVEJVaki`!A!s&;N_i#Xp|VW_3K;zyg+x63@s`-Hn_JE^I}4?npX$xoNs zjgSlt`o(7K>)0mGG6d1eW+}tUL{C^#8>WhL_m-}Dwk=}A98zBqQn-RZaOmZ3+YnE^ zLYqy;7*3ZYU8w@px3_Tj*Uq4_p6iiuThtubSKnT;#zCv_-%+9{rOJ0|vFD4iS%qvqJsdr%K za4DXdO5r@5-qF_5OKdRlocKx@weex*(=C<9ZQ_|~Hj zwPWf(pvA|=a3>$aFU960chitRLulPbO}QBN;Tn2hF^;BciXbG~sPV?WTC9IdJ*_@k zNKben-fq=MO)Y+*ZO!zQm2NqErdW$pV=%)3#QDCR?&!r+n4LJ2{n9b^s#(2{ zENn!+7hA---VAqNilqvqd+@z`C5i4F6yAVJ`O=d}OOs{K^Q$Lv4ct4zIhNiMZk#nu zf?KYRME759UfC(Ux8tEj46RR|44mUXDtY^bXP9; zBb6|%RMV!#U%s=%DW9By}9vfub2!0#4BUA)hD0cfhKithB9%x`ZEpp3u#=FXOlOOIaz zle!p!$B|A7q|K{*s{7x^B2q!+sc>y0; zShK3T%#mWYh4I{u$CZ>XS(B7&we9tK1mdyE7qnwwIZ-gL50pWq^#!Y0-_k~ewKCs5 z0}N8w029vKGpE%|jIl+1jgDg9skYUlQ=%WGU$$#db8TErTp8sux*R6D?rgR_ZN_wP znJLv#h2@;obx%|m_6=9=tn);!H6SU)+Xy+oFR9~lSbi>hj+E+nQRDqK1C`f$fGi)E zEY0tWTqck)UfbiBYeruy58k6>m^DW&L>}Q}pEiUB8Rt~83e$Ib+p~!b;tdfhWN)L0 zVCOg^OBa6@8f>&==#HB8V)pE00D#zvxi2Rf<{dfRN^^9Zw*plCZ$x)rGOwl|dX>ob8x-!KGD;`K zX*UL?!X9?Z4L%b-@tLe~290eTf6s%K6jsI9_q^{*-rnlu0OPY$)-MGQZx#vzr!8Jm zR99z1fJ~b3i@J9<_>S+bL=ux%e6%|D?|xCgXEOq7Gj4uMoUE%qFcbA4$?J zk9&*Q55O=G=Trg5#T9>&ga+FBl%}Q$t~NF~s0{*YQqr2`giAOqYX>?7_FzgaO38@G zrqZm=wP^6T%_cKt>c>i2@`~Ge?N7ZhM8ww1TL0se4X<{D?u#lwQ>J;o)_HyqKRG!$ zCE7!GMN-$7*|PDPgGtG_YsIKPn4g#UGpPT*;aC?{K@|_@`(W{5kj_g`ScAnIeiWEG zexo?SAJlB366g5?_lPF=`0`=DAX`Wdwk$)gC` z3(qG%uYq-Fr2Ts+W}w_>tgbA=U8 zvBJ94qO#w@47zxYT)3cKjuqU6XF%P@$A-_kOyA4Zg5}CeriNo-C-&%vr!L;&p{Z*1Z>EWtNZ!v$lxa-78VB^7M@sY4SN>FjKbBwmp2XW(Zw)8y48 z{Vai()I%Z!?@?2$SP5o8A1l6LDo%XemYOh~=_k#QIOdozVv5%~G==eergd9h3>iZu?@>AWk~e~6;+@E#xPzr*XZdSw8E4W9kn_&wW1z`_qK1oLdi7D_iu z^a)Z^25~eEMIQlUaP)uLM|dJfm6IcD4U4Vmo53M7DrQj(WNj$Dr#DkpSIBCt6`~O~ zSLyE{+ecg5I|>Cc=1ARvCdtQAjAS(YnNTc!gsFev{CW=}KF9X6-J`pC2=rU)P8N`^fhILgin4H_(Dq$8Gm5GF;i#k;SP7L*$xV8Y6209|jB|0`(n z0`W^+;#7ZW#I~l;A&OJXoRo@123gIs?&KMO4#-oH-)z|J0=GcE+BT_GJ)Fx>-?}9E zK9T#)$g$D|5g0)=RE^zupyqN$G!qVBV1=^WZVUH#Zdqz7Ezjah_~8< z*^f^|wk_H2Rkv_{d|6#o?J#?gb$!%ae`JCgu@-)3W{=r?b?7WsKcy{3B}X3g`T`t% z6i~Sx|L|4Dc}_b^u0+akcJm>g>9HgwFFG?<@RsgLYj+17fU+8OIk`moA~rsl)|@k; zQ!I7&?VwuR9P6PGZqZSx)&BhiJ+o%*iUq8W02o)h*oWsg6QjaIq9U=Ihz7{XQpbU7*Q6dDshLRyJ0GD)5PYcJfM3?G_0DTw7@SJ_Zb0h!jNOP19*4JIv?wC6)XNjKOHr7WydU>Svo?Y2e z4f2eb+;K>`AXNHBQ;g)~La4K3V7#{tKcH&ag`)LxQvYZ9qG;pO-YN%y<|k50ISR4V zY8%E1m`(-iXK*E65b7SJ2m2eHEylXQ-|t+g6pvM@oj*FKFS#8mZO*ErT;~t;lmc)r z2`Wl&qF#)D;JoPNDmtIXRx1kn3wA6=z4_mFTUnc zf6n2H<2z#euD+9B9k&Y>0beRDvdUFEGlkqn>K2U3U5G~r&tm$yfN=Xr(19?) zBfG*=oRCXDPFxds=F8bjo5xJ$2Kg#T_7)X)4+u)f*OnLIvC8_vr)0XA69UVKq>*bD z_M5rVoF8;u(2SG4vF!RhH)#b0&XLeMrN|FOXFncfDt$vY8C<7K}Hq3J;)4-mfB8jVbvA3%^Ij>87s&Hlmu<@6v|C0AMx$jvqot})pUsIUTn^%+07?nX&>hLU75-3{wtnFNO#D_~>R`DHf# z(dOE-%kU^3KQUos{N)c4+Aa!YE*L!M%*#*dt9nXlG7&^5O<0IuSL+}q|Kj|#ZD{r+cqs@MFWIqX?a`cJ+6Pr}109G*Q_1bhn zV_7b@e90##_MH()C)_k0LCpBw09GBHsl%E^lG#EY4xU0nz_xYFWyMAsCYfjGTxdFR zn&BDrzUWs_@?mS`8dumWR=%}9!)MHx#f-xRKo=MRD;#*85myaJzxJrE&? zVFZK_C-!L^NO-O~Vv7C$1j;Wp(43rA{Wrt9wxM>G_7?vDX_=euMsi0zPp8(hzNXqO zTNwr8>Dfy}2_alGjJuh#dW?<*dl$h^1YF%G{3P1rY`17$Ras-)O5*{!{{T2O7l-~6 zy^Yzq@hpc>x3vJn6}kCaJmJsY!1Pc@zgqOYcUiliLbtN;?AEq~5fd5m3ZPJSq7K~u z0ETNw+~TV^y$nC?lcU_owozQ&BbJgF;)oK5IVE$99G(a#k9w|}{C81C*LHUjZY(Fa zlne%LLYB$r0Fn>)O*>Nfqv1PkJ{>Xb#m(#kXWGnPD9#IEdZ^DB`e!v)Q@ywvly`G9 z0^eYGtm8lfC<6gbai3Gxw~eIE3X73$MdBImZuHxGVia4#eATx?Mo&4(>(rhB?~3Iw z>?6|;nD+6OVT^EImWFCFe)Y?d=mS{OW4gT5?wU3Saz;p3IpDTQ z=K)6@F;=YnC!yO$Vp}GW*@oV7$BgH%ABUwDz9G81)F#oqF>JT+#ei-mO{g)zJY)X= zu6eGa@))#_4oiD`G&5hx30VwdY6H+HB=A2hntb{LjMkStk5x-}?{6)v?cO_xst*VJ`9jty9vNLNy8n@2NGF9I(pZVXR6 z^XuFH0M?gRx0cHBTwK{hG)ufh*~sLbxg2Mw6>CMQcbC{y6&oq##$+#q=aLST%$4)cWvSPMNc1e*V^Ob`JEI{D( z$8ME2QFn>5ldT6C?tKT~WMuezr*8-eyt-l&pvgml^rE5ocPE?h+e~s-Ci3ecPXm5@&t%?+w2`#4~CA93wg^$!93CX&G= zfOwM4+$kBEBpi;Pcb~$(hffZ8J}AU3pu*s>B}*~S>suNJhCDk2i6))ln>coT*&aNV z`V*RRs+QMZPy^JnoX(!XOE1&m>91b`i*0h`9WES>~5^4zd zTSyCaY`_wDCn2%=8v4;8D<04zQ|K3psXc|Y)VnWiA(Re76|B}JUt?M2^Zs+=Yk!2k zHMopfSZW$!i+)t@U?WrLxb?}cKlo>l7c1|d#5T~v!*flw(S|uYP;$o~O8WZF%Ffgu zv)V-f&+s4=+qiAZGd-}8*$U*Yat~@x6x-0!I1X6dy-$F(e+B5)+Q->^J~clS%?}ev z_HwZn>4gYMVcR*!)}1Zxuct``qWEXYx<}pQ4LlAM=KyW(+@60b`=-*tpxU;!Yi}4m z5dwfdg18SCY1+1@;t%wVJ60B^Rz#K*`7jr_&!{*)^`vS=-$NO~rj4I3&8v8>(@bgC zM2AXikYDXH$%5pQ&=c2!J*vNlCHR4_r`WBoh3Q_2_Jj_+b-_75TJ1h3Xg(&lx@{2H z-pa10%5Vnk);TmJy9ib%@3bKOrh^?!%k zRMReGOY4i+C4L2@WH1Eu8-{Xm&rh#jdMp0`hng<9?=G|F4M46^U5l0U-ReI|o@lR$ z8>dzO01f@;%^nxm?EW42e%R^uQC({nB+f1+Vxb2rGNAn4z@9lh>qh6rH(IsF+O=Dh zca-lfkCTp|3iUsUp9F5aMGdprOJi>}lx8$|V+rOiaswx~JcHk*c%O*AA9%aNQF&UP zojb!3B_@k68xN@I^fciZN!~k|)}2mUO_J)GoDxSAQmpKO{{VO7FbqZyT<4B@R`!OP z<7fuKaDx39mt~LHKyl)c$-D>wwDZdOALBc5gqLd+(a0hVNSqv zfI1KHu47Z1SJm(A=d-tg?`Mq1Dy9O+M^-pE1P%$~fnLq=hef&Y?U07!S+|qz8;F(E zh5%!Z0qdXAyuxiuPPWohNMmz(91^sV-YaY^xD0?XoMd~KS-U1+1S z{J8%B8msn~F_ew4nES+JpRIZ?h`t-?+HRa)9b!AFkbLVOV_t24XDzIzJe+5(DN>YG z&FIyoQS!%fsednU1n0MhNS*wC@?wXcZmzqCHdYn1)s#L(o*f4WG( z11tRNH&)ge?j{}~XhO#mLvIbevp1J6Fu6G)MtkG&tzBDLySJ9(PSY;ow6TUEzvSeV zC-}Q`Jpep)t_J1-azTpDR})MYS!Dr1=bQp_z|CBB)sa&1(R|Bos=?v!40%z&+McO) zN-ejSlD>rJsOWG%i|Lxe)BgbBDZhcBNp@V`%tgeq06e(Yjj{LOo=V_k<0qQzH4S1f z4(pLy%M6#Z%D!EyLywRJT=CN-x}W4a?paANv@>3LeqbBrC4dM|ZhH??=|k?pT_qHZ zzXb;rGEyRsA=?6)_3 zC1+`6qv{&#sq+^w+OFT@#xfT^r@v~+wz0IfyL7&ZFYgN+1A?oxoU!Mp9Zg-bpHYiT zTS0Cf^HQ8T+o0TIkEuT0s$EYQM78(X%T z=2v@LsET9>B!(pb6Z|>kw`0NMilcX7BrsxYmCR%y45eA~j0_*g^R2B;;6l>PBv#SI z96nXNY}-RVGD@$f_=c7j8k@d6-~)oT@PmXP^EqrX=+F~ zy}Rk#l;VnCg)P6~UXP1XZtSeu0Go@^sW7J>8!jzcX=JP)yu(cB#Q;825AbZAy6I* z9AIa;6`wuy62rzV$?I}RtTgyY^6cYMJL0F?2pHLcUTB)_)xU;yHSn$Hh_$_H;71Lb z>eh0`kV@xjyAu)sicaV2!tu!&#M1m*t=-yqdq=jh*6sfQv+iNF)b6Bal1U{wau7w}u!E$ZA|#SpnmrjN>0kbJQ#q4OAm zLMSRvMa>o;G3^+O`;>%5{{TGBE6e^7c)+KFG#ETbeXCEYYBMx2o681?{{Vw%&OUHM zq23E;apwxy^!i0^MLor=1Ls4>rDN*)#+0R^xwX6?uO%ca#yyx;rQN8QkF8|tdJ|nN zgugA*9jc>lrZeX;^{d|q!Dky?X*V(A2fFFJ( z>+f1VFYxZ7LP-#22)N_5aqnk!9ok2A12*0>w;!!;mzm7xXR19L!=57Wl$UW?TIqLD zx)0sSaNc8ckK$%6T{fi_lMwq%wr?q8gSC(H&3O%`n|l_u43?JD$bq_rJab;Db#Hey zxQs^GEBz{E6q!`&IY(mEwE9iNLv6c-`?w_W`qLgQ8rDL7$1VuxF3h<46OYoUY5HcN zADO){3uI*0jmO!oU|Fy3;kQx2GB^r-vT7ZXqEeF85FZZsT5GXzG)r+YAL|izllX&I zq0#h+W7`#wRqQvP@vJ-F8hBet3lH{^Ox>0roc?2qmJb?ecRFp&?Y+ohZbHb8LXb~R zdSkCX)SRSRg+8{p{{RzsAHn`4jy2abRJ>Th3K~~jXRqC1Tt&~r&xH`kU{3?Is~Z&r zT{u(jGbqnm(baru6t>PMxP}8g8lP!(q%uK|Vj{$=Ie9~20(^2~c7ke+bqWUlF_)k9$?@w&~ zreFR&OCE#!J(uI*)!-wcH&Xuq@#^KIPcBwn+koh4>(-gCL)G*o_)(=KI(3hO=dp!y z5rl+*4p^PuVLrX{TK2bJ4el<@s%UNmi-PRrD|4J@f4+Yz^9VL9YGYzsXe1w8Roi>r zNf<~cae#SpIL$W)+`&{`k5akNJOcMI+&_m)N|-9kD=s*|==dZKo|RHB3;Z^<)MnLF z!*ZLp#_68oM{mO}arkxVTq0|_gl@8ZrJRAc2P9SdU1IsrywFQJImuM$N7uDNg!`1` zPkS95&Y$qpQS%n(!m`MPkIc^4d=u#Y)dAB!7NY%}_+C{G0A&+D85rmHo|zSoX=QUY zp}D-cp56eY#Tm%PIv%x|d2_RDHo?f+3ou-gbDWd-R*74wle2p-xa#9?hL-oqZEfKh zn&^$EXWl?hLdE_4X_~wr3Zg$|x$xY#CFJuSF*C5;)8@>W{5w}3C!QvDw-PJK%#yj} zlh>b0sLZ7N-#dEtsdrsXqZq!3>$Mm@6JEw*x$uSCsTkUmy8i&^G78VP@E^em$Z_!Y z;J0A+Qk?#B)>XCiuz(R`7#()im~}b4&CaU83<1!8k7_x*$L#I0M@<)oeid7lxK9OK zA$9WAy!X!EKs?O;RLxVvzX=SG++KJ}cbN!ej9kgV9mwj(wsLU1$2MR=F(yK8=aGhJLQw8qfb z+mA3IDo9h_g*Sa$H1=^@Bx?K`IrvMZ{{YwZ-}8=&PlF%wNc6Az{=5Eh(OI)Y)}i>j zXW;(;5#H!JrkO0Zf^#R@AaGp+V>v_AeGPjZzQ3hi_)R=R1?&l@wXp}H#tS@jo%-5yTo1&_-EoD6Y92_F}Sm|FJ!j2C6S~mLhtheWNs_+u1jYF zoKtUpB3(n^&k^d<_-5kURMF)S4KeOwX=HYS31dHa5BYeFN`g*!892|Dcr)Th!n@0> z?+0A?8sZsb^X=}5vPB+RM%%N7-VO@^fu2XG&qb&FPWVmYd9L*-JTD{5d2Y9Na?NiK znJKrm7eQHf?_#Kc0#|8dUU&wfqp38`&*9gLHJ=f9n)VGw$}0;idoZaPi!UY2cN1IO z9pQ?AvO+*!NeqpiNUMJpd~lu#wbPa@K1-{;PUKs_RYRmag7Qe9`GplXxhe<&ImSkL z{{RX2v*Fi^ESJD`8YSd9d9+)UgY2%cE+mn%vPMV@8Y1D7mej{MSf+G%{%{xpBDWl88KhN=`TTQl2Clkn+6K6jNi@-0gKoK;M3XbR z4cROEkOA&yi~HPR_#fhR-nS*pT8D&nyH&S0vOUC5EUF`l@=JKr%Z;8xBYAC+j;Q2( zxHa8DqG@nzmm1`Dh;=K7#7}VKvxvq%MaerCfJ&|bJe;0tzLDXL2T9cKH9b2|OKY2! zk>+G}+RY>HbGJJ|X2~QDr25hsjj8z8%+jx0M9}<0HT-avfhW-JV^Z72}a*dv=Rh5JrkKo&w_>`cMau zY2O=lo39V}n)!S?V{<;3e9J)%+49;pY$D1^?v3%a$zZA#zG8$CRxkc4YiHrUhp$;_ z+H-0eh175#HrnYTlr%+)L=0P)WO7H!KfHR^s9pF+!e#jV{|vk_)-*ZEil%3Qv19gsqpsa#1>i|g3AT$R&tjrn_5`ZrqnY0=X{a>021UsL5!XM00#U)@fNS3=sJzv zmXudj)nl=Z;g~k$Hu6YZgmwtqkPW+!2a%fT6XBPEmrEL3XfexU=Zk{`)5|Iu1VRwR zGaQhB0iJ{cFnOzs;C~ISh%{qob1jlclEjl=&m%&}Forj0EglC0X&vcYEMxfZ#9k_} zy3;i66G_rChFKO1HxGBllNQvu+C2D0{M@Ch8)RC7ZKQqbX@Xw6zJbiVeMd95PeUb?8CYiMtBg&RZ z5_A+VqYo$kd9fUXV+Q=enh783TMgcfLuh#@HAd#GX z8+~P?-fH%`z22LhLeOo7<#MhUIoe8*xpU6bk)G8RzMtW%N$q8|(e168(phJKLk7i; zNdXc#RRC@vkXsqSKBk3IXdNm~sq@a0;qMV@y50OYUK_m-M|}3MNogMS#9>xXF@P$h zKH=9qV;mahyc6*s#a4RUdIgr0sSVDl4X{a|V9^OKHf?6zg5YjLfClAn?vYA-m%=1Rj%Pe5K%F?l5tOMpoW+Ac(V^yuR4+cTz7&MKBOW3cSyvZ`tMEm0; zmd@33SSQ`dCmAM=c|L%nO?{)sUi;!+r{Zbs4~Ah8+FgB;W`^X*B9Pmxz&FYOU9TU^ zd$s^3uzVyuSK^-&Yj!``)-lDVO0iwBxnk)1rB>r-JjQrCc;}EseIjAd*IjLSH051I zqY=q)q^XfWzzzoufxsjZJ5?r64MMuIzMZ@KT$6sz?8abIW-?Afh2SW_9OD_Lr27#0 zKbZ2He*tPYJ7zONV{i(xoPs^8tk66IV*@K)#%EwT$>O@bFH+ESeL5{Z!p)<$i#r!_ zbIBx$5eNb$@Kx*zx}W-x#ZmOyyDcD(Vm6$+8~BNj=vi`BqKU zw};RAn|D*~A>;F_(_BH4b|ZZ%liynJ!@-}#Rq~=EQe6zmt*k-JZtLt$f2BZRAHYsM z#cqA4P9yzBKN<_^?mp@Kzrv-#Golrww=vS)jxclhRhxTcR^2OP58?HzW-CH-9L%TQ zk(G$X<$p#8n$5u3R=IOWyqYW9Xw)c-%D*Nt+*g@?)cU=g9~URn?&KjF$_>gv+Cc`r z4@*{EPS_A}=O^VFs=v97B*~NVeX(iD8ntU-e zoEHr^)11c@s8*1+7yyC3Qge>Hdeyi!6#JaflIM}){t)m$u<;TbFB$k}P`&;9GQg9{ zCYUr~N;cR21ywl!9trwQ;ZF)drrQlR)5V?^j^=GTXf7vK&zWx}xK)rZRoa_dc6ki> z;ei-F2Jp{`tbAJ9uBYLxN-wmn(#}@FS}4oKwOLhMWES6*zyLYNQ;R+x@ZP_t_+g;A z(Dm7+n#ST3wb`|8=Qe@_lK^dC*kQrQ+=TxC5eY=q%^t__v%(ivemA!9E|2102x>QJ zYU$)6$OBu*%vL~7Sjo9c`J}c{cH^n9VEBDyb)@O{cGou=e6Y)Xb9j$!GfDH$aU{|y z%7K8=V0XagzD)2wkF04vCzn#W@XoCyGFV(&VXf6v~6MdY0s!_%R00-BeewE1GYxi075w^rREFxso_kH_AZBOkU$ zpudZBHMsIk)93r%Q*He5PP_3|jc;rx`%6k2g;?Wa%zZj_`q!S_H`=0c7-ilu!BRNq zBfsfTOQzYSxk*IvF&HkPm=pB$>Dr$n7q(|!-aoevJk2)d-ZIz^I3Q#22COHJw9_a@ zf?|h{HYQh0`e!|BimQY_IPjz2n9WhtggRZmb4;Z5?R{^lfekT!?4ye-uQK`n)|bxLuY9nBtpwrZ8p50UgJ+-TOUI0StwI)4v9#NtT@<6Guc zJwP9gF`YmCMyX0hGNlL5Jy=RUO0>^ofKL~;K0Z*9*(`OsyCCCjoY{OR+ueT+ka`EmfR_5K2j#R4-#8o-hYVJ;*#b}>$ z9q*w@?OjI&Tk)vKbm5VOTm_15!Nzf%Q{jSHpK6SgMU&XL)NA4)(w&Z@YtQ_)Pv$Gf zzia(Y?#JVl{#;O8Mz%KR%bGCj_fKl~I}3YAwHt9Xz&MqDRb2C*TJj&-&i?>Sw)nw3 za%tvkzp%mk&A@O}(Mfyzj=cW>b$(mwOW<8ebzg@%Rnpj7SpNW|+^3apFuZK%9;S+K zfSF(6#+K@(LtR{*q~wlLio&nP&Z-XdqWq3KY7|-zYqA1}omJ?-tAUZ1C0G zvc{_(nWFspuQG!SWs8UdL`Krf-{7bGshfbk=;u%mKF5#`GYw1|b@z{kift`WF z<@1fiqw;V~bUqXDowm2*d#x(xLGY5;z_&9j_VD>)NaKrokk9LtB$en}fsSigvM6%E_ag!qLF!$8G^uZKDB*Zk*ucWYgxby_Ytu^&J-K&BMCE8DrVkJAKKi zwR<}aK|Hd82}%C|Sc(Te{qNq*ZX>j8Q3~)2vqg`S?o7A>>Hd4wG|aiW zniEFosF5<{daePgw+ynQn~l-#8%f=`cEK3vaw@c!Gb}_I5;+5Ks87xBkH(}9@x>*` zAh=$0$j|bn%2ze?Gj$PlZmS~_Q3!3oe8GRos>0p|m`+ej&VE+G8RMmHLnD2W7JSIe zbIK9;8qU;wt01yj$FfB~I*>kKeLcRlNQnsq!qG~JccYxKcIABqO7h7dM?#-Bsps?J ztHr6?%nHkHfx9{mNymDI@sLTl$_lPNRXub1=B33jRUC9Rv|klTWqak#aLo>OlqWd) zS7UABM3qCVYqK3o@@vX2UO6EF6OeMOI6s|MO-AN3DoR zr_r-gF1DpIGt;@R9$j8Rv?PxnJr7#dvc0@$4Difde~2IPr|gk06D7Iow)%mXe5wfg z)a!X5J%IXGpK1Ejswixu`<@TuS~l9`jNu)I4?~)VNYXf)osqcSInU)to@=+?P(4j^ z_S&jU#RKGLtzM4dBae7yZh8)tJeD?9E^R_!k0wbsAJVE^>T#o#Tme{fYBDo6I0L0+ zPcyM4pB;xZD0c^2OGMVb)nxMu1|fZoMzb`l^SC~>&);0dAKrYE_|+?oQKO6)q->7B zWPUYPGS_x=*B2J?l8#gp_eeE~sA}J5Zd5v+25S;+M9;*5PCJUPa%7nR4Y@~5^{o_1 z=53nuYWD$9n^O>fy39UPSFI9jm5xC6%&c%(N%>E`V(EID#R#&!K`p5`D&NEI4{E&e zHl1=BH!o{A#z*LWqN|k(QfZwDu)c_=*>2-(jQosG>E5sDl4`!@3DNJGYYkLUC?*LY7=`*$sYFyY7dsvIn?RA+W*&*i`F?jc@!WPd8oxzMfV$cuDk zx(=eceTsXt23n#Sszdz`JVlA2^vO?1l8W9KLQD+>DI zC3kx`nkZL1_p4qj*T1zc1UBf&XrFX+EPYL7x&Ht}W!gvw0|Pm#yC;$lTmZ z45SK~X&|lbvMQavYLTBzit@kOr%p?+j5kwA z8CUF3F7Wv6TG9B-aZc12-;?JU{< z0G@s5u6n;4JFxEbqv(0(?E|c~o$*Iej9c(RH<%6yM9CsD-pY0Q9mmd+Xi2$AI2=>K$C&TZIUIEj79_W4<*0f!6=4~?H%VQL2 zvvyBHBvOA7T`m)pBW+GUX+jkw-j83*siFKW@aC0w1=gQ?ty;?gc8I0%+J(j(g(Cwa z1E;5;r^oQiMT1LCF5df8TS!u9;~!}Owo02MLfdyTmB7Iye5=!F#`*Zy@RenFB=GLP z8?Pl?Aa0r9dHLy5+x%hpOE4~;AJ;(dyJ-Ia+SMM;U&;==Kb;&y{5jJ!eNk_%Z?$Ny zer>aTr*jb5%92Mbl1|gcPH~=U{*$H0rnSLKn~99?=0BUa?{{yNM<B z(eUTQ4~IS=wHJD4!#^0kx#eV(#S*af8?J^&xT!ov<9~-b6d!26_-*3T7x&?4r2Q7; znxx-DIm(;TOrX~jJba6d`I|ia-pI4VdI$9x-^iiVE+K$ zR|2lf@dM%HC}VGjJ~4DXRS_ip1;MQoeT*cax}u_Lu8LKoj%}ypBxH)Nx|H_rvP-<8 zk_2jSKN0?Us`oz@{tel<7aj-kY!BBD9?~)G=kZzce02C0#nw*;c&LJYV}(5b0N_O$ z_6Wu=W@^c-x|rKz1yYp@x$On#HkSQSBi-~r7%9f z={0UojUNM6;uvJ`e~Hww`3c*B{{WK|d(T@AP=e91o?&9HUuOqzAoJ*bsm{#D=6+97 z4+fC@X!sfoyZjsCb!f=k30`yGi=Jr@#@~UlPO<+0!X4s;-S=Ayf_*>Z-4N-f z^kk5~mIAYGOz?A6FB|uY}2S`{kZ6Y(C=)2Acb_w}S(w#?_NNjIdI_3|!FbrjI;kB289RF<+R zaS)K7Q=W#i?EWo$7I||Ig#1PrbCO5@03WRe_@D5CDC2+lMm6j{vCuV$NC1-LcmDvkrnE1gWH5 zCP(o$fA)I3y5EP^SmRqOkXU467$0Anvu*Y|V;KJcGC1u+!Wx9cJagNR?{3K3{x!#I zc9LoLA~5m^7a~GN26NlgSFXq6j}A#4!;3r3v9{OFIr@Cnld5aJ2)`!U_es2)1Rl8S z(~$Y5xw{Tri|rm`X3jSwDwUHQ7U*j((+4VCZQ+sBb2q$rMk7)W7{A< zEp&Q6hP4UozRhzH2zgR_S8=DXiR3Hk*Rqe6U3@0|N zo_c%>bt@}0@uC$clCD0Oxm@|$DHB%TV@ki~4? zc-?SLFi#?&)P5@bCbxm4m%{!bkS0TfKz8HQ`PltyCq?+}@MiY=>=ynN@hnc+Aj*lf zkTd@PJx?pzVEV?2ZJKhnH|}rD85(VxR%jqXKhT8i&H& zF6D%pevl(#aK`3Ilw;@#&q^i#09yY5?;342T2WR;bHUS_ZHuUUI2PeqbjScKH~pG7 zl=b&HA79e5HE#$(r;~4C;A`9Ra)0HZj|YxUbI)81eifxfQp8Bl`#zTE6EA`mEJ!{R zOC$BdiAeor=kcqTUInvQ65_+*ZQ;0aow6JRBm2sD$I#}wswsPIZ(`OFC2nSO*S0?r zuRN%qOVnYAF2ax?L<6wEKDez*4-I&gqJk|_!s6-(j{H0%usFsCJpTZmJJs4Mo*}ie zGLBso@65()nl7<$72(l!RhSaLyFe2Fo=E+A)_CxziBeT>?CYighQLna@%R4#J+$bk z_RQDnQSLZsdi=3@Gw9OE6O5IXJ?o!!HP7px3$1Qq9#@7hZSEvEd2E=*JBm?hibV^X_Xu!w(-c1~cJpOC*9Y zy$9!B<3$pz<`THyyWI1wJK^_=ql6al)%w2~1wZ=ra__+&Eo*p!_{{Rf>+PcmpxVA8^I!L_cxoRkuDpKeW%BjKV z+3H5t<0VPJYZmNUht&m3U0$k`Yb zQ0TL@!q1WkRRm!56~WO~u@Xc)6dzN)weW;9YRRZccp)mKSr}wEHRv86he*?4!(2qq z>$Lv>g?JSe6RRoi%_!k%(sxMuSNmU1{{WwqAAzI$S4|-Q0HvqoYv!se9#ga0GwAs> zI|2^d&@=2!Qo6jiWjk+`iR<#8@UNd}rj?AQx%WL6#@Z@tFgil*9Hd}6=bx@SSBYz% z40WqXS?x5(oU?As37&_F>L{+5VkH%8991w7o4whKRWjMD3&41p;WMHlCo^_D_@5mJ!lqbd^voRKvj`M zU~$}a=hn8zfjngla!R@d^E;*hSiwAW9PkZ#6%}h2CD6`!bSCcGBJlp5scC)-)9tle mS?#Wk&C9Y(L2MnEJa+#83MuW{isqELn`dn}C`CndKmXZOvJxf$ literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/UsingVN.jpg b/docs/kag3doc/contents/UsingVN.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0feafa47fff2b31e255a747af3281b4325da459 GIT binary patch literal 27489 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 S6@;HN<~!-f*~LY4KmXZg2)6nF literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/Var.html b/docs/kag3doc/contents/Var.html new file mode 100644 index 0000000..51b8c90 --- /dev/null +++ b/docs/kag3doc/contents/Var.html @@ -0,0 +1,313 @@ + + + + + + + 変数を使おう + + + + + + + + +

変数とは +

+
+ KAG における変数とは、
+
+・なにかを記憶させておく物
+
+ にすぎません。
+
+ ただし、KAG は、TJS2 というスクリプト言語をベースにしているシステムであり、KAG における変数とは TJS2 の変数そのものですのでかなり強力な機能を発揮します。
+
+ ここはチュートリアルですので、基本的な使い方のみを述べますが、さらに KAG 内部のメソッドやプロパティにアクセスするとか、吉里吉里の機能を直接使うとなると、ほぼ泥沼状態なので、はまりやすい性格の方はご注意を(笑)。
+
+

変数の種類 +

+ KAG の変数の種類には 3 つあります。栞のセーブとロードとともにセーブ・ロードされる普通の「ゲーム変数」と、栞のセーブ・ロードとは関係なしに、常に値を保持できる「システム変数」、一時的に値をおいておくための「一時変数」があります。「システム変数」は、吉里吉里/KAG を終了させて、また同じゲームを起動すれば値を保持しています。「一時変数」は吉里吉里を終了させると内容は失われてしまいますし、栞にも値は保存されません。
+
+ ゲーム変数には f という名前が、システム変数には sf という名前が、一時変数には tf という名前が与えられてます。
+
+ また、KAG ( というか TJS2 ) の変数には、文字列でも数値でも入れることができます ( 文字列や数値などの、変数の中に入れるものの種類を「」といいます )。変数には(ほぼ)自由な名前を付けることができ、変数の数に制限はありませんし、文字列の長さに制限はありません。数値は実数も扱うことができます。
+ KAG 3.x からは「配列」と「辞書配列」も扱うことができるようになりました ( ここでは説明しません )。
+
Note
+ TJS2 の整数型は 64bit、実数型は double ( 倍精度 ) の精度を持っています。
+ 文字列はゼロ終結 UNICODE 文字列を扱い、長さ制限はありません。
+

+
+

変数として使用可能な名前 +

+ 吉里吉里 / KAG では、変数はほぼ自由に名前を付けることができます。しかし、自由といっても吉里吉里 / KAG が使用可能な変数の名前にはルールがあります。
+
+
+
変数名には半角英数と全角文字、_ (アンダーバー) を使うことができる
+
 abc&def や、a-z のような変数名は使用できません。
+ final_count のようにアンダーバーを含んだり、主人公の名前 のように全角文字を使用することができます(全角の記号はすべて使用可能です)。
+
ただし 変数の名頭に半角の数字が来ることはできない
+
 2friends3com のような変数名は使用できません ( 全角の数字が先頭に来るのであれば OK です)。

+ これらの変数名の前に、ゲーム変数であれば f. を、システム変数であれば sf. を、一時変数であれば tf. を付けます。
+ たとえば、以下のような変数名が考えられます。
+
+ f.flag1 sf.username sf.playcount tf.i f.enokazu f.変数その1 ...
+
+ また、初めて使う変数はすべて数値としては 0 で、文字列としては '' ( 空文字列 ) という、すこし特殊な状態にあります。一般的には、変数は最初に値をいれてから使ってください。
+
+
Note
+ fsftf の他に kag というのを見かけるかも知れませんが、kag は KAG のシステム内部に直接アクセスするときに使われる物です。
+

+
+

変数への代入 +

+ そうしたら、変数に値を代入するには、通常 eval タグを使います。たとえば、f.flag1 に 1000 を代入したい場合・・・
+ +
+[eval exp="f.flag1 = 1000"]
+
+
+ + とします。つまり、変数名の後に = を書き、その後に代入したい数値を指定します。
+
+ 文字列を代入したい場合は、
+ +
+[eval exp="f.変数その1 = '文字列'"]
+
+
+ + とします。つまり、 = の後に '' でくくった文字列を指定します ( シングルクォーテーションとダブルクォーテーションに注意してください )。
+ 文字列用の変数や、数値用の変数というように、変数に入れるものの型によって名前が変わると言うことはありません。入れたものの型になります。
+
+ ほかの変数に内容をコピーする場合は、
+ +
+[eval exp="f.flag1 = f.flag2"]
+
+
+ +
+のようにします。
+
+

変数の演算 +

+
+ 計算をしたい場合は、
+ +
+[eval exp="f.flag1 = f.flag1 + 1"]
+
+
+ + 等とします。この例では、f.flag1 に 1 を足した物を f.flag1 に代入しています ( つまり f.flag1 に 1 を足している )。
+ exp 属性には TJS2 における「」を書きます。
+ 式には、*(乗算) /(除算) +(加算) -(減算) のような普通の演算子は普通に使えます ( 数学の式のように優先順位もあります )。( ) カッコも普通に使えます。
+ たとえば、
+ +
+[eval exp="f.flag1 = f.flag1 + f.flag2 * f.flag3"]
+
+
+ + とすると、f.flag2 と f.flag3 をかけたものに f.flag1 が加算されたものが f.flag1 に入ります。
+
+ 除算を行うときは / (スラッシュ) を用います。
+ +
+[eval exp="f.flag1 = f.flag2 / f.flag3"]
+
+
+ + この場合は f.flag2 を f.flag3 で割った物が f.flag1 に入ります。
+ しかし、割り切れなかった場合は f.flag1 が実数になってしまうので、あまった分を切り捨てて整数の結果を得たい場合は、整数除算演算子 \ を用いて、
+ +
+[eval exp="f.flag1 = f.flag2 \ f.flag3"]
+
+
+ + と記述します。
+
+
+ あと、文字列同士のつなぎ合わせにも + 演算子を使います。
+
+ +
+[eval exp="f.flag2 = 'hoge'"]
+[eval exp="f.flag3 = 'une'"]
+[eval exp="f.flag1= f.flag2 + f.flag3"]
+
+
+ + 上記の例では、 f.flag1 には 'hogeune' という文字列が入ります。
+
+
Note
+ TJS2 の文法は JavaScript (ECMAScript) を参考にして作られたため、これによく似ています ( 完全に同じではありません )。
+ 通常の算術演算の振る舞いはほぼ同じです。文字列の扱いや文字列と数値の混合演算もほぼ同じです。
+

+
+

文字列と数値 +

+ KAG の変数は、文字列用の変数、数値用の変数というように変数が分かれることも、名前が変わることもありません。
+ 文字列を入れればその変数は文字列が、数値をいれればその変数は数値の入った変数になります。
+ 厄介なのはこれらをまぜて使うときです。+ 演算子にはいろいろな意味とその使い方があります(^^;
+
+ 文字列同士のつなぎ合わせには + 演算子、数値の加算にも + 演算子を使いますが、文字列と数値を足そうとしたときは、どちらか一方が文字列ならば、片方の数値は文字列に変換されてつなぎ合わさるというルールがあります。
+
+ たとえば、f.flag2 に 'hoge' という文字列、f.flag3 に 10 という数値が入っていた場合、
+ +
+[eval exp="f.flag1 = f.flag2 + f.flag2"]
+
+
+ + では、f.flag1 には 'hoge10' という文字列が入ります。
+
+ また、どうしても文字列を数値に変換したい場合があると思います。たとえば [input] タグで入力したものを数値として扱いたいときなどですが、この場合にも + 演算子を使います。+ 演算子は、数値にしたい変数の前につけて使います。たとえば、f.flag1 に '20' という文字列が入っていたとして、
+
+ +
+[eval exp="f.flag1 = +f.flag1"]
+
+
+ +
+ と書けば、f.flag1 の内容は数値に変換され、再び f.flag1 に入ります。f.flag1 は数値の 20 になります。
+
+
Note
+ + 演算子が続く場合は注意しなければなりません。f.flag3 を数値にして f.flag2 に加算するなどという式を書く場合、f.flag2++f.flag3 という書き方ではエラーになります ( ++ という別の演算子があるため )。スペースを空けて f.flag2+ +f.flag3 と書いてください。
+

+
Note
+ 単項の + 演算子 ( 上記例の f.flag1 = +f.flag1 のような場合の + ) は、文字列がもし小数表記を含む場合 ( 0.3 とか ) は、結果が実数になります。整数のみを得たい場合は ( 小数点以下を切り捨ててしまいたい場合は )、int + と書けば OK です。たとえば上記例でいけば、f.flag1 = int +f.flag1 となります。
+

+
+

変数の削除・そのほか +

+ 変数を削除するには delete を用います。delete 変数名 でその変数を削除することができます。
+ たとえば、f.flag1 を削除したい場合は、
+ +
+[eval exp="delete f.flag1"]
+
+
+ + とします。
+
+ また、clearvar タグは、ゲーム変数をすべて削除します。
+
+ そのほか、TJS2 で使用可能な演算子や math オブジェクトによる三角関数等の計算 ( そんなの必要かはわかりませんが ) などをすべて使えます。詳しくは吉里吉里 SDK の TJS2 ヘルプを参照してください。
+
+ , (カンマ)を使って複数の式を一つの eval タグ内に書くことができます。
+たとえば、
+ +
+[eval exp="f.first=true"]
+[eval exp="f.flag0=0"]
+[eval exp="f.flag1=0"]
+
+
+ + というような式は、以下のように簡潔に書くことができます。
+ +
+[eval exp="f.first=true, f.flag0=0, f.flag1=0"]
+
+
+ +
+ また、iscript タグを用いると、連続した eval タグを簡潔に書くことができます。
+
+ たとえば、上の式は、
+
+ +
+[iscript]
+f.first=true;
+f.flag0=0;
+f.flag1=0;
+[endscript]
+
+
+ +
+ と書くことができます。各式のあとに ; ( セミコロン ) を忘れないでください。
+ このように , (カンマ) や iscript を使うと、使わない場合に比べて非常に高速になります。
+
+

変数の内容を表示する +

+ 変数の内容をシナリオ中に表示したい場合は、emb タグを使います。
+ たとえば、以下のようになります。
+ +
+[wait time=200]
+*start
+[cm]
+[eval exp="f.数値=200"][eval exp="f.mojiretu='文字列'"]
+f.数値 の内容 : [emb exp="f.数値"][l][r]
+f.mojiretu の内容 : [emb exp="f.mojiretu"][l][r]
+
+
+ +
+ 実行すると、
+
+f.数値 の内容 : 200
+f.mojiretu の内容 : 文字列
+
+ と表示されるはずです。
+
+

エンティティ +

+ エンティティというのは、変数の内容で、他のタグの属性の値を置き換える機能です。
+ 属性の値に、 & に続けて変数名を書きます。
+ +
+[wait time=200]
+*start
+[cm]
+[eval exp="f.fontsize=60"]
+[font size="&f.fontsize"]サイズ 60 の文字[resetfont]
+
+
+ +
+ この場合は、f.fontsize に代入された 60 という数値で、font タグの size 属性の値を置き換えています。
+
+ 実際はエンティティは、& の後に書かれた属性の値の内容を、TJS2 式として実行して、その結果で属性の値を置き換える機能です。従って、& の後には TJS2 式を書くことが出来ます。
+
+ +

条件の判断 +

+ 変数がある値と同じであるかを判断するためには以下の演算子を使うことができます。
+ +
+a==b    a が b と等しいときに真(true)
+a!=b    a が b と等しくない場合に真(true)
+a<b     a が b より少ない場合に真(true)
+a>b     a が b より大きい場合に真(true)
+
+
+ +
+ このほか >= や <= (同じかより大きい、同じかより小さい) も使うことができます。
+ このような条件判断は主に if タグで使います。
+
+ if タグは、exp で指定した式が 真(true) を示した場合にのみ endif タグまでにある文章やタグを実行します。
+
+ +
+[if exp="f.flag1==2"]f.flag1 は 2 です[endif]
+[if exp="f.flag1!=2"]f.flag1 は 2 ではありません[endif]
+
+
+ +
+ 変数は使い方次第で非常に強力な機能となります。
+
+ + + + diff --git a/docs/kag3doc/contents/Vertical.jpg b/docs/kag3doc/contents/Vertical.jpg new file mode 100644 index 0000000000000000000000000000000000000000..966dba06f3650983a97f877abbc34129f1e8155c GIT binary patch literal 17394 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 IM6N<$f}Ei`y#N3J literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/ayari_m.png b/docs/kag3doc/contents/ayari_m.png new file mode 100644 index 0000000000000000000000000000000000000000..a446ad1dc05cc7a3b5834cc5424a6a45748969ed GIT binary patch literal 3098 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/browser.css b/docs/kag3doc/contents/browser.css new file mode 100644 index 0000000..8895f99 --- /dev/null +++ b/docs/kag3doc/contents/browser.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("browser2.css"); diff --git a/docs/kag3doc/contents/browser2.css b/docs/kag3doc/contents/browser2.css new file mode 100644 index 0000000..b24b709 --- /dev/null +++ b/docs/kag3doc/contents/browser2.css @@ -0,0 +1,299 @@ +@charset "shift_jis"; + +body{ + padding: 0px; + background-color: white; + background-attachment: fixed; + color: black; + line-height: 127%; +} + +h1:before{ + content: "◆ "; +} + +h1{ + background-color: #001591; + color: white; + background-image: url("./grad.png"); + background-position: left; + background-repeat: repeat-y; + margin: 0em 0em 1em 0em; + padding: 0.1em; + border-top: 1px solid #70a0e0; + border-left: 1px solid #70a0e0; + border-bottom: 1px solid #002040; + border-right: 1px solid #002040; + font-size: 1.04em; + letter-spacing: 0.05em; +} + + +img{ + border: 0; + vertical-align: middle; +} + +div.para { + margin: 0px; + border: 0px; + padding: 0em 0em 4em 0em; +} + +dt { + display: list-item; + list-style: disc; +} + +dl dt{ + margin-left: 2em; + margin-top: 1em; + font-weight: bold; +} + +dl dd{ + margin-left: 3em; +} + +dl{ + margin-bottom: 1em; +} + +div.taggenre{ + text-align: right; +} + +span.b{ + font-weight: bold; +} + +span.i{ + font-style: italic; +} + +span.comlink{ + font-size: 0.85em; +} + +code.inlinecode{ + padding-left: 0.5em; + padding-right: 0.5em; + font-family: monospace; + white-space: pre; +} + +code em { + font-style: normal; + font-weight: bold; +} + +div.descimg{ + background-color: transparent; + color: #303030; + text-align: center; +} + +span.weak{ + background-color: transparent; + color: gray; +} + +span.comment{ + background-color: transparent; + color: #0000a0; +} + +span.linenumber{ + background-color: transparent; + color: gray; +} + +span.arg{ + background-color: transparent; + color:blue; +} + +span.defarg{ + background-color: transparent; + color:gray; +} + +span.defargval{ + background-color: transparent; + color:red; +} + + +span.tagrequiredattrib{ + background-color: transparent; + color:red; +} + + +code.bq{ + display: block; + overflow: auto; + padding: 0.3em; + border: 2px solid #808080; + margin-top: 0em; + margin-bottom: 0em; + font-family: monospace; + white-space: nowrap; +} + +dfn{ + font-style: normal; +} + +div a.jump{ + background-color: transparent; + color: #2d903c; + text-decoration: underline; + border: 0px; + padding: 1px 2px 1px 2px; +} + +div a.jump:visited{ + background-color: transparent; + color: #2d608c; +} + +div a.jump:hover{ + background : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + + + +table.keywords a{ + background-color: transparent; + color: #2d903c; + text-decoration: none; + border: 0px; + padding: 1px 2px 1px 2px; +} + +table.keywords a:visited{ + background-color: transparent; + color: #2d608c; +} + +table.keywords a:hover{ + background-color : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + +ol > li{ + list-style-type: decimal; +} + +div.note{ + margin-left: 4em; + margin-right: 4em; + margin-top: 0em; + margin-bottom: 0em; + border-left: 0.1em solid #808080; + padding-left: 1em; + font-size: 0.8em; + line-height: 110%; +} + +div.note div.notehead{ + margin: 0em; + border: 0em; + padding: 0em 0em 1em 0em; +} + +div.note div.notehead span.noteheadspan { + margin: 0em; + border-top: 0em; + border-left: 0em; + border-right: 0em; + border-bottom: 1px solid black; + padding: 0em 1em 0em 1em; +} + +table.keywords{ + font-size: 0.9em; + line-height: 1em; + margin: 1em 0em 1em 0em; + border: 0px; + padding: 0px; +} + +table.keywords td{ + white-space: nowrap; + margin: 0px; + border: 0px; + padding: 0px; +} + +table.keywords a span{ + background-color: transparent; + color: black; +} + +table.tagparams { + width: 100%; + margin-bottom: 1em; +} + +table.tagparams td{ + border-top: 1px solid black; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.5em; + padding-right: 0.5em; +} + +table.tagparams td.tagattribname{ + background-color: transparent; + color: blue; +} + +div.tagremarks { + margin-bottom: 1em; +} + +span.toindexanchor:before { + content: "△ "; +} + +span.toindexanchor:after { + content: " △"; +} + +div.toindex{ + margin-top: 1em; + text-align: center; +} + +div.toindex a{ + text-decoration: none; +} + +div.taggenrehead { + font-weight: bold; + background-color: transparent; + color: #000080; + margin-top: 1em; +} + +span.taglistlink { + font-weight: bold; +} + +table.taglist td.taglistodd{ + background-color: #f0f0ff; + color: black; +} +table.taglist td.taglisteven{ + background-color: #f0fff0; + color: black; +} diff --git a/docs/kag3doc/contents/clickable.png b/docs/kag3doc/contents/clickable.png new file mode 100644 index 0000000000000000000000000000000000000000..07287b5dd596d07eeb9897426e6497592ff227cd GIT binary patch literal 7207 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/documentid.js b/docs/kag3doc/contents/documentid.js new file mode 100644 index 0000000..ed96e8f --- /dev/null +++ b/docs/kag3doc/contents/documentid.js @@ -0,0 +1,2 @@ +// document id +var doc_id = "kag3doc"; diff --git a/docs/kag3doc/contents/folder.png b/docs/kag3doc/contents/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..41da9b87087ed675c192a42fe48779f3d58dc60b GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=4foFq}J={Qdj){|x{C zpPTdlKM + + + + + + KAG System リファレンス 目次 + + + + + + + + + +
+

チュートリアル +

+

リファレンス +

+

Tips/その他 +

+ + + + diff --git a/docs/kag3doc/contents/gokigen.png b/docs/kag3doc/contents/gokigen.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe43f3b3bca64294353c1c50e33ae9f9f87e08e GIT binary patch literal 4203 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 R<}=U)22WQ%mvv4FO#sz-+35fP literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/hline.png b/docs/kag3doc/contents/hline.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7cde8fd82c4a89de59002d8e67c50c3ab83680 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe899IiL-tjN)j-P0)5S5Q;#TsX(;xaD{{R0! zfhT3*CxIjmIkT-(UM-&#yW&yE2JTSZu-y_85|WaVGY+UsX+7oKp;*y!by3H{E`I&p Y43X#0|9^O>MiXSJr>mdKI;Vst0GOREBme*a literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/index.html b/docs/kag3doc/contents/index.html new file mode 100644 index 0000000..ca54b66 --- /dev/null +++ b/docs/kag3doc/contents/index.html @@ -0,0 +1,18 @@ + + + + + + KAG System リファレンス + + + + + + + + <body>フレーム対応のブラウザでご覧ください</body> + + + diff --git a/docs/kag3doc/contents/keywordgrep.js b/docs/kag3doc/contents/keywordgrep.js new file mode 100644 index 0000000..73328d4 --- /dev/null +++ b/docs/kag3doc/contents/keywordgrep.js @@ -0,0 +1,57 @@ +function Searcher() { + var spans = document.getElementsByTagName('span'); + var styles = []; + var text1 = []; + var text2 = []; + var spans_length = spans.length; + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + styles.push(span.parentNode.parentNode.parentNode.parentNode.style); + text1.push(span.parentNode.childNodes[0].nodeValue); + text2.push(span.childNodes[0].nodeValue); + } + + var lastValue = ''; + + this.grep = function (str) { + if (str == lastValue) { + return; + } else { + lastValue = str; + } + + var regs = []; + var words = str.split(' '); + for (var i = 0; i < words.length; ++i) { + if (words[i] != '') { + regs.push(new RegExp(words[i].replace(/(\W)/g, "\\$1"), 'i')); + } + } + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + var matched = true; + for (var j = 0; j < regs.length; ++j) { + if (!regs[j].test(text1[i]) && !regs[j].test(text2[i])) { + matched = false; + break; + } + } + + styles[i].display = matched ? '' : 'none'; + } + } +} + +var searcher; +function init() { + searcher = new Searcher(); + setInterval(onTimer, 400); +} + +function onTimer() { + searcher.grep(document.getElementById('grepword').value); +} + +window.onload = init; diff --git a/docs/kag3doc/contents/keywords.css b/docs/kag3doc/contents/keywords.css new file mode 100644 index 0000000..2b891fe --- /dev/null +++ b/docs/kag3doc/contents/keywords.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("keywords2.css"); diff --git a/docs/kag3doc/contents/keywords.html b/docs/kag3doc/contents/keywords.html new file mode 100644 index 0000000..3d22c24 --- /dev/null +++ b/docs/kag3doc/contents/keywords.html @@ -0,0 +1,946 @@ + + + + + + キーワード一覧 + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/docs/kag3doc/contents/keywords2.css b/docs/kag3doc/contents/keywords2.css new file mode 100644 index 0000000..cbeb77e --- /dev/null +++ b/docs/kag3doc/contents/keywords2.css @@ -0,0 +1,7 @@ +@charset "shift_jis"; + +@import url("browser.css"); + +body{ + margin-left: 0em; +} diff --git a/docs/kag3doc/contents/keywords_p.html b/docs/kag3doc/contents/keywords_p.html new file mode 100644 index 0000000..8f32018 --- /dev/null +++ b/docs/kag3doc/contents/keywords_p.html @@ -0,0 +1,946 @@ + + + + + + 場所順キーワード一覧 + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/docs/kag3doc/contents/kiri_a.png b/docs/kag3doc/contents/kiri_a.png new file mode 100644 index 0000000000000000000000000000000000000000..e00f86b417cb415785fb9f48a53a524112ec118c GIT binary patch literal 25867 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 Ef|daioB#j- literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/kiri_aa.png b/docs/kag3doc/contents/kiri_aa.png new file mode 100644 index 0000000000000000000000000000000000000000..f23cf02ddaa792ce455a4572de639169808688c9 GIT binary patch literal 33561 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 KMNUMnLSTaTm95DD literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/map1_p.png b/docs/kag3doc/contents/map1_p.png new file mode 100644 index 0000000000000000000000000000000000000000..69c65311f62b828dfed716b20189d6b0562fa233 GIT binary patch literal 3561 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 Mv!_$dp`g_N0+(Sj_5c6? literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/postcontent.js b/docs/kag3doc/contents/postcontent.js new file mode 100644 index 0000000..9d57d86 --- /dev/null +++ b/docs/kag3doc/contents/postcontent.js @@ -0,0 +1 @@ +// currently this does nothing diff --git a/docs/kag3doc/contents/tagdb_xml/tags.xml b/docs/kag3doc/contents/tagdb_xml/tags.xml new file mode 100644 index 0000000..44156fc --- /dev/null +++ b/docs/kag3doc/contents/tagdb_xml/tags.xml @@ -0,0 +1,3350 @@ + + + + animstart + 繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ髢句ァ + 縲繧「繝九Γ繝シ繧キ繝ァ繝ウ繧偵∵欠螳壹@縺溘そ繧ー繝。繝ウ繝医〒縲∵欠螳壹@縺溘Λ繝吶Ν縺九i髢句ァ九@縺セ縺吶
縲繧サ繧ー繝。繝ウ繝医ッ縲∽ク縺、縺ョ繝ャ繧、繝、縲∽ク縺、縺ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ ( asd 繝輔ぃ繧、繝ォ ) 縺ァ隍謨ー縺ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧貞酔譎ゅ↓螳溯。後☆繧九◆繧√ョ讎ょソオ縺ァ縲∽ク縺、縺ョ繝ャ繧、繝、縺ァ隍謨ー縺ョ繧サ繧ー繝。繝ウ繝医r菴ソ逕ィ縺ァ縺阪∝推繧サ繧ー繝。繝ウ繝医〒蜷梧凾縺ォ蛻・縲縺ョ繝ゥ繝吶Ν縺九i繧「繝九Γ繝シ繧キ繝ァ繝ウ繧帝幕蟋九☆繧九%縺ィ縺後〒縺阪∪縺吶
縲繧サ繧ー繝。繝ウ繝 0 縺ッ迚ケ蛻・縺ェ繧サ繧ー繝。繝ウ繝医〒縲√Ξ繧、繝、縺ォ逕サ蜒上′隱ュ縺ソ霎シ縺セ繧後◆縺ョ縺ィ蜷梧凾縺ォ螳溯。後&繧後k繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ァ縲√%縺ョ繧ソ繧ー繧 animstop 繧ソ繧ー縺ァ縺ッ繧サ繧ー繝。繝ウ繝 0 縺ッ謖螳壹〒縺阪∪縺帙s縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲繧「繝九Γ繝シ繧キ繝ァ繝ウ繧帝幕蟋九☆繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶ゅ謖螳壹@縺溘Ξ繧、繝、縺ォ縺ッ縲√い繝九Γ繝シ繧キ繝ァ繝ウ諠蝣ア縺瑚ェュ縺ソ霎シ縺セ繧後※縺縺ェ縺縺ィ縺ェ繧翫∪縺帙s縲
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + seg + 繧サ繧ー繝。繝ウ繝 + yes + 1 莉・荳翫ョ謨エ謨ー + 縲縺薙ョ螻樊ァ縺ァ謖螳壹@縺溘そ繧ー繝。繝ウ繝育分蜿キ縺ァ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧帝幕蟋九@縺セ縺吶
縲逡ー縺ェ繧九そ繧ー繝。繝ウ繝育分蜿キ縺ァ縺ッ蜷梧凾縺ォ隍謨ー縺ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧貞ョ溯。後〒縺阪∪縺吶
縲繧サ繧ー繝。繝ウ繝育分蜿キ縺ッ莉サ諢上ョ逡ェ蜿キ繧呈欠螳壹〒縺阪∪縺吶′縲∝ソ隕∽サ・荳翫↓螟ァ縺阪↑逡ェ蜿キ繧呈欠螳壹@縺ェ縺縺ァ縺上□縺輔>縲ゅ∪縺溘√そ繧ー繝。繝ウ繝 0 縺ッ謖螳壹〒縺阪∪縺帙s縲
+
+ + target + 髢句ァ九Λ繝吶Ν + yes + 髢句ァ九Λ繝吶Ν蜷 + 縲繧「繝九Γ繝シ繧キ繝ァ繝ウ繧帝幕蟋九☆繧九◆繧√ョ asd 繝輔ぃ繧、繝ォ荳ュ縺ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
link繧ソ繧ー縺ェ縺ゥ縺ィ蜷後§繧医≧縺ォ縲* (繧「繧ケ繝繝ェ繧ケ繧ッ) 繧貞ソ倥l縺ェ縺繧医≧縺ォ縺励※縺上□縺輔>縲
+
+
+ + animstop + 繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ蛛懈ュ「 + 縲莉サ諢上ョ繧サ繧ー繝。繝ウ繝医ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧貞●豁「縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ゅい繝九Γ繝シ繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺、縺ォ縺ッwa 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
縲繧「繝九Γ繝シ繧キ繝ァ繝ウ縺後Ν繝シ繝励@縺ヲ縺繧句エ蜷医‖sd 繝輔ぃ繧、繝ォ荳翫〒 home 繧ソ繧ー繧帝夐℃縺吶k縺セ縺ァ繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ッ蛛懈ュ「縺励∪縺帙s縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲繧「繝九Γ繝シ繧キ繝ァ繝ウ繧貞●豁「縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶ゅ謖螳壹@縺溘Ξ繧、繝、縺ォ縺ッ縲√い繝九Γ繝シ繧キ繝ァ繝ウ諠蝣ア縺瑚ェュ縺ソ霎シ縺セ繧後※縺縺ェ縺縺ィ縺ェ繧翫∪縺帙s縲
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + seg + 繧サ繧ー繝。繝ウ繝 + yes + 1 莉・荳翫ョ謨エ謨ー + 縲縺薙ョ螻樊ァ縺ァ謖螳壹@縺溘そ繧ー繝。繝ウ繝育分蜿キ縺ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧貞●豁「縺励∪縺吶
縲繧サ繧ー繝。繝ウ繝育分蜿キ 0 縺ッ謖螳壹〒縺阪∪縺帙s縲
+
+
+ + autowc + 閾ェ蜍輔え繧ァ繧、繝 + 縲迚ケ螳壹ョ譁蟄励ョ蠕後↓謖螳壽枚蟄玲焚蛻縺ョ繧ヲ繧ァ繧、繝医r蜈・繧後k縺薙→縺後〒縺阪∪縺吶
縲ch 螻樊ァ縺ァ謖螳壹@縺滓枚蟄励′陦ィ遉コ縺輔l縺溷セ後》ime 螻樊ァ縺ァ謖螳壹@縺滓凾髢薙′繧ヲ繧ァ繧、繝医→縺励※蜈・繧翫∪縺吶
縲譁蟄励ッ ch 繧ソ繧ー縺ァ隍謨ー謖螳壹〒縺阪※縲√◎繧後↓蟇セ蠢懊@縺ヲ縺昴l縺槭l縺ョ譁蟄励↓ time 螻樊ァ縺ァ繧ソ繧、繝溘Φ繧ー繧呈欠螳壹〒縺阪∪縺吶
+ [autowc enabled=true ch="縲√ゅサ" time="3,5,3"]
; 竊 "縲√ゅサ" 縺ョ蜷譁蟄励↓蟇セ縺励※縺昴l縺槭l 3, 5, 3 譁蟄玲焚蛻縺ョ繧ヲ繧ァ繧、繝医r蜈・繧後k
+ + enabled + 閾ェ蜍輔え繧ァ繧、繝医r譛牙柑縺ォ縺吶k縺 + no + true 縺セ縺溘ッ false + 縲閾ェ蜍輔え繧ァ繧、繝医r譛牙柑縺ォ縺吶k蝣エ蜷医ッ true 繧偵∫┌蜉ケ縺ォ縺吶k縺ォ縺ッ false 繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶l縺ー險ュ螳壹ッ螟画峩縺輔l縺セ縺帙s縲
+
+ + ch + 閾ェ蜍輔え繧ァ繧、繝医r蜈・繧後k譁蟄 + no + 蟇セ雎。縺ョ譁蟄 + 縲閾ェ蜍輔え繧ァ繧、繝医r蜈・繧後k譁蟄励r謖螳壹@縺セ縺吶よ欠螳壹&繧後◆譁蟄励ョ縺ゅ→縺ォ縲》ime 螻樊ァ縺ァ謖螳壹@縺滓枚蟄玲焚蛻縺ョ繧ヲ繧ァ繧、繝医′蜈・繧翫∪縺吶
縲逵∫払縺吶l縺ー險ュ螳壹ッ螟画峩縺輔l縺セ縺帙s縲
+
+ + time + 繧ヲ繧ァ繧、繝 + no + 繧ヲ繧ァ繧、繝(譁蟄玲焚蜊倅ス) + 縲閾ェ蜍輔え繧ァ繧、繝医r蜈・繧後k譎る俣繧呈枚蟄玲焚蜊倅ス阪〒謖螳壹@縺セ縺吶
縲ch 螻樊ァ縺ァ謖螳壹@縺滓枚蟄励◎繧後◇繧後↓蟇セ縺励※縲√き繝ウ繝槭〒蛹コ蛻縺」縺ヲ譎る俣繧呈欠螳壹〒縺阪∪縺吶
縲荳縺、縺励°譎る俣繧呈欠螳壹@縺ェ縺九▲縺溷エ蜷医ッ ch 繧ソ繧ー縺ァ謖螳壹@縺溘☆縺ケ縺ヲ縺ョ譁蟄励↓縺昴ョ譎る俣縺瑚ィュ螳壹&繧後∪縺吶
縲縺薙ョ螻樊ァ繧堤怐逡・縺励◆蝣エ蜷医ッ 4 繧呈欠螳壹@縺溘→隕九↑縺輔l縺セ縺吶
+
+
+ + backlay + 繝ャ繧、繝、諠蝣ア縺ョ陦ィ繝壹シ繧ク縺九i陬上壹シ繧ク縺ク縺ョ繧ウ繝斐シ + 縲謖螳壹@縺溘Ξ繧、繝、縲√≠繧九>縺ッ縺吶∋縺ヲ縺ョ繝ャ繧、繝、縺ョ諠蝣ア繧偵∬。ィ繝壹シ繧ク縺九i陬上壹シ繧ク縺ォ繧ウ繝斐シ縺励∪縺吶
縲繧ウ繝斐シ縺輔l繧九ョ縺ッ縲copylay 繧ソ繧ー縺ァ繧ウ繝斐シ縺輔l繧区ュ蝣ア縺ィ蜷後§縺ァ縺吶
trans 繧ソ繧ー縺ッ陦ィ繝壹シ繧ク縺ョ繝ャ繧、繝、縺ョ逕サ蜒上r陬上壹シ繧ク縺ョ繝ャ繧、繝、縺ョ逕サ蜒上↓鄂ョ縺肴鋤縺医∪縺吶ゅ◎縺ョ縺溘a縲√ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ蜑阪↓縺薙ョ backlay 繧ソ繧ー縺ァ逕サ蜒上r陬上壹シ繧ク縺ォ霆「騾√@縲∬」上壹シ繧ク縺ァ繝ャ繧、繝、繧呈桃菴懊@縺ヲ縺九i縲√ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ繧定。後≧縺ィ縺縺譁ケ豕輔↓逕ィ縺縺セ縺吶
+ + layer + 蟇セ雎。繝ャ繧、繝、 + no + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー2 縺セ縺溘ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲蟇セ雎。縺ィ縺ェ繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
縲base 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、 縺ォ縺ェ繧翫∪縺吶
縲0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→蜑肴勹繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶
縲message0 縺セ縺溘ッ message1 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶ょ腰縺ォ message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current 繧ソ繧ー縺ァ謖螳壹@縺溽樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ォ縺ェ繧翫∪縺 ( 陬上壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺梧桃菴懷ッセ雎。縺ァ縺ゅ▲縺ヲ繧ゅ◎縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ陦ィ繝壹シ繧ク竊定」上壹シ繧ク縺ク縺ョ繧ウ繝斐シ縺瑚。後o繧後∪縺 )縲
縲逵∫払縺吶k縺ィ縲√☆縺ケ縺ヲ縺ョ繝ャ繧、繝、縺ョ諠蝣ア縺瑚」上壹シ繧ク縺ォ繧ウ繝斐シ縺輔l縺セ縺吶
+
+
+ + bgmopt + BGM 縺ョ險ュ螳 + 縲BGM 縺ョ縺輔∪縺悶∪縺ェ險ュ螳壹r螟画峩縺励∪縺吶 + + volume + 髻ウ驥 + no + 髻ウ驥% (0縲100) + 縲BGM 縺ョ髻ウ驥上r % 縺ァ謖螳壹@縺セ縺吶ょ晄悄迥カ諷九ョ KAG 縺ァ縺ッ100 % 縺ァ縺吶ら怐逡・縺吶l縺ー髻ウ驥上ッ螟画峩縺輔l縺セ縺帙s縲
縲100 縺御ク企剞縺ァ縺吶る浹驥上ョ謚大宛縺ョ縺ソ繧偵し繝昴シ繝医@縺セ縺(蠅怜ケ縺ッ髻ウ貅舌ョ迚ケ諤ァ荳翫√〒縺阪∪縺帙s)縲
+
+ + gvolume + 螟ァ蝓滄浹驥 + no + 髻ウ驥% (0縲100) + 縲BGM 縺ョ螟ァ蝓滄浹驥上r % 縺ァ謖螳壹@縺セ縺吶ょ晄悄迥カ諷九ョ KAG 縺ァ縺ッ100 % 縺ァ縺吶ら怐逡・縺吶l縺ー髻ウ驥上ッ螟画峩縺輔l縺セ縺帙s縲
縲螟ァ蝓滄浹驥上ッ volume 螻樊ァ縺ァ謖螳壹☆繧矩壼クク縺ョ髻ウ驥上→縺ッ蛻・縺ォ縲。GM 縺ョ髻ウ驥上r蛻カ蠕。縺吶k縺薙→縺後〒縺阪k繧ゅ≧荳縺、縺ョ繧ゅョ縺ァ縺吶ょョ滄圀縺ォ蜀咲函縺輔l繧矩浹驥上ッ縲騾壼クク縺ョ髻ウ驥上→螟ァ蝓滄浹驥上r謗帙¢蜷医o縺帙◆髻ウ驥上↓縺ェ繧翫∪縺( 縺溘→縺医ー volume=50 縺ァ gvolume=75 縺ェ繧峨ー 50(%)*75(%)=37.5(%) )
縲螟ァ蝓滄浹驥上ッ繧キ繧ケ繝繝螟画焚縺ォ險倬鹸縺輔l縲∵ャ。蝗櫁オキ蜍墓凾縺ォ繧ょシ輔″邯吶′繧後∪縺 ( 蜷譬槭↓菫晏ュ倥&繧後k繧上¢縺ァ縺ッ縺ゅj縺セ縺帙s )縲
+
+
+ + button + 繧ー繝ゥ繝輔ぅ繧ォ繝ォ繝懊ち繝ウ + 縲迴セ蝨ィ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、荳翫↓ link 繧ソ繧ー縺ィ蜷梧ァ倥↓繝ェ繝ウ繧ッ繧剃ス懈舌@縺セ縺吶′縲∫判蜒上r逕ィ縺縺溘懊ち繝ウ繧剃ス懈舌@縺セ縺吶
縲繝懊ち繝ウ縺御ス懈舌&繧後k菴咲スョ縺ッ locate 繧ソ繧ー縺ァ謖螳壹@縺滉ス咲スョ縺檎判蜒上ョ蟾ヲ荳顔せ縺ォ縺ェ繧翫∪縺吶ョ縺ァ縲√%縺ョ繧ソ繧ー繧剃スソ縺蜑阪↓ locate 繧ソ繧ー縺ァ菴咲スョ繧呈欠螳壹@縺ヲ縺上□縺輔>縲ゅ%縺ョ繧ソ繧ー縺ッ譁蟄苓。ィ遉コ菴咲スョ繧堤ァサ蜍輔@縺セ縺帙s縲
縲graphic 螻樊ァ縺ァ謖螳壹☆繧狗判蜒上ッ縲
繝サ騾壼クク縺ョ迥カ諷
繝サ繝懊ち繝ウ縺梧款縺輔l縺溽憾諷
繝サ繝懊ち繝ウ縺ョ荳翫↓繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺後≠繧狗憾諷
縲縺ョ3縺、縺ョ逕サ蜒上′蟾ヲ縺九i鬆縺ォ讓ェ荳ヲ縺ウ縺ォ縺ェ縺」縺溽判蜒上〒縺吶ゆク縺、縺ョ逕サ蜒上↓縲∝酔縺倥し繧、繧コ縺ョシ薙▽縺ョ迥カ諷九ョ逕サ蜒上′讓ェ縺ォ荳ヲ繧薙□蠖「蠑上↓縺ェ縺」縺ヲ縺縺セ縺吶ゅ▽縺セ繧翫√%縺ョ螻樊ァ縺ァ謖螳壹☆繧狗判蜒上ッ縲√懊ち繝ウ縺ョ讓ェ蟷縺ョシ灘阪ョ讓ェ蟷繧呈戟縺、縺薙→縺ォ縺ェ繧翫∪縺吶
縲縺薙ョ繧ソ繧ー繧剃スソ縺蝣エ蜷医ッ縲√↑繧九∋縺 s 繧ソ繧ー縺ァ縺吶$縺ォ驕ク謚櫁い蠕縺。縺ォ縺励※縺上□縺輔>縲
+ + graphic + 繝懊ち繝ウ縺ォ縺吶k逕サ蜒 + yes + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲繝懊ち繝ウ縺ォ縺吶k逕サ蜒上r謖螳壹@縺セ縺吶
image繧ソ繧ー縺ョ storage 螻樊ァ繧貞盾辣ァ縺励※縺上□縺輔>縲
+
+ + graphickey + 逕サ蜒上ョ繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 繝懊ち繝ウ縺ォ縺吶k逕サ蜒上ョ繧ォ繝ゥ繝シ繧ュ繝シ繧呈欠螳壹@縺セ縺吶
image繧ソ繧ー縺ョ key 螻樊ァ繧貞盾辣ァ縺励※縺上□縺輔>縲
+
+ + storage + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + no + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + 縲繧ク繝」繝ウ繝怜医ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫樟蝨ィ縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜀縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + target + 繝ゥ繝吶Ν蜷 + no + 繝ゥ繝吶Ν蜷 + 縲繧ク繝」繝ウ繝怜医ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲√ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後&繧後∪縺吶
+
+ + recthit + 遏ゥ蠖「縺ァ蠖薙◆繧雁愛螳壹r陦後≧縺九←縺縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲遏ゥ蠖「縺ァ蠖薙◆繧雁愛螳壹r陦後≧縺九←縺縺九r謖螳壹@縺セ縺吶Urue 縺梧欠螳壹&繧後※縺繧九→縲√懊ち繝ウ縺ョ陦ィ遉コ縺輔l縺ヲ縺繧狗洸蠖「蜈ィ蝓溘〒繝槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ェ縺ゥ縺ォ蜿榊ソ懊@縺セ縺吶Galse 縺梧欠螳壹&繧後※縺繧九→縲√懊ち繝ウ縺ョ荳埼乗主コヲ縺 64 譛ェ貅縺ョ鬆伜沺縺ァ縺ッ繝槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ェ縺ゥ縺ォ蜿榊ソ懊@縺ェ縺上↑繧翫∪縺吶
縲逵∫払縺吶k縺ィ true 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
+
+ + exp + TJS 蠑 + no + TJS 蠑 + 縲繧ッ繝ェ繝繧ッ縺輔l縺溘→縺阪↓螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶ら怐逡・縺吶l縺ー蠑上ッ螳溯。後&繧後∪縺帙s縲Ttorage 繧 target 縺梧欠螳壹&繧後※縺縺溷エ蜷医√%縺ョ蠑上′螳溯。後&繧後※縺九i繧ク繝」繝ウ繝怜医↓遘サ蜍輔@縺セ縺吶 + + + hint + 繝繝シ繝ォ繝√ャ繝励ヲ繝ウ繝 + no + 繝偵Φ繝医→縺励※陦ィ遉コ縺輔○繧区枚蟄怜 + 縲繝ェ繝ウ繧ッ繧帝∈謚槭@縲√槭え繧ケ繧ォ繝シ繧ス繝ォ繧帝撕豁「縺輔○縺溘→縺阪↓陦ィ遉コ縺輔l繧九ヤ繝シ繝ォ繝√ャ繝励ヲ繝ウ繝医r謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ陦ィ遉コ縺ッ陦後o繧後∪縺帙s縲
+
+ + onenter + 繝槭え繧ケ騾イ蜈・譎 + no + TJS 蠑 + 縲繝懊ち繝ウ蜀縺ォ繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺悟・縺」縺ヲ縺阪◆縺ィ縺阪↓螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶 + + + onleave + 繝槭え繧ケ騾蜃コ譎 + no + TJS 蠑 + 縲繝懊ち繝ウ蜀縺九i繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺悟コ縺ヲ縺縺」縺滓凾縺ォ螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶 + + + countpage + 縺薙ョ繧ク繝」繝ウ繝励r縲瑚ェュ繧薙□縲阪→隕九↑縺吶° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲繝懊ち繝ウ繧帝∈謚槭@縺ヲ莉悶ョ繝ゥ繝吶Ν縺ォ遘サ陦後☆繧九→縺阪↓縲√%縺ョ繝ェ繝ウ繧ッ縺ョ縺ゅk蝣エ謇縺ョ繝ゥ繝吶Ν繧偵瑚ェュ繧薙□縲阪→縺ソ縺ェ縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
縲[s] 繧ソ繧ー繧貞ョ溯。後☆繧句燕縺ォ繝懊ち繝ウ縺碁∈謚槭&繧後※繧ク繝」繝ウ繝励☆繧矩圀縺ォ縲√◎縺ョ繝壹シ繧ク縺後瑚ェュ繧薙□縲阪%縺ィ縺ォ縺ェ縺」縺ヲ縺ッ蝗ー繧句エ蜷医↓ false 繧呈欠螳壹@縺セ縺吶
+
+ + clickse + 繧ッ繝ェ繝繧ッ譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繧ッ繝ェ繝繧ッ縺輔l縺溘→縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + clicksebuf + 繧ッ繝ェ繝繧ッ譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲clickse 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + enterse + 繝槭え繧ケ騾イ蜈・譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繝槭え繧ケ縺碁イ蜈・縺励◆縺ィ縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + entersebuf + 繝槭え繧ケ騾イ蜈・譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲enterse 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + leavese + 繝槭え繧ケ騾蜃コ譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繝槭え繧ケ縺碁蜃コ縺励◆縺ィ縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + leavesebuf + 繝槭え繧ケ騾蜃コ譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲leavese 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + +
+ + call + 繧オ繝悶Ν繝シ繝√Φ縺ョ蜻シ縺ウ蜃コ縺 + 縲謖螳壹&繧後◆繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ縺ョ謖螳壹&繧後◆繝ゥ繝吶Ν縺ァ遉コ縺輔l繧九し繝悶Ν繝シ繝√Φ繧貞他縺ウ蜃コ縺励∪縺吶
縲蜻シ縺ウ蜃コ縺輔l縺溘し繝悶Ν繝シ繝√Φ縺ッ縲 return 繧ソ繧ー縺ァ蜻シ縺ウ蜃コ縺怜繧莉サ諢上ョ蝣エ謇縺ォ謌サ繧九%縺ィ縺後〒縺阪∪縺吶
+ + storage + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + no + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + 縲蜻シ縺ウ蜃コ縺励◆縺繧オ繝悶Ν繝シ繝√Φ縺ョ縺ゅk縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫樟蝨ィ縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜀縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + target + 繝ゥ繝吶Ν蜷 + no + 繝ゥ繝吶Ν蜷 + 縲蜻シ縺ウ蜃コ縺吶し繝悶Ν繝シ繝√Φ縺ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲√ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後&繧後∪縺吶
+
+ + countpage + 縺薙ョ繧ク繝」繝ウ繝励r縲瑚ェュ繧薙□縲阪→隕九↑縺吶° + no + false(繝繝輔か繝ォ繝) 縺セ縺溘ッ true + 縲莉悶ョ繝ゥ繝吶Ν縺ォ遘サ陦後☆繧九→縺阪↓縲√%縺ョ繧ソ繧ー縺ョ縺ゅk蝣エ謇縺ョ繝ゥ繝吶Ν繧偵瑚ェュ繧薙□縲阪→縺ソ縺ェ縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
縲繧オ繝悶Ν繝シ繝√Φ繧貞他縺ウ蜃コ縺咎圀縺ォ縲∝他縺ウ蜃コ縺怜縺ョ繝壹シ繧ク縺後◎縺ョ譎らせ縺ァ縲瑚ェュ縺セ繧後◆縲阪%縺ィ縺ォ縺励◆縺蝣エ蜷医↓ true 繧呈欠螳壹@縺セ縺吶
+
+
+ + cancelautomode + 縲瑚ェ蜍慕噪縺ォ隱ュ縺ソ騾イ繧縲阪ョ隗」髯、 + 縲縲瑚ェ蜍慕噪縺ォ隱ュ縺ソ騾イ繧縲阪r蠑キ蛻カ逧縺ォ隗」髯、縺励∪縺吶
+
+ + cancelskip + 繧ケ繧ュ繝繝励ョ隗」髯、 + 縲繧ケ繧ュ繝繝礼憾諷九ョ隗」髯、繧定。後>縺セ縺吶
縲繧ケ繧ュ繝繝礼憾諷九→縺ッ縲√け繝ェ繝繧ッ繧ケ繧ュ繝繝 ( 繝。繝繧サ繝シ繧ク陦ィ遉コ騾比クュ縺ァ逕サ髱「繧偵け繝ェ繝繧ッ縺吶k縺薙→縺ォ繧医j繧ッ繝ェ繝繧ッ蠕縺。縺セ縺ァ荳豌励↓譁遶繧定。ィ遉コ縺吶k讖溯ス ) 縺ィ縲√梧ャ。縺ョ驕ク謚櫁い縺セ縺ァ縺吶☆繧縲阪〒繧ケ繧ュ繝繝励′陦後o繧後※縺繧狗憾諷九ョ莠九〒縺吶
縲縲梧ャ。縺ョ驕ク謚櫁い縺セ縺ァ騾イ繧縲肴ゥ溯ス閾ェ菴薙′辟。蜉ケ縺ォ縺ェ縺」縺溘j縲√け繝ェ繝繧ッ繧ケ繧ュ繝繝励ョ讖溯ス閾ェ菴薙′縺昴l莉・髯咲┌蜉ケ縺ォ縺ェ縺」縺溘j縺吶k繧上¢縺ァ縺ッ縺ゅj縺セ縺帙s縲
+
+ + cancelvideoevent + 繝斐Μ繧ェ繝峨う繝吶Φ繝医ョ隗」髯、 + videoevent繧ソ繧ー縺ァ險ュ螳壹@縺溘ヴ繝ェ繧ェ繝峨う繝吶Φ繝医r隗」髯、縺励∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + cancelvideosegloop + 繝薙ョ繧ェ縺ョ繧サ繧ー繝。繝ウ繝医Ν繝シ繝怜咲函縺ョ隗」髯、 + videosegloop繧ソ繧ー縺ァ險ュ螳壹@縺溘そ繧ー繝。繝ウ繝医Ν繝シ繝励r隗」髯、縺励∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + ch + 譁蟄励r陦ィ遉コ縺吶k + 縲譁蟄励r current 繧ソ繧ー縺ァ謖螳壹@縺溘Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ陦ィ遉コ縺励∪縺吶よ勸騾壹ッ菴ソ縺縺セ縺帙s縲
縲KAG 蜀驛ィ縺ァ縺ッ縲騾壼クク縺ョ譁蟄励ッ縲∽ク譁蟄嶺ク譁蟄励☆縺ケ縺ヲ縺後%縺ョ繧ソ繧ー縺ォ蛻隗」縺輔l縺ヲ蜃ヲ逅縺輔l縺セ縺吶
+ + text + 陦ィ遉コ縺吶k譁蟄 + yes + 譁蟄 + 縲縺薙%縺ァ謖螳壹@縺滓枚蟄励′陦ィ遉コ縺輔l縺セ縺吶
縲隍謨ー縺ョ譁蟄励r謖螳壹〒縺阪∪縺吶′縲∬ェ蜍墓隼陦後ッ縺輔l縺セ縺帙s ( 繝。繝繧サ繝シ繧ク螻・豁エ繝ャ繧、繝、繧ゅ%縺薙〒隍謨ー縺ョ譁蟄励r謖螳壹&繧後◆蝣エ蜷医ッ謾ケ陦後&繧後∪縺帙s )縲ゅ∪縺溘∬、謨ー縺ョ譁蟄励r謖螳壹@縺溷エ蜷医ッ荳豌励↓陦ィ遉コ縺輔l縺セ縺 ( nowait 縺ァ陦ィ遉コ縺吶k繧医j繧ゅ°縺ェ繧企ォ倬 )縲る壼クク縺ッ荳譁蟄励ョ縺ソ繧呈欠螳壹@縺セ縺吶
+
+
+ + checkbox + 繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ縺ョ菴懈 + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ォ縺ェ縺」縺ヲ縺繧九Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ縲∫樟蝨ィ縺ョ菴咲スョ縺ォ縲√メ繧ァ繝繧ッ繝懊ャ繧ッ繧ケ繧剃ス懈舌@縺セ縺吶
縲繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ縺ョ迥カ諷九ッ縲commit 繧ソ繧ー縺悟ョ溯。後&繧後k縺セ縺ァ縲∵欠螳壹@縺溷、画焚縺ォ莉」蜈・縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲
縲commit 繧ソ繧ー縺悟ョ溯。後&繧後k縺ィ縲√メ繧ァ繝繧ッ繝懊ャ繧ッ繧ケ縺後メ繧ァ繝繧ッ縺輔l縺ヲ縺繧後ー 1 縺後√メ繧ァ繝繧ッ縺輔l縺ヲ縺縺ェ縺代l縺ー 0 縺悟、画焚縺ォ蜈・繧翫∪縺吶
+ + name + 螟画焚蜷 + yes + 螟画焚蜷 + 縲繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ縺ョ迥カ諷九r譬シ邏阪☆繧句、画焚繧呈欠螳壹@縺セ縺吶
縲螟画焚縺 0 (縺セ縺溘ッ譛ェ螳夂セゥ)縺ェ繧峨ー繝√ぉ繝繧ッ縺輔l縺ヲ縺縺ェ縺縲0 縺ァ縺ェ縺代l縺ー繝√ぉ繝繧ッ縺輔l縺ヲ縺繧九→縺ソ縺ェ縺輔l縺セ縺吶
縲繧ゅ@螟画焚縺後☆縺ァ縺ォ 0 莉・螟悶〒縺ゅl縺ー縲√メ繧ァ繝繧ッ繝懊ャ繧ッ繧ケ縺ッ繝√ぉ繝繧ッ縺輔l縺溽憾諷九〒菴懈舌&繧後∪縺吶
+
+ + bgcolor + 閭梧勹濶イ + no + 0xRRGGBB 蠖「蠑 + 縲閭梧勹濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶 + + + opacity + 閭梧勹濶イ縺ョ荳埼乗主コヲ + no + 0(螳悟ィ騾乗) 縲 255(螳悟ィ荳埼乗) + 縲bgcolor 螻樊ァ縺ァ謖螳壹@縺溯レ譎ッ濶イ縺ョ荳埼乗主コヲ繧 0 縲 255 縺ァ謖螳壹@縺セ縺吶 + + + color + 繝√ぉ繝繧ッ繝槭シ繧ッ縺ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲繝√ぉ繝繧ッ繝槭シ繧ッ縺ョ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶 + +
+ + clearsysvar + 繧キ繧ケ繝繝螟画焚縺ョ蜈ィ豸亥悉 + 縲繧キ繧ケ繝繝螟画焚繧偵☆縺ケ縺ヲ豸亥悉縺励∪縺吶 + + + clearvar + 繧イ繝シ繝螟画焚縺ョ蜈ィ豸亥悉 + 縲繧イ繝シ繝螟画焚繧偵☆縺ケ縺ヲ豸亥悉縺励∪縺吶ゅ☆縺ケ縺ヲ縺ョ繧イ繝シ繝螟画焚縺ッ譛ェ螳夂セゥ縺ォ縺ェ繧翫∪縺吶 + + + clearvideolayer + 繝薙ョ繧ェ繝ャ繧、繝、隗」髯、 + videolayer繧ソ繧ー縺ァ險ュ螳壹@縺溘Ξ繧、繝、繧定ァ」髯、縺励∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + channel + 繝√Ε繝ウ繝阪Ν + yes + 1 縺セ縺溘ッ 2 + 縲繝ャ繧、繝、謠冗判繝「繝シ繝峨↓繧医k謠冗判繧定ァ」髯、縺励◆縺繝√Ε繝ウ繝阪Ν繧呈欠螳壹@縺セ縺吶
+
+
+ + clickskip + 繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励ョ險ュ螳 + 縲繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励→縺ッ縲√Γ繝繧サ繝シ繧ク陦ィ遉コ騾比クュ縺ァ逕サ髱「繧偵け繝ェ繝繧ッ縺吶k縺薙→縺ォ繧医j縲√ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ繧閾ェ蜍慕ァサ蜍輔r荳ュ譁ュ縺励◆繧翫√け繝ェ繝繧ッ蠕縺。縺セ縺ァ荳豌励↓譁遶繧定。ィ遉コ縺吶k讖溯ス縺ァ縺吶
縲繝繝「繧キ繝シ繝ウ縺ェ縺ゥ縺ァ縺ッ辟。蜉ケ縺ォ縺励※縺縺溘⊇縺縺後>縺蝣エ蜷医′縺ゅj縺セ縺吶
+ + enabled + 譛牙柑繝サ辟。蜉ケ縺ョ險ュ螳 + yes + true 縺セ縺溘ッ false + 縲繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝玲ゥ溯ス繧呈怏蜉ケ縺ォ縺吶k蝣エ蜷医ッ true縲∫┌蜉ケ縺ォ縺吶k蝣エ蜷医ッfalse 繧呈欠螳壹@縺セ縺吶 + +
+ + close + 繧ヲ繧」繝ウ繝峨え繧帝哩縺倥k + 縲繧ヲ繧」繝ウ繝峨え繧帝哩縺倥∪縺吶Bsk 螻樊ァ縺ォ false 繧呈欠螳壹@縺ェ縺髯舌j縲∫オゆコ遒コ隱阪′縺ゅj縺セ縺( 繝舌シ繧ク繝ァ繝ウ諠蝣ア繝繧、繧「繝ュ繧ー縺ァ縺ッ邨ゆコ遒コ隱阪ッ蜃コ縺セ縺帙s )縲
+ + ask + 遒コ隱阪r縺吶k縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲true 繧呈欠螳壹☆繧九→縲∫オゆコ縺吶k縺九←縺縺九ョ遒コ隱阪r縺励∪縺吶Galse 繧呈欠螳壹☆繧九→縺薙ョ遒コ隱阪ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ縲 true 繧呈欠螳壹@縺溘→縺ソ縺ェ縺輔l縺セ縺吶
縲縺薙ョ遒コ隱阪〒繝ヲ繝シ繧カ縺後後>縺縺医阪r驕ク繧薙□蝣エ蜷医∝ョ溯。後ッ縺昴ョ縺セ縺セ邯咏カ壹@縺セ縺吶
+
+
+ + cm + 縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繧ッ繝ェ繧「 + 縲縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繧ッ繝ェ繧「繧定。後>縺セ縺吶
縲縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ譁蟄励ッ豸亥悉縺輔l縺セ縺吶′縲ct 繧ソ繧ー縺ョ繧医≧縺ォ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺瑚。ィ繝壹シ繧ク縺ョ message0 縺ォ謖螳壹&繧後k繧医≧縺ェ縺薙→縺ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ繧ソ繧ー繧貞ョ溯。悟セ後b謫堺ス懷ッセ雎。縺ョ繝ャ繧、繝、縺ッ蜷後§縺ァ縺吶
font 繧ソ繧ー縺ァ謖螳壹@縺滓枚蟄励ョ螻樊ァ縲style 繧ソ繧ー縺ァ謖螳壹@縺溘せ繧ソ繧、繝ォ縺ッ縺吶∋縺ヲ讓呎コ也憾諷九↓謌サ繧翫∪縺吶ゅ◆縺縺励position 繧ソ繧ー繧 layopt 繧ソ繧ー縺ァ謖螳壹@縺溷ア樊ァ縺ッ蠑輔″邯吶′繧後∪縺吶
縲縲*繝ゥ繝吶Ν蜷鋼隕句コ縺怜錐縲 蠖「蠑上ョ繝ゥ繝吶Ν縺ョ谺。縺ォ縺ッ縲√%縺ョ cm 繧ソ繧ー縺ゅk縺縺ッ ct 繧ソ繧ー繧呈嶌縺上∋縺阪〒縺吶( 譬槭ョ繝ュ繝シ繝画凾縺ォ縺ッ繝ゥ繝吶Ν縺九i螳溯。後′蟋九∪繧九′縲√Ο繝シ繝画凾縺ォ縺ッ蠢縺壹Γ繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励′繧ッ繝ェ繧「縺輔l繧九◆繧 )縲
+
+ + commit + 繝輔か繝シ繝蜀螳ケ縺ョ遒コ螳 + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ォ縺ェ縺」縺ヲ縺繧九Γ繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ縺吶∋縺ヲ縺ョ繧ィ繝繧」繝繝医d繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ縺ェ縺ゥ縺ョ縲後ヵ繧ゥ繝シ繝隕∫エ縲阪ョ蜀螳ケ繧堤「コ螳壹@縺セ縺吶
縲蜀螳ケ縺檎「コ螳壹&繧後k縺ィ縲√ヵ繧ゥ繝シ繝隕∫エ縺ァ邱ィ髮縺輔l縺ヲ縺縺滓枚蟄怜励d迥カ諷九′縲∝推螟画焚縺ォ螳滄圀縺ォ莉」蜈・縺輔l縺セ縺吶
縲蜷繝輔か繝シ繝隕∫エ縺ッ erct 繧ソ繧ー縺ョ繧医≧縺ェ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈カ亥悉縺吶k邉サ縺ョ繧ソ繧ー縺ァ豸亥悉縺輔l縺ヲ縺励∪縺縺セ縺吶ョ縺ァ縲√◎縺ョ縺セ縺医↓commit 繧ソ繧ー繧貞ョ溯。後☆繧句ソ隕√′縺ゅj縺セ縺吶
+ *editname
@er
蜷榊ュ : [edit name="f.sname" length=200][r]
蜷榊燕 : [edit name="f.name" length=200][r]
[link target=*ok]OK[endlink][r]
[link target=*cancel]繧ュ繝」繝ウ繧サ繝ォ[endlink][s]
*ok
; OK 縺碁∈謚槭&繧後◆
; commit 繧定。後▲縺ヲ螟画焚縺ォ莉」蜈・繧定。後≧
[commit]
[jump target=*exit]
*cancel
; 繧ュ繝」繝ウ繧サ繝ォ縺碁∈謚槭&繧後◆
; commit 縺ッ陦後o縺ェ縺
[jump target=*exit]
+
+ + copybookmark + 譬槭ョ繧ウ繝斐シ + 縲髱槭ヵ繝ェ繝シ繧サ繝シ繝悶Δ繝シ繝峨↓縺翫>縺ヲ縲’rom 螻樊ァ縺ァ謖螳壹&繧後◆逡ェ蜿キ縺ョ譬槭°繧 to 螻樊ァ縺ァ謖螳壹&繧後◆逡ェ蜿キ縺ョ譬槭∈蜀螳ケ縺ョ繧ウ繝斐シ繧定。後>縺セ縺吶 + + from + 繧ウ繝斐シ蜈縺ョ譬樒分蜿キ + yes + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー + 縲繧ウ繝斐シ蜈縺ョ譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶 + + + to + 繧ウ繝斐シ蜈医ョ譬樒分蜿キ + yes + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー + 縲繧ウ繝斐シ蜈医ョ譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶 + + + + copylay + 繝ャ繧、繝、諠蝣ア縺ョ繧ウ繝斐シ + 縲謖螳壹@縺溘Ξ繧、繝、縺ョ諠蝣ア繧偵さ繝斐シ縺励∪縺吶
縲縺溘□縺励∝酔遞ョ縺ョ繝ャ繧、繝、 ( 閭梧勹繝ャ繧、繝、蜷悟」ォ縲∝燕譎ッ繝ャ繧、繝、蜷悟」ォ縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、蜷悟」ォ )縺ァ縺ョ縺ソ繧ウ繝斐シ縺ァ縺阪∪縺吶
+ + srclayer + 繧ウ繝斐シ蜈繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 縺セ縺溘ッ 1 縺セ縺溘ッ 2 縺セ縺溘ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲繧ウ繝斐シ蜈縺ィ縺ェ繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ縺ィ srcpage 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺後さ繝斐シ蜈縺ォ縺ェ繧翫∪縺吶
縲base 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、 縺ォ縺ェ繧翫∪縺吶
縲0 縺セ縺溘ッ 1 縺セ縺溘ッ 2 繧呈欠螳壹☆繧九→蜑肴勹繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶
縲message0 縺セ縺溘ッ message1 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶ょ腰縺ォ message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current 繧ソ繧ー縺ァ謖螳壹@縺溽樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ォ縺ェ繧翫∪縺吶
+
+ + destlayer + 繧ウ繝斐シ蜈医Ξ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 縺セ縺溘ッ 1 縺セ縺溘ッ 2 縺セ縺溘ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲繧ウ繝斐シ蜈医→縺ェ繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ縺ィ destpage 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺後さ繝斐シ蜈医↓縺ェ繧翫∪縺吶
縲base 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、 縺ォ縺ェ繧翫∪縺吶
縲0 縺セ縺溘ッ 1 縺セ縺溘ッ 2 繧呈欠螳壹☆繧九→蜑肴勹繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶
縲message0 縺セ縺溘ッ message1 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶ょ腰縺ォ message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current 繧ソ繧ー縺ァ謖螳壹@縺溽樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ォ縺ェ繧翫∪縺吶
+
+ + srcpage + 繧ウ繝斐シ蜈繝壹シ繧ク + no + "fore" 縺セ縺溘ッ "back" + 縲繧ウ繝斐シ蜈縺ィ縺ェ繧九壹シ繧ク繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ縺ィ srclayer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺後さ繝斐シ蜈縺ォ縺ェ繧翫∪縺吶
縲"fore" 繧呈欠螳壹☆繧九→陦ィ繝壹シ繧ク縲"back" 繧呈欠螳壹☆繧九→陬上壹シ繧ク縺ォ縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィ "fore" 繧呈欠螳壹@縺溘→隕九↑縺輔l縺セ縺吶
+
+ + destpage + 繧ウ繝斐シ蜈医壹シ繧ク + no + "fore" 縺セ縺溘ッ "back" + 縲繧ウ繝斐シ蜈医→縺ェ繧九壹シ繧ク繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ縺ィ destlayer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺後さ繝斐シ蜈縺ォ縺ェ繧翫∪縺吶
縲"fore" 繧呈欠螳壹☆繧九→陦ィ繝壹シ繧ク縲"back" 繧呈欠螳壹☆繧九→陬上壹シ繧ク縺ォ縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィ "fore" 繧呈欠螳壹@縺溘→隕九↑縺輔l縺セ縺吶
+
+
+ + ct + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繝ェ繧サ繝繝 + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧偵Μ繧サ繝繝医@縺セ縺吶
縲縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ譁蟄励ッ豸亥悉縺輔l縲∵桃菴懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ッ陦ィ繝壹シ繧ク縺ョ message0 縺ォ謖螳壹&繧後∪縺吶
font 繧ソ繧ー縺ァ謖螳壹@縺滓枚蟄励ョ螻樊ァ縲style 繧ソ繧ー縺ァ謖螳壹@縺溘せ繧ソ繧、繝ォ縺ッ縺吶∋縺ヲ讓呎コ也憾諷九↓謌サ繧翫∪縺吶ゅ◆縺縺励position 繧ソ繧ー繧 layopt 繧ソ繧ー縺ァ謖螳壹@縺溷ア樊ァ縺ッ蠑輔″邯吶′繧後∪縺吶
縲縺薙l縺ォ蟇セ縺励er 繧ソ繧ー縺ッ縲∫樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励r豸亥悉縺励◆繧頑枚蟄励d繧ケ繧ソ繧、繝ォ縺ョ螻樊ァ繧呈ィ呎コ也憾諷九↓謌サ縺励◆繧翫☆繧九□縺代〒縺吶
縲縲*繝ゥ繝吶Ν蜷鋼隕句コ縺怜錐縲 蠖「蠑上ョ繝ゥ繝吶Ν縺ョ谺。縺ォ縺ッ縲√%縺ョ ct 繧ソ繧ー縺ゅk縺縺ッ cm 繧ソ繧ー繧呈嶌縺上∋縺阪〒縺吶( 譬槭ョ繝ュ繝シ繝画凾縺ォ縺ッ繝ゥ繝吶Ν縺九i螳溯。後′蟋九∪繧九′縲√Ο繝シ繝画凾縺ォ縺ッ蠢縺壹Γ繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励′繧ッ繝ェ繧「縺輔l繧九◆繧 )縲
+
+ + current + 謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ謖螳 + 縲謫堺ス懷ッセ雎。縺ィ縺吶k繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶ゆサ・蠕後∵枚遶繧font 繧ソ繧ー縺ァ縺ョ譁蟄怜ア樊ァ縺ョ謖螳壹l繧ソ繧ー遲峨ョ繧ッ繝ェ繝繧ッ蠕縺。縺ェ縺ゥ縺ッ縲√%縺ョ繝ャ繧、繝、縺ォ蟇セ縺励※陦後o繧後∪縺吶
縲message0 縺ッ繝繝輔か繝ォ繝医〒蜿ッ隕悶ョ迥カ諷九〒縺吶′縲[essage1 縺ッ layopt 繧ソ繧ー遲峨〒 visible=true 縺ィ縺励↑縺縺ィ陦ィ遉コ縺輔l縺ェ縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
+ + layer + 繝ャ繧、繝、蜷 + no + "message0" 縺セ縺溘ッ "message1" + 縲謫堺ス懷ッセ雎。縺ィ縺吶k繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
+
+ + page + 繝壹シ繧ク + no + "fore"(繝繝輔か繝ォ繝) 縺セ縺溘ッ "back" + 縲 陦ィ(fore)逕サ髱「縺ョ繝ャ繧、繝、繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「縺ョ繝ャ繧、繝、繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + withback + 陬上壹シ繧ク縺ォ繧よ緒逕サ縺吶k縺 + no + true 縺セ縺溘ッ false (繝繝輔か繝ォ繝) + 縲陦ィ繝壹シ繧ク縺悟ッセ雎。縺ョ蝣エ蜷医∬」上壹シ繧ク縺ォ繧ょ酔讒倥↓譁蟄励r謠冗判縺吶k縺九r謖螳壹@縺セ縺吶ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 縺梧欠螳壹&繧後◆縺ィ縺ソ縺ェ縺輔l縺セ縺吶ゅ陬上壹シ繧ク縺ォ蜷梧凾縺ォ譁蟄励r謠冗判縺吶k蠢隕√′縺ゅk縺ョ縺ッ縲∝酔譎ゅ↓繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧帝イ陦後&縺帙k蝣エ蜷医↑縺ゥ縺ァ縺吶 + +
+ + cursor + 繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺ョ螟画峩 + 縲繝槭え繧ケ繧ォ繝シ繧ス繝ォ繧貞、画峩縺励∪縺吶ゅ>縺壹l縺ョ螻樊ァ繧ら怐逡・縺吶l縺ー險ュ螳壹ッ螟峨o繧翫∪縺帙s縲
縲cr 縺ァ蟋九∪繧九槭え繧ケ繧ォ繝シ繧ス繝ォ螳壽焚縺ォ縺、縺縺ヲ縺ッ縲∝翠驥悟翠驥 SDK 繝倥Ν繝励ョ縲後槭え繧ケ繧ォ繝シ繧ス繝ォ螳壽焚荳隕ァ縲阪r蜿らァ縺励※縺上□縺輔>縲ゅ∪縺溘√◎縺ョ蝣エ蜷医ッ default=&crArrow 縺ョ繧医≧縺ォ縲∝ョ壽焚縺ョ蜑阪↓ & 險伜捷繧偵▽縺代※謖螳壹@縺ヲ縺上□縺輔>縲
縲繝槭え繧ケ繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ縺ォ縺ッ縲.cur 縺セ縺溘ッ .ani 縺ョ諡。蠑オ蟄舌r謖√▽繝槭え繧ケ繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ繧呈欠螳壹☆繧九%縺ィ縺後〒縺阪∪縺 ( 諡。蠑オ蟄舌ッ逵∫払縺励↑縺縺ァ縺上□縺輔> )縲
+ + default + 騾壼クク縺ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ + no + cr 縺ァ蟋九∪繧九き繝シ繧ス繝ォ螳壽焚 縺セ縺溘ッ 繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ蜷 + 騾壼クク縺ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ繧呈欠螳壹@縺セ縺吶
+
+ + pointed + 繝昴う繝ウ繝医@縺滓凾縺ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ + no + cr 縺ァ蟋九∪繧九き繝シ繧ス繝ォ螳壽焚 縺セ縺溘ッ 繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ蜷 + 繝ェ繝ウ繧ッ繧繝懊ち繝ウ繧偵昴う繝ウ繝医@縺溘→縺阪ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ繧呈欠螳壹@縺セ縺吶
+
+ + click + 繧ッ繝ェ繝繧ッ蠕縺。縺ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ + no + cr 縺ァ蟋九∪繧九き繝シ繧ス繝ォ螳壽焚 縺セ縺溘ッ 繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ蜷 + 繧ッ繝ェ繝繧ッ蠕縺。縺ョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ繧呈欠螳壹@縺セ縺吶
+
+ + draggable + 繝峨Λ繝繧ー蜿ッ閭ス縺ョ譎ゅョ繝槭え繧ケ繧ォ繝シ繧ス繝ォ + no + cr 縺ァ蟋九∪繧九き繝シ繧ス繝ォ螳壽焚 縺セ縺溘ッ 繧ォ繝シ繧ス繝ォ繝輔ぃ繧、繝ォ蜷 + position 繧ソ繧ー縺ァ draggable=true 縺ィ縺励◆縺ィ縺阪↓縲√槭え繧ケ縺後Γ繝繧サ繝シ繧ク繝ャ繧、繝、繧偵ラ繝ゥ繝繧ー蜿ッ閭ス縺ェ菴咲スョ縺ォ譚・縺溘→縺阪↓陦ィ遉コ縺輔l繧九槭え繧ケ繧ォ繝シ繧ス繝ォ繧呈欠螳壹@縺セ縺吶
+
+
+ + deffont + 繝繝輔か繝ォ繝医ョ譁蟄怜ア樊ァ險ュ螳 + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺吶k縲√ョ繝輔か繝ォ繝医ョ譁蟄怜ア樊ァ繧呈欠螳壹@縺セ縺吶
縲蜷螻樊ァ縺ョ隧ウ邏ー縺ォ縺、縺縺ヲ縺ッ font繧ソ繧ー繧呈欠螳壹@縺ヲ縺上□縺輔>縲ゅ◆縺縺怜ア樊ァ縺ョ蛟、縺ィ縺励※ "default" 繧呈欠螳壹☆繧九%縺ィ縺ッ縺ァ縺阪∪縺帙s縲
縲縺薙%縺ァ謖螳壹@縺溷ア樊ァ縺ッ縲resetfont 繧ソ繧ー縺ァ螳滄圀縺ォ蜿肴丐縺輔l縺セ縺吶
縲騾縺ォ險縺縺ィ縲√%縺ョ繧ソ繧ー繧貞ョ溯。後@縺溘□縺代〒縺ッ縺吶$縺ォ縺ッ繝輔か繝ウ繝医ョ螻樊ァ縺ッ蜿肴丐縺輔l縺セ縺帙s縲Sesetfont 繧ソ繧ー繧貞ョ溯。後☆繧句ソ隕√′縺ゅj縺セ縺吶
+ + size + 譁蟄励し繧、繧コ + no + 譁蟄励し繧、繧コ(pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ譁蟄励し繧、繧コ繧呈欠螳壹@縺セ縺吶
+
+ + face + 繝輔か繝ウ繝亥錐 + no + 繝輔か繝ウ繝亥錐 縺セ縺溘ッ "user" + 縲繝繝輔か繝ォ繝医ョ繝輔か繝ウ繝亥錐繧呈欠螳壹@縺セ縺吶
+
+ + color + 譁蟄苓牡 + no + 0xRRGGBB 蠖「蠑 + 縲繝繝輔か繝ォ繝医ョ譁蟄苓牡繧呈欠螳壹@縺セ縺吶
+
+ + rubysize + 繝ォ繝薙ョ繧オ繧、繧コ + no + 繝ォ繝薙ョ譁蟄励し繧、繧コ(pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ繝ォ繝薙ョ譁蟄励ョ繧オ繧、繧コ繧呈欠螳壹@縺セ縺吶
+
+ + rubyoffset + 繝ォ繝薙ョ陦ィ遉コ菴咲スョ + no + 繝ォ繝薙ョ陦ィ遉コ繧ェ繝輔そ繝繝(pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ繝ォ繝薙ョ陦ィ遉コ繧ェ繝輔そ繝繝医r謖螳壹@縺セ縺吶
+
+ + shadow + 蠖ア繧定。ィ遉コ縺吶k縺 + no + true 縺セ縺溘ッ false + 縲繝繝輔か繝ォ繝医〒譁蟄励↓蠖ア繧偵▽縺代k縺九r謖螳壹@縺セ縺吶
+
+ + edge + 陲区枚蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false + 縲繝繝輔か繝ォ繝医〒譁蟄励r陲区枚蟄 ( 邵∝叙繧頑枚蟄 ) 縺ォ縺吶k縺九r謖螳壹@縺セ縺吶
+
+ + edgecolor + 陲区枚蟄励ョ陲九ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲繝繝輔か繝ォ繝医ョ譁蟄励ョ陲九ョ濶イ繧呈欠螳壹@縺セ縺吶
+
+ + shadowcolor + 蠖ア縺ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲繝繝輔か繝ォ繝医ョ蠖ア縺ョ濶イ繧呈欠螳壹@縺セ縺吶
+
+ + bold + 螟ェ譁蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false + 縲繝繝輔か繝ォ繝医〒譁蟄励r螟ェ譁蟄励↓縺吶k縺九r謖螳壹@縺セ縺吶
+
+
+ + defstyle + 繝繝輔か繝ォ繝医ョ繧ケ繧ソ繧、繝ォ縺ョ險ュ螳 + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺吶k縲√ョ繝輔か繝ォ繝医ョ陦後ョ繧ケ繧ソ繧、繝ォ繧呈欠螳壹@縺セ縺吶
縲蜷螻樊ァ縺ョ隧ウ邏ー縺ォ縺、縺縺ヲ縺ッ style繧ソ繧ー繧呈欠螳壹@縺ヲ縺上□縺輔>縲ゅ◆縺縺怜ア樊ァ縺ョ蛟、縺ィ縺励※ "default" 繧呈欠螳壹☆繧九%縺ィ縺ッ縺ァ縺阪∪縺帙s縲
縲縺薙%縺ァ謖螳壹@縺溷ア樊ァ縺ッ縲resetstyle 繧ソ繧ー縺ァ螳滄圀縺ォ蜿肴丐縺輔l縺セ縺吶
縲騾縺ォ險縺縺ィ縲√%縺ョ繧ソ繧ー繧貞ョ溯。後@縺溘□縺代〒縺ッ縺吶$縺ォ縺ッ繝輔か繝ウ繝医ョ螻樊ァ縺ッ蜿肴丐縺輔l縺セ縺帙s縲Sesetstyle 繧ソ繧ー繧貞ョ溯。後☆繧句ソ隕√′縺ゅj縺セ縺吶
+ + linespacing + 陦碁俣 + no + 陦碁俣 (pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ陦碁俣繧呈欠螳壹@縺セ縺吶
+
+ + pitch + 蟄鈴俣 + no + 蟄鈴俣繧ェ繝輔そ繝繝(pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ蟄鈴俣縺ョ繧ェ繝輔そ繝繝医r pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
+
+ + linesize + 譁蟄励し繧、繧コ縺ョ莠育エ繧オ繧、繧コ + no + 莠育エ繧オ繧、繧コ(pixel蜊倅ス) + 縲繝繝輔か繝ォ繝医ョ陦後ョ蟷繧呈欠螳壹@縺セ縺吶
+
+
+ + delay + 譁蟄励ョ陦ィ遉コ騾溷コヲ縺ョ險ュ螳 + 縲譁蟄励ョ陦ィ遉コ騾溷コヲ繧呈欠螳壹@縺セ縺吶
縲譁蟄苓。ィ遉コ繧偵ヮ繝シ繧ヲ繧ァ繧、繝医↓縺吶k縺ォ縺ッ nowait 繧ソ繧ー繧偵▽縺九≧縺薙→繧ゅ〒縺阪∪縺吶
+ + speed + 譁蟄励え繧ァ繧、繝 + yes + "nowait" 縺セ縺溘ッ "user" 縺セ縺溘ッ繧ヲ繧ァ繧、繝医ョ蛟、(ms蜊倅ス) + 縲"nowait" 繧呈欠螳壹☆繧九→縲∵枚蟄励ョ陦ィ遉コ縺ォ繧ヲ繧ァ繧、繝医r縺九¢縺壹↓縲∽ク豌励↓譁蟄励′陦ィ遉コ縺輔l縺セ縺吶"user" 繧呈欠螳壹☆繧九→縲ー繧キ繧ケ繝繝|譁蟄鈴溷コヲ] 縺ァ繝ヲ繝シ繧カ繝シ縺梧欠螳壹@縺滄溷コヲ縺ォ縺ェ繧翫∪縺(繝繝輔か繝ォ繝)縲ゅえ繧ァ繧、繝医ョ蛟、繧呈欠螳壹☆繧九→縲∝、縺ァ遉コ縺励◆譎る俣縺ォ縺、縺 1 譁蟄励ョ騾溷コヲ縺ァ譁蟄励r陦ィ遉コ縺励∪縺吶
縲譁蟄苓。ィ遉コ騾溷コヲ縺ッ縲√☆縺ケ縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ァ蜷後§縺ォ縺ェ繧翫∪縺吶
+
+
+ + disablestore + 譬槭ョ讖溯ス縺ョ荳譎ら噪縺ェ菴ソ逕ィ荳榊庄 + 縲縲梧槭r縺ッ縺輔縲阪ョ讖溯ス繧剃ク譎ら噪縺ォ菴ソ逕ィ荳榊庄閭ス縺ォ縺励∪縺吶
縲莉・蠕後√そ繝シ繝門庄閭ス縺ェ繝ゥ繝吶Ν繧帝夐℃縺励↑縺髯舌j縲梧槭r縺ッ縺輔縲阪ョ讖溯ス縺ッ菴ソ逕ィ荳榊庄閭ス縺ォ縺ェ繧翫∪縺吶
縲KAG 襍キ蜍慕峩蠕後ッ縲√%縺ョ縲御スソ逕ィ荳榊庄閭ス縲阪〒縲梧槭r縺ッ縺輔縲阪′菴ソ逕ィ荳榊庄縺ョ迥カ諷九↓縺ェ縺」縺ヲ縺翫j縲√そ繝シ繝門庄閭ス縺ェ繝ゥ繝吶Ν繧帝夐℃縺励↑縺髯舌j縲梧槭r縺ッ縺輔縲阪ョ讖溯ス縺ッ菴ソ逕ィ縺ァ縺阪∪縺帙s縲
縲繧イ繝シ繝縺ョ繝。繧、繝ウ繝。繝九Η繝シ縺ェ縺ゥ縲∵槭r縺ッ縺輔s縺ァ繧ゆサ墓婿縺ョ縺ェ縺縺ィ縺薙m縺ォ險倩ソー縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ォ蟇セ縺励store 繧ソ繧ー縺ァ縺ッ譬槭r縺ッ縺輔繝サ縺溘←繧九ョ荳。譁ケ縺ョ讖溯ス繧呈£荵逧縺ォ菴ソ逕ィ荳榊庄繝サ蜿ッ縺ォ險ュ螳壹〒縺阪∪縺吶
+ + store + 縲梧槭r縺ッ縺輔縲阪ョ讖溯ス + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲縲梧槭r縺ッ縺輔縲阪ョ讖溯ス繧剃スソ逕ィ荳榊庄縺ォ縺吶k縺九r謖螳壹@縺セ縺吶
縲菴ソ逕ィ荳榊庄縺ォ縺吶k縺ィ縺阪↓ true 繧定ィュ螳壹@縺セ縺吶
+
+ + restore + 縲梧槭r縺溘←繧九阪ョ讖溯ス + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲縲梧槭r縺溘←繧九阪ョ讖溯ス繧剃スソ逕ィ荳榊庄縺ォ縺吶k縺九r謖螳壹@縺セ縺吶
縲菴ソ逕ィ荳榊庄縺ォ縺吶k縺ィ縺阪↓ true 繧定ィュ螳壹@縺セ縺吶
縲store 螻樊ァ縺ィ驕輔>縲√%縺。繧峨ッ螻樊ァ繧堤怐逡・縺吶k縺ィfalse 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+
+ + edit + 蜊倅ク陦後お繝繧」繝繝医ョ菴懈 + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ォ縺ェ縺」縺ヲ縺繧九Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ縲∫樟蝨ィ縺ョ菴咲スョ縺ォ縲∫樟蝨ィ縺ョ繝輔か繝ウ繝医〒縲∽ク陦後ョ縺ソ縺ョ譁蟄怜励r邱ィ髮縺ァ縺阪k蜈・蜉帶ャ(繧ィ繝繧」繝繝)繧剃ス懈舌@縺セ縺吶ゅ邱ィ髮縺後♀縺薙↑繧上l縺滓枚蟄怜励ッ縲commit 繧ソ繧ー縺悟ョ溯。後&繧後k縺セ縺ァ縲∵欠螳壹@縺溷、画焚縺ォ莉」蜈・縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲 + + name + 螟画焚蜷 + yes + 螟画焚蜷 + 縲蜈・蜉帙@縺滓枚蟄怜励r譬シ邏阪☆繧句、画焚繧呈欠螳壹@縺セ縺吶
縲繧ゅ@螟画焚縺ォ縺吶〒縺ォ譁蟄怜励′蜈・縺」縺ヲ縺縺溷エ蜷医ッ縲∝腰荳陦後お繝繧」繝繝医ョ蛻晄悄譁蟄怜励→縺励※陦ィ遉コ縺輔l縺セ縺吶
+
+ + length + + no + 蟷 (pixel 蜊倅ス) + 縲蜊倅ク陦後お繝繧」繝繝医ョ蟷 ( 邵ヲ譖ク縺阪ョ蝣エ蜷医ッ鬮倥& ) 繧偵ヴ繧ッ繧サ繝ォ蜊倅ス阪〒謖螳壹@縺セ縺吶 + + + bgcolor + 閭梧勹濶イ + no + 0xRRGGBB 蠖「蠑 + 縲閭梧勹濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶 + + + opacity + 閭梧勹濶イ縺ョ荳埼乗主コヲ + no + 0(螳悟ィ騾乗) 縲 255(螳悟ィ荳埼乗) + 縲bgcolor 螻樊ァ縺ァ謖螳壹@縺溯レ譎ッ濶イ縺ョ荳埼乗主コヲ繧 0 縲 255 縺ァ謖螳壹@縺セ縺吶 + + + color + 譁蟄苓牡 + no + 0xRRGGBB 蠖「蠑 + 縲譁蟄苓牡繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶 + + + maxchars + 譛螟ァ譁蟄玲焚 + no + 譛螟ァ譁蟄玲焚 + 縲蜈・蜉帙〒縺阪k譛螟ァ譁蟄玲焚繧呈欠螳壹@縺セ縺吶0 繧呈欠螳壹☆繧九→辟。蛻カ髯舌↓縺ェ繧翫∪縺吶
縲繝繝輔か繝ォ繝医〒縺ッ辟。蛻カ髯舌〒縺吶
+
+
+ + else + if 縺ョ荳ュ霄ォ縺悟ョ溯。後&繧後↑縺九▲縺溘→縺阪↓螳溯。 + if 繧ソ繧ー繧ゅ@縺上ッ elsif 繧ソ繧ー縺ィ endif 繧ソ繧ー縺ョ髢薙〒逕ィ縺繧峨l縺セ縺吶Jf 縺セ縺溘ッ elsif 繝悶Ο繝繧ッ縺ョ荳ュ霄ォ縺後イ縺ィ縺、繧ょョ溯。後&繧後※縺縺ェ縺縺ィ縺阪‘lse 縺九i endif 縺セ縺ァ縺ョ髢薙r螳溯。後@縺セ縺吶
縲菴ソ縺譁ケ縺ョ萓九↓縺、縺縺ヲ縺ッ縲if 繧ソ繧ー縺ョ鬆逶ョ繧貞盾辣ァ縺励※縺上□縺輔>縲
+
+ + elsif + 縺昴l縺セ縺ァ縺ョ if 縺ョ荳ュ霄ォ縺悟ョ溯。後&繧後※縺縺ェ縺九▲縺溘→縺阪↓縲∵擅莉カ莉倥″縺ァ螳溯。 + if 繧ソ繧ー縺ィ endif 繧ソ繧ー縺ョ髢薙〒逕ィ縺繧峨l縺セ縺吶ゅ◎繧後∪縺ァ縺ョ if 繧ソ繧ー縺セ縺溘ッ elsif 繧ソ繧ー縺ョ荳ュ霄ォ縺後イ縺ィ縺、繧ょョ溯。後&繧後※縺縺ェ縺縺ィ縺阪↓蠑上r隧穂セ。縺励√◎縺ョ邨先棡縺檎悄縺ェ繧峨ー elsif 縺九i谺。縺ョ elsif繝サelse繝サendif 縺セ縺ァ縺ョ髢薙r螳溯。後@縺セ縺吶
縲菴ソ縺譁ケ縺ョ萓九↓縺、縺縺ヲ縺ッ縲if 繧ソ繧ー縺ョ鬆逶ョ繧貞盾辣ァ縺励※縺上□縺輔>縲
+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶
+
+
+ + emb + 蠑剰ゥ穂セ。邨先棡縺ョ蝓九a霎シ縺ソ + 縲exp 縺ァ遉コ縺輔l縺溷シ上r隧穂セ。(螳溯。)縺励√◎縺ョ邨先棡繧貞沂繧∬セシ縺ソ縺セ縺吶
縲螟画焚繧偵す繝翫Μ繧ェ荳ュ縺ォ陦ィ遉コ縺輔○縺溘>蝣エ蜷医↓菴ソ縺縺セ縺吶
縲騾壼クク縺ッ縲eval 繧ソ繧ー縺ァ莉」蜈・縺励◆ 螟画焚縺ョ蜀螳ケ縺ォ鄂ョ縺肴鋤縺医∪縺吶
+ [eval exp="f.value1='螟画焚縺ョ蛟、縺繧医懊s'"]

縺ィ縺ゥ縺薙°縺ァ譖ク縺縺ヲ縺翫>縺ヲ縲

[emb exp="f.value1"]

縺ィ譖ク縺上→縲√%縺ョ emb 繧ソ繧ー縺 螟画焚縺ョ蛟、縺繧医懊s 縺ィ縺縺蜀螳ケ縺ォ鄂ョ縺肴鋤繧上j縺セ縺吶
+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶ゅ%縺薙〒隧穂セ。縺輔l縺溷シ上ョ邨先棡縺後√%縺ョ emb 繧ソ繧ー縺ィ鄂ョ縺肴鋤繧上j縺セ縺吶 + +
+ + endhact + 繝。繝繧サ繝シ繧ク螻・豁エ繧「繧ッ繧キ繝ァ繝ウ縺ョ邨ゆコ + hact 繧ソ繧ー縺ァ險ュ螳壹@縺溘Γ繝繧サ繝シ繧ク螻・豁エ繧「繧ッ繧キ繝ァ繝ウ繧堤オゆコ(險ュ螳壹r繧ッ繝ェ繧「)縺励∪縺吶 + + + endif + 譚。莉カ縺ォ繧医j繧キ繝翫Μ繧ェ繧貞ョ溯。(縺ョ邨ゆコ) + if 繧ソ繧ー縺ョ邨ゆコ繧堤、コ縺励∪縺吶Fndignore 縺ィ縺セ縺」縺溘¥蜷御ク縺ョ蜍穂ス懊r縺励∪縺吶 + + + endignore + 譚。莉カ縺ォ繧医j繧キ繝翫Μ繧ェ繧堤┌隕(縺ョ邨ゆコ) + ignore 繧ソ繧ー縺ョ邨ゆコ繧堤、コ縺励∪縺吶 + + + endindent + 繧、繝ウ繝繝ウ繝医ョ隗」髯、 + indent 繧ソ繧ー縺ァ險ュ螳壹@縺溘う繝ウ繝繝ウ繝医r隗」髯、縺励∪縺吶る壼クク縺ッ謾ケ陦後ョ蜑阪↓險倩ソー縺励∪縺吶 + + + endlink + 繝上う繝代シ繝ェ繝ウ繧ッ(縺ョ邨ゆコ) + link 繧ソ繧ー縺ァ髢句ァ九@縺溘ワ繧、繝代シ繝ェ繝ウ繧ッ縺ョ邨ゆコ繧堤、コ縺励∪縺吶 + + + endmacro + 繝槭け繝ュ縺ョ險倩ソー(縺ョ邨ゆコ) + macro 繧ソ繧ー縺ァ險倩ソー繧帝幕蟋九@縺溘槭け繝ュ縺ョ邨ゆコ繧堤、コ縺励∪縺吶 + + + endnowait + 譁蟄苓。ィ遉コ繝弱シ繧ヲ繧ァ繧、繝(縺ョ邨ゆコ) + 縲譁蟄励ョ陦ィ遉コ騾溷コヲ繧偵nowait 繧ソ繧ー縺ァ繝弱シ繧ヲ繧ァ繧、繝医↓縺吶k逶エ蜑阪ョ譁蟄苓。ィ遉コ騾溷コヲ縺ォ謌サ縺励∪縺吶
+
+ + endscript + TJS 繧ケ繧ッ繝ェ繝励ヨ縺ョ險倩ソー(縺ョ邨ゆコ) + 縲[iscript] 縺ァ險倩ソー縺励◆繧ケ繧ッ繝ェ繝励ヨ縺ョ險倩ソー縺ョ邨ゆコ繧堤、コ縺励∪縺吶
縺薙ョ繧ソ繧ー縺ョ縺ゅk陦後↓縺ッ縲√%縺ョ繧ソ繧ー縺励°譖ク縺縺ヲ縺ッ縺縺代∪縺帙s ( 陦梧忰縺ョ \ 險伜捷繧ゆク榊庄 )縲
+
+ + er + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ譁蟄励ョ豸亥悉 + 縲迴セ蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励r豸亥悉縺励∪縺吶
ct 繧ソ繧ー縺ィ驕輔≧縺ョ縺ッ縲‘r 繧ソ繧ー縺ッ迴セ蝨ィ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励r豸亥悉縺励∵枚蟄怜ア樊ァ縺ィ繧ケ繧ソ繧、繝ォ繧偵Μ繧サ繝繝医☆繧九□縺代〒縲…t 繧ソ繧ー縺ョ繧医≧縺ォ縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ譁蟄励r豸亥悉縺励◆繧翫∵桃菴懷ッセ雎。縺ョ繝ャ繧、繝、繧 message0 縺ォ謌サ縺励◆繧翫@縺セ縺帙s縲
+
+ + erasebookmark + 譬槭ョ豸亥悉 + 縲髱槭ヵ繝ェ繝シ繧サ繝シ繝悶Δ繝シ繝峨↓縺翫>縺ヲ縲∵欠螳壹@縺溽分蜿キ縺ョ譬槭r豸亥悉縺励∪縺吶よ槭ッ"(譛ェ險ュ螳)"縺ォ縺ェ繧翫∪縺吶 + + place + 豸亥悉縺吶k譬槭ョ逡ェ蜿キ + no + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー(0縺後ョ繝輔か繝ォ繝) + 縲譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶 + + + + erasemacro + 繝槭け繝ュ縺ョ豸亥悉 + macro 繧ソ繧ー縺ァ險倩ソー縺励◆繝槭け繝ュ繧呈カ亥悉縺励∪縺吶 + + name + 繧ソ繧ー蜷 + yes + 繧ソ繧ー蜷 + 縲豸亥悉縺吶k繧ソ繧ー繧呈欠螳壹@縺セ縺吶ゅ槭け繝ュ縺ィ縺励※螳夂セゥ縺輔l縺溘ち繧ー縺ョ縺ソ繧呈カ亥悉縺吶k縺薙→縺悟コ譚・縺セ縺吶 + + + + eval + 蠑上ョ隧穂セ。 + 縲exp 縺ァ遉コ縺輔l縺溷シ上r隧穂セ。縺励∪縺吶る壼クク縺ッ螟画焚縺ク縺ョ蛟、縺ョ莉」蜈・縺ォ逕ィ縺縺セ縺吶
縲exp 縺ォ縺ッ莉サ諢上ョ TJS 蠑上r謖螳壹〒縺阪k縺ョ縺ァ縲ゝJS 縺ィ縺励※譛牙柑縺ェ蠑上〒縺ゅl縺ー菴輔〒繧りゥ穂セ。縺ァ縺阪∪縺吶
+ [eval exp="f.test=500"]
;竊代ご繝シ繝螟画焚 test 縺ォ謨ー蛟、繧剃サ」蜈・縺励※縺繧
[eval exp="f.test2='譁蟄怜'"]
;竊代ご繝シ繝螟画焚 test2 縺ォ譁蟄怜励r莉」蜈・縺励※縺繧
[eval exp="sf.test=400"]
;竊代す繧ケ繝繝螟画焚 test 縺ォ謨ー蛟、繧剃サ」蜈・縺励※縺繧
[eval exp="f.test2=f.test*3"]
;竊代ご繝シ繝螟画焚 test2 縺ォ 繧イ繝シ繝螟画焚 test 縺ョ 3 蛟阪ョ謨ー蛟、繧剃サ」蜈・縺励※縺繧
+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶 + +
+ + fadebgm + BGM縺ョ繝輔ぉ繝シ繝 + 縲迴セ蝨ィ貍泌・丈クュ縺ョ BGM 繧呈欠螳夐浹驥上∪縺ァ繝輔ぉ繝シ繝峨@縺セ縺吶
縲繝輔ぉ繝シ繝臥オゆコ蠕後b譖イ縺ッ貍泌・上&繧後◆縺セ縺セ縺ァ縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ゅヵ繧ァ繝シ繝峨ョ邨ゆコ繧貞セ縺、縺ォ縺ッ縲wb 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + volume + 髻ウ驥 + yes + 髻ウ驥% (0縲100) + 縲繝輔ぉ繝シ繝牙セ後↓蛻ー驕斐&縺帙k BGM 縺ョ髻ウ驥上r % 縺ァ謖螳壹@縺セ縺吶
縲100 縺御ク企剞縺ァ縺吶る浹驥上ョ謚大宛縺ョ縺ソ繧偵し繝昴シ繝医@縺セ縺(蠅怜ケ縺ッ髻ウ貅舌ョ迚ケ諤ァ荳翫√〒縺阪∪縺帙s)縲
+
+ + time + 繝輔ぉ繝シ繝画凾髢 + yes + 譎る俣(ms蜊倅ス) + 縲繝輔ぉ繝シ繝峨r陦後▲縺ヲ縺繧区凾髢薙r ms 蜊倅ス阪〒謖螳壹@縺セ縺吶3000 縺ィ謖螳壹☆繧後ー 3 遘帝俣縺ョ髢薙√ヵ繧ァ繝シ繝峨r陦後▲縺ヲ縺縺セ縺吶 + +
+ + fadeinbgm + 繝輔ぉ繝シ繝峨う繝ウ縺励↑縺後i縺ョBGM蜀咲函髢句ァ + 縲BGM 繝輔ぃ繧、繝ォ繧呈シ泌・上@縺セ縺吶′縲∵峇縺ョ蜈磯ュ縺ァ繝輔ぉ繝シ繝峨う繝ウ繧定。後>縺セ縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ゅヵ繧ァ繝シ繝峨ョ邨ゆコ繧貞セ縺、縺ォ縺ッ縲『b 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + storage + 蜀咲函縺吶k譖イ + yes + BGM 繝輔ぃ繧、繝ォ蜷 縺セ縺溘ッ CD 繝医Λ繝繧ッ逡ェ蜿キ + 縲貍泌・上☆繧 BGM 繝輔ぃ繧、繝ォ蜷阪∪縺溘ッ CD 繝医Λ繝繧ッ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶 + + + loop + 繝ォ繝シ繝励☆繧九° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲BGM 繧偵Ν繝シ繝励☆繧九°繧呈欠螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺吶Galse 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺帙s縲
縲逵∫払縺吶k縺ィ true 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + time + 繝輔ぉ繝シ繝画凾髢 + yes + 譎る俣(ms蜊倅ス) + 縲繝輔ぉ繝シ繝峨う繝ウ繧定。後▲縺ヲ縺繧区凾髢薙r ms 蜊倅ス阪〒謖螳壹@縺セ縺吶3000 縺ィ謖螳壹☆繧後ー 3 遘帝俣縺ョ髢薙√ヵ繧ァ繝シ繝峨う繝ウ繧定。後▲縺ヲ縺縺セ縺吶 + +
+ + fadeinse + 蜉ケ譫憺浹縺ョ繝輔ぉ繝シ繝峨う繝ウ蜀咲函 + 縲蜉ケ譫憺浹繧偵ヵ繧ァ繝シ繝峨う繝ウ縺励↑縺後i蜀咲函縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ょセ縺、縺ォ縺ッ wf 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜉ケ譫憺浹繧貞咲函縺吶k繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ゆク縺、縺ョ繝舌ャ繝輔ぃ縺ァ縺ッ蜷梧凾縺ォ縺ッ荳縺、縺ョ蜉ケ譫憺浹繧帝ウエ繧峨☆縺薙→縺後〒縺阪∪縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + storage + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + yes + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲貍泌・上☆繧句柑譫憺浹繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
縲諡。蠑オ蟄舌ッ逵∫払蜿ッ閭ス縺ァ縺吶′縲∫怐逡・縺励◆蝣エ蜷医↓閾ェ蜍慕噪縺ォ謗「縺怜コ縺輔l繧九ョ縺ッ.wav 縺セ縺溘ッ .ogg 縺セ縺溘ッ .mp3 縺ョ諡。蠑オ蟄舌r謖√▽繝輔ぃ繧、繝ォ縺縺代〒縺吶( 縺溘□縺 ogg 縺ィ mp3 縺ョ蜀咲函縺ォ縺ッ SDK 莉伜ア槭ョ繝励Λ繧ー繧、繝ウ縺悟ソ隕 )
縺昴ョ縺サ縺九ョ繝励Λ繧ー繧、繝ウ縺ァ菴ソ逕ィ蜿ッ閭ス縺ォ縺ェ繧九◎縺ョ縺サ縺九ョ繝輔ぃ繧、繝ォ蠖「蠑上r謖螳壹☆繧句エ蜷医ッ諡。蠑オ蟄舌b謖螳壹@縺ヲ縺上□縺輔>縲
+
+ + time + 繝輔ぉ繝シ繝峨う繝ウ譎る俣 + yes + 繝輔ぉ繝シ繝峨う繝ウ譎る俣(ms) + 縲繝輔ぉ繝シ繝峨う繝ウ繧定。後▲縺ヲ縺繧区凾髢薙r繝溘Μ遘貞腰菴阪〒謖螳壹@縺セ縺吶 + + + loop + 郢ー繧願ソ斐@蜀咲函繧定。後≧縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲蜉ケ譫憺浹繧堤ケー繧願ソ斐@蜀咲函縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→郢ー繧願ソ斐@蜀咲函縺輔l縺セ縺吶Galse 繧呈欠螳壹☆繧九→荳蝗樣剞繧翫ョ蜀咲函縺ィ縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィfalse 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
縲true 繧呈欠螳壹@縺溷エ蜷医ッ ws 繧ソ繧ー縺ァ蜉ケ譫憺浹蜀咲函縺ョ邨ゆコ繧貞セ縺、縺薙→縺ッ縺ァ縺阪∪縺帙s縲
+
+
+ + fadeoutbgm + BGM縺ョ繝輔ぉ繝シ繝峨い繧ヲ繝 + 縲迴セ蝨ィ貍泌・丈クュ縺ョ BGM 繧偵ヵ繧ァ繝シ繝峨い繧ヲ繝医@縺セ縺吶
縲繝輔ぉ繝シ繝峨い繧ヲ繝医′邨ゆコ縺吶k縺ィ譖イ縺ッ閾ェ蜍慕噪縺ォ蛛懈ュ「縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ゅヵ繧ァ繝シ繝峨ョ邨ゆコ繧貞セ縺、縺ォ縺ッ縲『b 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + time + 繝輔ぉ繝シ繝画凾髢 + yes + 譎る俣(ms蜊倅ス) + 縲繝輔ぉ繝シ繝峨い繧ヲ繝医r陦後▲縺ヲ縺繧区凾髢薙r ms 蜊倅ス阪〒謖螳壹@縺セ縺吶3000 縺ィ謖螳壹☆繧後ー 3 遘帝俣縺ョ髢薙√ヵ繧ァ繝シ繝峨い繧ヲ繝医r陦後▲縺ヲ縺縺セ縺吶 + +
+ + fadeoutse + 蜉ケ譫憺浹縺ョ繝輔ぉ繝シ繝峨い繧ヲ繝 + 縲蜉ケ譫憺浹繧偵ヵ繧ァ繝シ繝峨い繧ヲ繝医@縺セ縺吶ゅヵ繧ァ繝シ繝峨い繧ヲ繝医@邨ゅo繧九→蜀咲函縺ッ閾ェ蜍慕噪縺ォ蛛懈ュ「縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ょセ縺、縺ォ縺ッ wf 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜉ケ譫憺浹繧偵ヵ繧ァ繝シ繝峨い繧ヲ繝医☆繧九ヰ繝繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + time + 繝輔ぉ繝シ繝峨い繧ヲ繝域凾髢 + yes + 繝輔ぉ繝シ繝峨い繧ヲ繝域凾髢(ms) + 縲繝輔ぉ繝シ繝峨い繧ヲ繝医r陦後▲縺ヲ縺繧区凾髢薙r繝溘Μ遘貞腰菴阪〒謖螳壹@縺セ縺吶 + +
+ + fadese + 蜉ケ譫憺浹縺ョ繝輔ぉ繝シ繝 + 縲蜉ケ譫憺浹繧呈欠螳壹ョ蛻ー驕秘浹驥上∪縺ァ繝輔ぉ繝シ繝峨@縺セ縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ょセ縺、縺ォ縺ッ wf 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜉ケ譫憺浹繧偵ヵ繧ァ繝シ繝峨☆繧九ヰ繝繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + time + 繝輔ぉ繝シ繝画凾髢 + yes + 繝輔ぉ繝シ繝画凾髢(ms) + 縲繝輔ぉ繝シ繝峨r陦後▲縺ヲ縺繧区凾髢薙r繝溘Μ遘貞腰菴阪〒謖螳壹@縺セ縺吶 + + + volume + 蛻ー驕秘浹驥 + yes + 髻ウ驥% (0縲100) + 縲繝輔ぉ繝シ繝峨ョ蛻ー驕秘浹驥上r % 縺ァ謖螳壹@縺セ縺吶ゅ100 縺御ク企剞縺ァ縺吶る浹驥上ョ謚大宛縺ョ縺ソ繧偵し繝昴シ繝医@縺セ縺(蠅怜ケ縺ッ髻ウ貅舌ョ迚ケ諤ァ荳翫√〒縺阪∪縺帙s)縲 + +
+ + font + 譁蟄怜ア樊ァ險ュ螳 + 縲譁蟄励ョ讒倥縺ェ螻樊ァ繧呈欠螳壹@縺セ縺吶
縲縺薙l繧峨ョ螻樊ァ縺ッ縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺斐→縺ォ蛟句挨縺ォ險ュ螳壹〒縺阪∪縺吶
縲縺縺壹l縺ョ螻樊ァ繧ゅ∫怐逡・縺吶k縺ィ蜑阪ョ迥カ諷九r蠑輔″邯吶℃縺セ縺吶ゅ∪縺溘‥efault 繧呈欠螳壹☆繧九→Config.tjs 蜀縺ァ謖螳壹@縺溘ョ繝輔か繝ォ繝医ョ蛟、縺ォ謌サ繧翫∪縺吶
縲edge 縺ィ shadow 縺ッ蜷梧凾縺ォ true 縺ォ縺励◆蝣エ蜷医ッ縲∬「区枚蟄励ョ縺ソ縺梧怏蜉ケ縺ォ縺ェ繧翫∝スア縺ッ辟。隕悶&繧後∪縺吶
縲縺薙l繧峨ョ螻樊ァ縺ッ縲resetfont 繧ソ繧ー繧 ct cm er 繧ソ繧ー縺悟ョ溯。後&繧後k縺ィ縲,onfig.tjs 蜀繧 deffont 繧ソ繧ー縺ァ謖螳壹@縺溘ョ繝輔か繝ォ繝医ョ蛟、縺ォ謌サ繧翫∪縺吶
+ + size + 譁蟄励し繧、繧コ + no + 譁蟄励し繧、繧コ(pixel蜊倅ス) 縺セ縺溘ッ "default" + 縲譁蟄励し繧、繧コ繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
+
+ + face + 繝輔か繝ウ繝亥錐 + no + 繝輔か繝ウ繝亥錐 縺セ縺溘ッ "default" 縺セ縺溘ッ "user" + 縲繝輔か繝ウ繝亥錐繧呈欠螳壹@縺セ縺吶
縲繝輔か繝ウ繝亥錐縺ォ縺ッ譖匁乂縺ェ謖螳壹ッ縺ァ縺阪∪縺帙s縲ゅせ繝壹シ繧ケ縲∝濠隗抵シ丞ィ隗偵b豁」遒コ縺ォ謖螳壹@縺ヲ縺上□縺輔>縲
縲隍謨ー縺ョ繝輔か繝ウ繝亥錐繧偵き繝ウ繝槭〒蛹コ蛻縺」縺ヲ謖螳壹〒縺阪∪縺吶ゅ%縺ョ蝣エ蜷医ッ縲∵怙蛻昴ョ譁ケ縺ォ譖ク縺縺溘ヵ繧ゥ繝ウ繝医′蟄伜惠縺吶l縺ー縲√◎繧後′蜆ェ蜈医&繧後※驕ク謚槭&繧後∪縺吶
縲萓 : face="HG陦梧嶌菴,シュシウ シー繧エ繧キ繝繧ッ"
縲邵ヲ譖ク縺咲畑繝輔か繝ウ繝医ッ閾ェ蜍慕噪縺ォ險ュ螳壹&繧後∪縺吶ョ縺ァ縲√ヵ繧ゥ繝ウ繝亥錐縺ョ蜈磯ュ縺ォ @ 繝槭シ繧ッ繧偵▽縺代k蠢隕√ッ縺ゅj縺セ縺帙s縲ゅ"user" 繧呈欠螳壹☆繧後ー縲√Γ繝九Η繝シ縺ョ [譁蟄苓。ィ遉コ|繝輔か繝ウ繝] 縺ァ繝ヲ繝シ繧カ縺碁∈謚槭@縺溘ヵ繧ゥ繝ウ繝医↓縺ェ繧翫∪縺吶
+
+ + color + 譁蟄苓牡 + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ "default" + 縲譁蟄苓牡繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
+
+ + italic + 譁應ス薙↓縺吶k縺 + no + true 縺セ縺溘ッ false 縺セ縺溘ッ "default" + 縲譁蟄励r譁應ス薙↓縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→譁應ス薙↓縺ェ繧翫∪縺吶
+
+ + rubysize + 繝ォ繝薙ョ繧オ繧、繧コ + no + 繝ォ繝薙ョ譁蟄励し繧、繧コ(pixel蜊倅ス) 縺セ縺溘ッ "default" + 縲繝ォ繝(隱ュ縺ソ莉ョ蜷)縺ョ譁蟄励ョ繧オ繧、繧コ繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
+
+ + rubyoffset + 繝ォ繝薙ョ陦ィ遉コ菴咲スョ + no + 繝ォ繝薙ョ陦ィ遉コ繧ェ繝輔そ繝繝(pixel蜊倅ス) 縺セ縺溘ッ "default" + 縲繝ォ繝薙ョ陦ィ遉コ繧ェ繝輔そ繝繝医r pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶りイ縺ョ謨ー繧呈欠螳壹☆繧九→譛ャ譁縺ォ繧医j霑代>菴咲スョ縺ォ陦ィ遉コ縺輔l縺セ縺吶 + + + shadow + 蠖ア繧定。ィ遉コ縺吶k縺 + no + true 縺セ縺溘ッ false 縺セ縺溘ッ "default" + 縲譁蟄励↓蠖ア繧偵▽縺代k縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→蠖ア縺後▽縺阪∪縺吶
+
+ + edge + 陲区枚蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false 縺セ縺溘ッ "default" + 縲譁蟄励r陲区枚蟄 ( 邵∝叙繧頑枚蟄 ) 縺ォ縺吶k縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→陲区枚蟄励↓縺ェ繧翫∪縺吶
+
+ + edgecolor + 陲区枚蟄励ョ陲九ョ濶イ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ "default" + 縲譁蟄励ョ陲九ョ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
+
+ + shadowcolor + 蠖ア縺ョ濶イ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ "default" + 縲蠖ア縺ョ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
+
+ + bold + 螟ェ譁蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false 縺セ縺溘ッ "default" + 縲譁蟄励r螟ェ譁蟄励↓縺吶k縺九r謖螳壹@縺セ縺吶 true 繧呈欠螳壹☆繧九→螟ェ譁蟄励↓縺ェ繧翫∪縺吶
+
+
+ + freeimage + 繝ャ繧、繝、逕サ蜒上ョ隗」謾セ + 縲繝ャ繧、繝、縺ョ逕サ蜒上r隗」謾セ縺励∪縺吶
縲縺ィ縺上↓繧「繝九Γ繝シ繧キ繝ァ繝ウ諠蝣ア繧剃ソ晄戟縺励※縺繧九Ξ繧、繝、縺ッ縲髱櫁。ィ遉コ縺ォ縺励※縺縺ヲ繧 CPU 繝代Ρ繝シ繧剃スソ逕ィ縺吶k縺ョ縺ァ縲∽ク榊ソ隕√↓縺ェ縺」縺滓凾轤ケ縺ァ縺薙ョ繧ソ繧ー繧剃スソ縺」縺ヲ隗」謾セ縺吶k縺ィ縺縺縺九→諤昴>縺セ縺吶
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲逕サ蜒上r隗」謾セ縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + +
+ + glyph + 繧ッ繝ェ繝繧ッ蠕縺。險伜捷縺ョ謖螳 + 縲繧ッ繝ェ繝繧ッ蠕縺。縺ォ逕ィ縺繧狗判蜒上r謖螳壹@縺セ縺吶
縲line 繧 page 螻樊ァ縺ァ謖螳壹&繧後◆繝輔ぃ繧、繝ォ蜷阪ョ逕サ蜒上′險伜捷縺ィ縺励※縲√◎縺ョ繝輔ぃ繧、繝ォ蜷阪↓ .asd 繧偵▽縺代◆繝輔ぃ繧、繝ォ蜷阪′ 繧「繝九Γ繝シ繧キ繝ァ繝ウ繝ャ繧、繝、縺ョ繧ケ繧ッ繝ェ繝励ヨ縺ィ縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶
縲繧「繝九Γ繝シ繧キ繝ァ繝ウ繝ャ繧、繝、逕ィ縺ョ逕サ蜒上d繧ケ繧ッ繝ェ繝励ヨ縺ョ譖ク縺肴婿縺ォ縺、縺縺ヲ縺ッ縲、nimationLayer.tjs 繧貞盾辣ァ縺励※縺上□縺輔>縲
縲縺薙l繧峨ョ險ュ螳壹ッ縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺斐→縺ォ蛟句挨縺ォ險ュ螳壹〒縺阪∪縺吶
+ + line + 陦梧忰繧ッ繝ェ繝繧ッ蠕縺。險伜捷 + no + 陦梧忰繧ッ繝ェ繝繧ッ蠕縺。險伜捷繝輔ぃ繧、繝ォ蜷 + 縲陦梧忰繧ッ繝ェ繝繧ッ蠕縺。險伜捷逕サ蜒上ョ繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶よ僑蠑オ蟄舌ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲 + + + linekey + 陦梧忰繧ッ繝ェ繝繧ッ蠕縺。險伜捷縺ョ繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 繧ォ繝ゥ繝シ繧ュ繝シ繧呈欠螳壹@縺セ縺吶
image繧ソ繧ー縺ョ key 螻樊ァ繧貞盾辣ァ縺励※縺上□縺輔>縲
+
+ + page + 謾ケ繝壹シ繧ク繧ッ繝ェ繝繧ッ蠕縺。險伜捷 + no + 謾ケ繝壹シ繧ク繧ッ繝ェ繝繧ッ蠕縺。險伜捷繝輔ぃ繧、繝ォ蜷 + 縲謾ケ繝壹シ繧ク蠕縺。險伜捷逕サ蜒上ョ繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
諡。蠑オ蟄舌ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
+
+ + pagekey + 謾ケ繝壹シ繧ク繧ッ繝ェ繝繧ッ蠕縺。險伜捷縺ョ繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 繧ォ繝ゥ繝シ繧ュ繝シ繧呈欠螳壹@縺セ縺吶
image繧ソ繧ー縺ョ key 螻樊ァ繧貞盾辣ァ縺励※縺上□縺輔>縲
+
+ + fix + 險伜捷陦ィ遉コ菴咲スョ繧貞崋螳壹☆繧九° + no + true 縺セ縺溘ッ false + 縲險伜捷陦ィ遉コ菴咲スョ繧呈欠螳壻ス咲スョ縺ォ蝗コ螳壹☆繧九°縺ゥ縺縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→險伜捷縺ッ left 縺翫h縺ウ top 繧呈欠螳壹@縺滉ス咲スョ縺ォ陦ィ遉コ縺輔l縺セ縺吶
縲false 繧呈欠螳壹☆繧九→ left 縺翫h縺ウ top 螻樊ァ縺ッ辟。隕悶&繧後∬ィ伜捷縺ッ迴セ蝨ィ縺ョ譁蟄苓。ィ遉コ菴咲スョ縺ォ陦ィ遉コ縺輔l繧九h縺縺ォ縺ェ繧翫∪縺吶
+
+ + left + 險伜捷陦ィ遉コ菴咲スョ繧貞崋螳壹☆繧九° + no + 蟾ヲ遶ッ菴咲スョ(pixel蜊倅ス) + 縲fix 螻樊ァ繧 true 縺ォ縺励◆縺ィ縺阪↓險伜捷繧定。ィ遉コ縺吶k菴咲スョ縺ョ縺縺。縲∝キヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + top + 險伜捷陦ィ遉コ菴咲スョ繧貞崋螳壹☆繧九° + no + 荳顔ォッ菴咲スョ(pixel蜊倅ス) + 縲fix 螻樊ァ繧 true 縺ォ縺励◆縺ィ縺阪↓險伜捷繧定。ィ遉コ縺吶k菴咲スョ縺ョ縺縺。縲∽ク顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + +
+ + goback + 蜑阪↓謌サ繧 + 縲繝。繝九Η繝シ縺九i 繧キ繧ケ繝繝|蜑阪↓謌サ繧 繧帝∈謚槭@縺溘→縺阪→蜷後§蜍穂ス懊r縺励∪縺吶 + + ask + 遒コ隱阪r縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲∝燕縺ォ謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪r縺励∪縺吶Galse 繧呈欠螳壹☆繧九→蜑阪↓謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 繧呈欠螳壹@縺溘→縺ソ縺ェ縺輔l縺セ縺吶
縲蜑阪↓謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪〒繝ヲ繝シ繧カ縺後後>縺縺医阪r驕ク繧薙□蝣エ蜷医∝ョ溯。後ッ縺昴ョ縺セ縺セ邯咏カ壹@縺セ縺吶
+
+
+ + gotostart + 譛蛻昴↓謌サ繧 + startanchor 繧ソ繧ー縺ァ謖螳壹&繧後◆蝣エ謇縺ォ謌サ繧翫∪縺吶
縲繝。繝九Η繝シ縺九i 繧キ繧ケ繝繝|譛蛻昴↓謌サ繧 繧帝∈謚槭@縺溘→縺阪→蜷後§蜍穂ス懊r縺励∪縺吶
+ + ask + 遒コ隱阪r縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲∵怙蛻昴↓謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪r縺励∪縺吶Galse 繧呈欠螳壹☆繧九→譛蛻昴↓謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 繧呈欠螳壹@縺溘→縺ソ縺ェ縺輔l縺セ縺吶
縲譛蛻昴↓謌サ繧九°縺ゥ縺縺九ョ遒コ隱阪〒繝ヲ繝シ繧カ縺後後>縺縺医阪r驕ク繧薙□蝣エ蜷医∝ョ溯。後ッ縺昴ョ縺セ縺セ邯咏カ壹@縺セ縺吶
+
+
+ + graph + 繧、繝ウ繝ゥ繧、繝ウ逕サ蜒剰。ィ遉コ + 縲莉サ諢上ョ逕サ蜒上r繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ譁蟄嶺ス咲スョ縺ォ陦ィ遉コ縺励∪縺吶
縲隱ュ縺ソ霎シ縺ソ蜿ッ閭ス縺ェ蠖「蠑上ッ image 繧ソ繧ー縺ァ陦ィ遉コ縺吶k縺薙→縺ョ縺ァ縺阪k蜑肴勹逕サ蜒上→蜷後§縺ァ縺吶
縲騾壼クク縺ッ縲∵勸騾壹ョ繝輔か繝ウ繝医〒縺ッ蜷ォ縺セ繧後※縺縺ェ縺繧医≧縺ェ迚ケ谿翫↑險伜捷繧堤判蜒上→縺励※逕ィ諢上@縲√◎繧後r陦ィ遉コ縺輔○繧狗畑騾斐↓菴ソ逕ィ縺励∪縺吶
縲險伜捷縺ァ縺ェ縺上∫判蜒上r陦ィ遉コ縺吶k蝣エ蜷医ッ char 螻樊ァ縺ォ false 繧呈欠螳壹@縺ヲ縺上□縺輔>縲
縲繧医¥菴ソ縺險伜捷縺ッ繝槭け繝ュ繧堤オ繧薙〒縺翫¥縺ィ讌ス縺九→諤昴>縺セ縺吶
+ ; heart 縺ォ縺ッ繝上シ繝医槭シ繧ッ縺ョ逕サ蜒
[macro name="heart"][graph storage="heart" alt="(縺ッ縲懊→)"][endmacro]
; 莉・蠕後ーheart] 繧ソ繧ー縺ァ繝上シ繝医槭シ繧ッ繧剃スソ逕ィ蜿ッ閭ス
+ + storage + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + yes + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲陦ィ遉コ縺輔○縺溘>逕サ蜒上ヵ繧。繧、繝ォ蜷阪r謖螳壹@縺セ縺吶りェュ縺ソ霎シ繧√k蠖「蠑上ッ image繧ソ繧ー縺ァ隱ュ縺ソ霎シ繧√k蠖「蠑上→蜷後§縺ァ縺吶ゅ縺薙%縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ蜷 (諡。蠑オ蟄舌r髯、縺) 驛ィ蛻縺ォ _m 繧定ソス蜉縺励◆繝輔ぃ繧、繝ォ縺後√b縺励≠繧後ー縲√槭せ繧ッ逕サ蜒上→縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶ゅ槭せ繧ッ逕サ蜒上ッ蠢縺 256 濶イ繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ァ菫晏ュ倥@縺ヲ縺上□縺輔>縲 + + + key + 繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 縲縺ゥ縺ョ濶イ繧呈栢縺崎牡縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ謚懊″濶イ縺ッ辟。蜉ケ縺ォ縺ェ繧翫∪縺吶 縲key=0xRRGGBB 縺ィ縺縺蠖「蠑上〒 16 騾イ謨ー縺ァ謚懊″濶イ繧呈欠螳壹☆繧九→縲ヽR(襍、) GG(邱) BB(髱)縺ァ蝪励i繧後◆驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺励∪縺吶ゅ◆縺ィ縺医ー縲〔ey=0xff00ff 縺ァ縺ッ (r,g,b)=(255,0,255) 縺、縺セ繧顔悄繝槭ぞ繝ウ繝縺ョ驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺吶k縺ィ縺縺謖螳壹↓縺ェ繧翫∪縺吶
縲縺溘□蜊倥↓謨ー蛟、繧呈欠螳壹☆繧後ー縲√◎縺ョ繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ縺ョ謨ー蛟、縺梧栢縺崎牡縺ィ縺ェ繧翫∪縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲key=adapt 縺ィ謖螳壹☆繧後ー縲∬ェ蜍慕噪縺ォ謚懊″濶イ縺梧アコ螳壹&繧後∪縺吶ゆスソ逕ィ縺輔l繧区栢縺崎牡縺ッ縲∫判蜒上ョ荳逡ェ荳翫ョ繝ゥ繧、繝ウ縺ォ縺ヲ縲∽ク逡ェ螟壹¥菴ソ繧上l縺ヲ縺繧玖牡縺ァ縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲繝槭せ繧ッ逕サ蜒上r菴ソ逕ィ縺吶k蝣エ蜷医ッ縲√%縺ョ繧ソ繧ー繧呈欠螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲
+
+ + char + 譁蟄励→縺励※蜃ヲ逅縺吶k縺 + no + true (繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲true 繧呈欠螳壹☆繧九→縲∫判蜒上ッfont 繧ソ繧ー縺ァ謖螳壹@縺溯牡縲∝スア縲∬「区枚蟄励ョ迥カ諷九′縲∵枚蟄怜酔讒倥↓陦ィ遉コ縺輔l縺セ縺吶ゅ◎縺ョ縺溘a縲》rue 繧定ィュ螳壹☆繧九→逕サ蜒上ョ濶イ諠蝣ア縺ッ辟。隕悶&繧後∪縺吶ゅ∪縺溘∫判蜒上′蠖ア繧陲区枚蟄励〒縺ゅk蠢隕√ッ縺ゅj縺セ縺帙s縲
縲graph 繧ソ繧ー縺檎音谿願ィ伜捷縺ョ陦ィ遉コ縺ォ菴ソ繧上l繧九%縺ィ縺悟、壹>縺薙→繧呈Φ螳壹@縺ヲ繝繝輔か繝ォ繝医〒縺ッ true 縺ォ縺ェ縺」縺ヲ縺繧九ョ縺ァ縲∵勸騾壹ョ逕サ蜒上r陦ィ遉コ縺吶k蝣エ蜷医ッ豕ィ諢上@縺ヲ縺上□縺輔>縲
+
+ + alt + 莉」譖ソ譁蟄 + no + 莉」譖ソ譁蟄 + 縲繝。繝繧サ繝シ繧ク螻・豁エ縺ォ陦ィ遉コ縺吶k縲√%縺ョ逕サ蜒上ョ莉」譖ソ譁蟄励r謖螳壹@縺セ縺吶ゅΓ繝繧サ繝シ繧ク螻・豁エ縺ッ譁蟄玲ュ蝣ア縺励°陦ィ遉コ縺ァ縺阪∪縺帙s縺ョ縺ァ縲‖lt 螻樊ァ縺ォ謖螳壹&繧後◆譁蟄励′莉」繧上j縺ォ陦ィ遉コ縺輔l縺セ縺吶 + +
+ + hact + 繝。繝繧サ繝シ繧ク螻・豁エ繧「繧ッ繧キ繝ァ繝ウ + 縲繝。繝繧サ繝シ繧ク螻・豁エ縺ォ蟇セ縺吶k繧「繧ッ繧キ繝ァ繝ウ繧呈欠螳壹@縺セ縺吶ゅ%縺ョ繧ソ繧ー縺ィ endhact 繧ソ繧ー縺ァ蝗イ縺セ繧後◆驛ィ蛻縺ッ縲√Γ繝繧サ繝シ繧ク螻・豁エ荳翫〒繧ッ繝ェ繝繧ッ縺ァ縺阪k繧医≧縺ォ縺ェ繧翫√け繝ェ繝繧ッ縺輔l縺滓凾縺ォ螳溯。後☆繧 TJS 蠑上r謖螳壹☆繧九%縺ィ縺後〒縺阪∪縺吶る℃蜴サ縺ォ繝。繝繧サ繝シ繧ク縺ィ蜈ア縺ォ蜀咲函縺励◆螢ー繧偵√Γ繝繧サ繝シ繧ク螻・豁エ縺ョ繧ッ繝ェ繝繧ッ縺ァ蜀咲函縺ァ縺阪k繧医≧縺ォ縺吶k縺ェ縺ゥ縺ォ蠢懃畑縺ァ縺阪∪縺吶 + + exp + 螳溯。後☆繧句シ + yes + TJS蠑 + 縲繝。繝繧サ繝シ繧ク繧偵け繝ェ繝繧ッ縺励◆縺ィ縺阪↓螳溯。後☆繧 TJS 蠑上r謖螳壹@縺セ縺吶 + + + + hch + 邵ヲ荳ュ讓ェ繧定。ィ遉コ縺吶k + 縲邵ヲ荳ュ讓ェ ( 邵ヲ譖ク縺堺クュ縺ォ邂礼畑謨ー蟄暦シ呈。√r譖ク縺上h縺縺ェ蝣エ蜷医↓縺昴%縺縺第ィェ譖ク縺阪↓縺吶k譖ク縺肴婿 ) 縺ァ譁蟄励r陦ィ遉コ縺励∪縺吶
縲迴セ蝨ィ蟇セ雎。縺ィ縺ェ縺」縺ヲ縺繧九Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺檎クヲ譖ク縺阪Δ繝シ繝峨〒縺ゅk蠢隕√′縺ゅj縺セ縺吶
+ 莉頑律縺ッ蟷ウ謌深hch text="15"]蟷エ[hch text="12"]譛[hch text="30"]譌・ + + text + 陦ィ遉コ縺吶k譁蟄 + yes + 譁蟄 + 縲縺薙%縺ァ謖螳壹@縺滓枚蟄励′縺昴%縺縺第ィェ譖ク縺阪〒陦ィ遉コ縺輔l縺セ縺吶
+
+ + expand + 陦碁俣繧呈僑蠑オ縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲髟キ縺邵ヲ荳ュ讓ェ繧呈緒逕サ縺励h縺縺ィ縺励◆縺ィ縺阪↓陦碁俣繧定ェ蜍慕噪縺ォ諡。蠑オ縺励∪縺吶Galse 繧呈欠螳壹☆繧九→縲∫クヲ荳ュ讓ェ縺瑚。後°繧峨ッ縺ソ蜃コ縺ヲ豁」蟶ク縺ォ謠冗判縺輔l縺ェ縺蜿ッ閭ス諤ァ縺後≠繧翫∪縺吶′縲∬。碁俣縺ッ縺昴ョ縺セ縺セ縺ォ縺ェ繧翫∪縺 ( 騾壼クク蜊願ァ抵シ呈。√↑繧峨ー false 縺ァ OK )縲
縺薙ョ螻樊ァ繧呈欠螳壹@縺ェ縺縺ィ false 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶

+
+
+ + hidemessage + 繝。繝繧サ繝シ繧ク繧呈カ医☆ + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧剃ク譎ら噪縺ォ髫縺励∪縺吶ゅΓ繝九Η繝シ縺九i縲後Γ繝繧サ繝シ繧ク繧呈カ医☆縲阪r驕ク繧薙□縺ョ縺ィ蜷後§蜍穂ス懊r陦後>縺セ縺吶
縲繧ッ繝ェ繝繧ッ蠕縺。繧定。後▲縺溷セ後√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ッ陦ィ遉コ縺輔l縲∝ョ溯。後ッ邯咏カ壹@縺セ縺吶
+
+ + history + 繝。繝繧サ繝シ繧ク螻・豁エ縺ョ險ュ螳 + 縲繝。繝繧サ繝シ繧ク螻・豁エ縺ョ讖溯ス縺ォ髢「縺吶k險ュ螳壹r陦後>縺セ縺吶 + + output + 譁蟄玲ュ蝣ア縺ョ蜃コ蜉 + no + true 縺セ縺溘ッ false + 縲繝。繝繧サ繝シ繧ク螻・豁エ縺ク縺ョ譁蟄玲ュ蝣ア縺ョ蜃コ蜉帙r縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ陦ィ遉コ縺励◆譁蟄励′繝。繝繧サ繝シ繧ク螻・豁エ縺ォ陦ィ遉コ縺輔l繧九h縺縺ォ縺ェ繧翫∪縺吶
縲繧キ繝翫Μ繧ェ繧呈怙蛻昴↓螳溯。後@縺溘→縺阪ッ true 縺ョ迥カ諷九↓縺ェ縺」縺ヲ縺縺セ縺吶
縲false 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク螻・豁エ縺ォ縺ッ譁蟄玲ュ蝣ア縺ッ蜃コ蜉帙&繧後∪縺帙s縲
+
+ + enabled + 繝。繝繧サ繝シ繧ク螻・豁エ縺ョ陦ィ遉コ蜿ッ閭ス繝サ荳榊庄閭ス + no + true 縺セ縺溘ッ false + 縲繝。繝繧サ繝シ繧ク螻・豁エ繧定。ィ遉コ蜿ッ閭ス縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→陦ィ遉コ蜿ッ閭ス縺ォ縲’alse 繧呈欠螳壹☆繧九→陦ィ遉コ荳榊庄閭ス縺ォ縺ェ繧翫∪縺吶
縲繝ヲ繝シ繧カ繝シ縺ォ繝。繝繧サ繝シ繧ク螻・豁エ繧定。ィ遉コ縺輔○縺溘¥縺ェ縺蝣エ蜷医↓ false 縺ォ縺励※縺上□縺輔>縲
+
+
+ + hr + 繝。繝繧サ繝シ繧ク螻・豁エ縺ョ謾ケ陦/謾ケ繝壹シ繧ク + 縲繝。繝繧サ繝シ繧ク螻・豁エ繧呈隼陦後∪縺溘ッ謾ケ繝壹シ繧ク縺励∪縺吶 + + repage + 謾ケ繝壹シ繧ク縺九←縺縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲謾ケ繝壹シ繧ク繧定。後≧縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→謾ケ陦後〒縺ッ縺ェ縺乗隼繝壹シ繧ク縺瑚。後o繧後∪縺吶Galse 繧呈欠螳壹☆繧九→謾ケ陦後′陦後o繧後∪縺吶
縲縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
縲謾ケ繝壹シ繧ク縺ッ縲,onfig.tjs 縺ョ繝。繝繧サ繝シ繧ク螻・豁エ縺ョ險ュ螳壹〒 everypage 縺 true 縺ォ縺ェ縺」縺ヲ縺ェ縺縺ィ蜍穂ス懊@縺セ縺帙s縲
+
+
+ + if + 譚。莉カ縺ォ繧医j繧キ繝翫Μ繧ェ繧貞ョ溯。 + 蠑上r隧穂セ。縺励√◎縺ョ邨先棡縺 true ( 縺セ縺溘ッ 0 莉・螟 ) 縺ェ繧峨ー縲‘lsif繝サelse繝サendif 縺ョ縺縺壹l縺九∪縺ァ縺ォ縺ゅk譁遶繧繧ソ繧ー繧貞ョ溯。後@縲√◎縺縺ァ縺ェ縺蝣エ蜷医ッ辟。隕悶@縺セ縺吶
縲if 縲 endif 縺ョ髢薙↓縺ッ繝ゥ繝吶Ν繧呈検縺セ縺ェ縺縺ァ縺上□縺輔>縲
+ ; 萓1[if exp="false"]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[else]
縺薙%縺ッ陦ィ遉コ縺輔l繧
[endif]

; 萓2[if exp="false"]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[elsif exp="false"]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[else]
縺薙%縺ッ陦ィ遉コ縺輔l繧
[endif]

; 萓3[if exp="false"]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[elsif exp="true"]
縺薙%縺ッ陦ィ遉コ縺輔l繧
[else]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[endif]

; 萓4[if exp="true"]
縺薙%縺ッ陦ィ遉コ縺輔l繧
[elsif exp="true"]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[else]
縺薙%縺ッ陦ィ遉コ縺輔l縺ェ縺
[endif]

+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶ゅ%縺ョ蠑上ョ邨先棡縺 false ( 縺セ縺溘ッ 0 縺ェ繧峨ー縲‘lsif繝サelse繝サendif 繧ソ繧ー縺セ縺ァ縺ョ譁遶繧繧ソ繧ー縺檎┌隕悶&繧後∪縺吶
+
+
+ + ignore + 譚。莉カ縺ォ繧医j繧キ繝翫Μ繧ェ繧堤┌隕 + 縲蠑上r隧穂セ。縺励√◎縺ョ邨先棡縺 true ( 縺セ縺溘ッ 0 莉・螟 ) 縺ェ繧峨ー縲‘ndignore 繧ソ繧ー縺セ縺ァ縺ォ縺ゅk譁遶繧繧ソ繧ー縺檎┌隕悶&繧後∪縺吶
縲ignore 縲 endignore 縺ョ髢薙↓縺ッ繝ゥ繝吶Ν繧呈検縺セ縺ェ縺縺ァ縺上□縺輔>縲
+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶ゅ%縺ョ蠑上ョ邨先棡縺 true ( 縺セ縺溘ッ 0 莉・螟 )縺ェ繧峨ー縲‘ndignore 繧ソ繧ー縺セ縺ァ縺ョ譁遶繧繧ソ繧ー縺檎┌隕悶&繧後∪縺吶
+
+
+ + image + 逕サ蜒上ョ隱ュ縺ソ霎シ縺ソ + 縲逕サ蜒上r隱ュ縺ソ霎シ縺ソ縺セ縺吶Jmg 縺ァ繧 image 縺ァ繧ょ酔縺俶э蜻ウ縺ァ縺吶ょ、壹¥縺ョ螻樊ァ縺後≠繧翫∪縺吶′縲∝ソ鬆医↑縺ョ縺ッ storage 縺ィ layer 縺ョ縺ソ縺ァ縺吶
縲蜑肴勹繝ャ繧、繝、縺ッ KAG 蛻晄悄迥カ諷九〒縺ッ髱櫁。ィ遉コ迥カ諷九↑縺ョ縺ァ縲」isible=true 縺ィ縺吶l縺ー陦ィ遉コ縺輔l繧九h縺縺ォ縺ェ繧翫∪縺吶

縲濶イ隱ソ陬懈ュ」縺ッ隱ュ縺ソ霎シ繧逕サ蜒上↓蟇セ縺励※縲
繝サgrayscale 縺ォ繧医k繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ蛹
繝サ?gamma , ?floor , ?ceil 縺ォ繧医k繧ャ繝ウ繝櫁」懈ュ」
繝サmcolor, mopacity 縺ォ繧医k濶イ繝悶Ξ繝ウ繝
縺ョ鬆逡ェ縺ァ陦後o繧後∪縺吶
縲繧「繝九Γ繝シ繧キ繝ァ繝ウ諠蝣ア縺ョ菴懈舌ョ譁ケ豕輔ッ AnimationLayer.tjs 蜀繧貞盾辣ァ縺励※縺上□縺輔>縲
縲繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ョ菴ソ縺譁ケ縺ォ縺、縺縺ヲ縺ッ KAG 繧キ繧ケ繝繝繝ェ繝輔ぃ繝ャ繝ウ繧ケ繧貞盾辣ァ縺励※縺上□縺輔>縲
+ + storage + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + yes + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲隱ュ縺ソ霎シ縺ソ縺溘>逕サ蜒上r謖螳壹@縺セ縺吶よ僑蠑オ蟄舌ッ逵∫払蜿ッ閭ス縺ァ縺吶
縲縺薙%縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ蜷 (諡。蠑オ蟄舌r髯、縺) 驛ィ蛻縺ォ _m 繧定ソス蜉縺励◆繝輔ぃ繧、繝ォ縺後√b縺励≠繧後ー縲√槭せ繧ッ逕サ蜒上→縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶ゅ縺セ縺溘∝酔讒倥↓ _p 繧定ソス蜉縺励◆繝輔ぃ繧、繝ォ縺後√b縺励≠繧後ー縲√け繝ェ繝繧ォ繝悶Ν繝槭ャ繝礼畑縺ョ鬆伜沺逕サ蜒上→縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶
縲繝槭せ繧ッ逕サ蜒上ッ蠢縺 256 濶イ繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ァ菫晏ュ倥@縺ヲ縺上□縺輔>縲
縲鬆伜沺逕サ蜒上ッ縺九↑繧峨★ 256 濶イ縺ァ菫晏ュ倥@縺ヲ縺上□縺輔>縲
縲縺セ縺溘∵僑蠑オ蟄舌′ asd 縺ョ繝輔ぃ繧、繝ォ縺悟ュ伜惠縺吶l縺ー繧「繝九Γ繝シ繧キ繝ァ繝ウ繧キ繝シ繧ア繝ウ繧ケ繝繝シ繧ソ縺ィ縺励※繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ諠蝣ア繧りェュ縺ソ霎シ縺ソ縺セ繧後∵僑蠑オ蟄舌′ ma 縺ョ繝輔ぃ繧、繝ォ縺悟ュ伜惠縺吶l縺ー縲√け繝ェ繝繧ォ繝悶Ν繝槭ャ繝礼畑縺ョ鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ縺ィ縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶
+
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲逕サ蜒上r隱ュ縺ソ霎シ繧繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、縺ォ逕サ蜒上r隱ュ縺ソ霎シ縺ソ縺セ縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + key + 繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 縲縺ゥ縺ョ濶イ繧呈栢縺崎牡縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ謚懊″濶イ縺ッ辟。蜉ケ縺ォ縺ェ繧翫∪縺吶
縲key=0xRRGGBB 縺ィ縺縺蠖「蠑上〒 16 騾イ謨ー縺ァ謚懊″濶イ繧呈欠螳壹☆繧九→縲ヽR(襍、) GG(邱) BB(髱)縺ァ蝪励i繧後◆驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺励∪縺吶ゅ◆縺ィ縺医ー縲〔ey=0xff00ff 縺ァ縺ッ (r,g,b)=(255,0,255) 縺、縺セ繧顔悄繝槭ぞ繝ウ繝縺ョ驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺吶k縺ィ縺縺謖螳壹↓縺ェ繧翫∪縺吶
縲縺溘□蜊倥↓謨ー蛟、繧呈欠螳壹☆繧後ー縲√◎縺ョ繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ縺ョ謨ー蛟、縺梧栢縺崎牡縺ィ縺ェ繧翫∪縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲key=adapt 縺ィ謖螳壹☆繧後ー縲∬ェ蜍慕噪縺ォ謚懊″濶イ縺梧アコ螳壹&繧後∪縺吶ゆスソ逕ィ縺輔l繧区栢縺崎牡縺ッ縲∫判蜒上ョ荳逡ェ荳翫ョ繝ゥ繧、繝ウ縺ォ縺ヲ縲∽ク逡ェ螟壹¥菴ソ繧上l縺ヲ縺繧玖牡縺ァ縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲繝槭せ繧ッ逕サ蜒上r菴ソ逕ィ縺吶k蝣エ蜷医ッ縲√%縺ョ螻樊ァ縺ッ謖螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲
+
+ + mode + 蜑肴勹繝ャ繧、繝、騾城℃繝「繝シ繝 + no + "alpha"(繝繝輔か繝ォ繝) 縺セ縺溘ッ "transp" "opaque" "rect" "add" "sub" "mul" "dodge" "darken" "lighten" "screen" "psadd" "pssub" "psmul" "psscreen" "psoverlay" "pshlight" "psslight" "psdodge" "psdodge5" "psburn" "pslighten" "psdarken" "psdiff" "psdiff5" "psexcl" 縺ョ縺縺壹l縺 + 縲蜑肴勹繝ャ繧、繝、縺ョ騾城℃繝「繝シ繝峨r謖螳壹@縺セ縺吶ょ燕譎ッ繝ャ繧、繝、莉・螟悶↓縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
縲"alpha" 縺セ縺溘ッ "transp" 繧呈欠螳壹☆繧九→ホア繝√Ε繝阪Ν縺梧怏蜉ケ縺ォ縺ェ縺」縺ヲ逕サ蜒上r騾城℃縺励※陦ィ遉コ縺吶k縺薙→縺後〒縺阪∪縺吶"alpha" 縺ァ繧 "transp" 縺ァ繧ょ酔縺俶э蜻ウ縺ァ縺吶
縲"opaque" 縺セ縺溘ッ "rect" 繧呈欠螳壹☆繧九→逕サ蜒上ッ騾城℃縺輔l縺セ縺帙s (遏ゥ蠖「縺ァ陦ィ遉コ縺輔l縺セ縺)縲"opaque" 縺ァ繧 "rect" 縺ァ繧ょ酔縺俶э蜻ウ縺ァ縺吶
縲"addalpha" 繧呈欠螳壹☆繧九→縲∫判蜒上r騾城℃縺励※陦ィ遉コ縺吶k縺薙→縺後〒縺阪∪縺吶"alpha" 縺ッ繧「繝ォ繝輔ぃ蜷域舌〒縺吶′縲"addalpha" 縺ッ蜉邂励い繝ォ繝輔ぃ蜷域舌r陦ィ縺励∪縺吶ゅ%縺ョ驕輔>縺ォ縺、縺縺ヲ縺ッ縲悟翠驥悟翠驥鯉シ 繝ェ繝輔ぃ繝ャ繝ウ繧ケ縲阪r蜿らァ縺励※縺上□縺輔>縲
縲"add" 繧呈欠螳壹☆繧九→蜉邂怜粋謌舌′陦後o繧後∪縺吶
縲"sub" 繧呈欠螳壹☆繧九→貂帷ョ怜粋謌舌′陦後o繧後∪縺吶
縲"mul" 繧呈欠螳壹☆繧九→荵礼ョ怜粋謌舌′陦後o繧後∪縺吶
縲"dodge" 繧呈欠螳壹☆繧九→縲瑚ヲ縺辟シ縺阪榊粋謌舌′陦後o繧後∪縺吶
縲"darken" 繧呈欠螳壹☆繧九→縲梧ッ碑シ(證)縲榊粋謌舌′陦後o繧後∪縺吶
縲"lighten" 繧呈欠螳壹☆繧九→縲梧ッ碑シ(譏)縲榊粋謌舌′陦後o繧後∪縺吶
縲"screen" 繧呈欠螳壹☆繧九→縲後せ繧ッ繝ェ繝シ繝ウ荵礼ョ励榊粋謌舌′陦後o繧後∪縺吶
縲"psadd" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲瑚ヲ縺辟シ縺(繝ェ繝九い)縲榊粋謌舌′陦後o繧後∪縺吶
縲"pssub" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲檎┥縺崎セシ縺ソ(繝ェ繝九い)縲榊粋謌舌′陦後o繧後∪縺吶
縲"psmul" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲御ケ礼ョ励榊粋謌舌′陦後o繧後∪縺吶
縲"psscreen" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲後せ繧ッ繝ェ繝シ繝ウ縲榊粋謌舌′陦後o繧後∪縺吶
縲"psoverlay" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲後が繝シ繝舌シ繝ャ繧、縲榊粋謌舌′陦後o繧後∪縺吶
縲"pshlight" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲後ワ繝シ繝峨Λ繧、繝医榊粋謌舌′陦後o繧後∪縺吶
縲"psslight" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲後た繝輔ヨ繝ゥ繧、繝医榊粋謌舌′陦後o繧後∪縺吶
縲"psdodge" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲瑚ヲ縺辟シ縺阪き繝ゥ繝シ縲榊粋謌舌′陦後o繧後∪縺吶
縲"psdodge5" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲瑚ヲ縺辟シ縺阪き繝ゥ繝シ縲榊粋謌(Photoshop 5.x 莉・荳九→莠呈鋤)縺瑚。後o繧後∪縺吶
縲"psburn" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲檎┥縺崎セシ縺ソ繧ォ繝ゥ繝シ縲榊粋謌舌′陦後o繧後∪縺吶
縲"pslighten" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲梧ッ碑シ(譏)縲榊粋謌舌′陦後o繧後∪縺吶
縲"psdarken" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲梧ッ碑シ(證)縲榊粋謌舌′陦後o繧後∪縺吶
縲"psdiff" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲悟キョ縺ョ邨カ蟇セ蛟、縲榊粋謌舌′陦後o繧後∪縺吶
縲"psdiff5" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲悟キョ縺ョ邨カ蟇セ蛟、縲榊粋謌(Photoshop 5.x 莉・荳九→莠呈鋤)縺瑚。後o繧後∪縺吶
縲"psexcl" 繧呈欠螳壹☆繧九→縲 ̄hotoshop莠呈鋤縺ョ縲碁勁螟悶榊粋謌舌′陦後o繧後∪縺吶
縲騾乗主コヲ諠蝣ア繧呈戟縺溘↑縺逕サ蜒上r謖螳壹☆繧句エ蜷医ッ "opaque" 縺ォ謖螳壹☆繧区婿縺瑚イ闕キ縺瑚サス縺上※貂医∩縺セ縺吶

縲逵∫払縺吶k縺ィ "alpha" 縺ァ縺ゅk縺ィ縺ソ縺ェ縺輔l縺セ縺吶ゆセ句、也噪縺ォ縲ゝLG5/6 逕サ蜒上ョ蝣エ蜷医ッ縲∫判蜒丈クュ縺ォ騾城℃繝「繝シ繝峨r陦ィ縺呎ュ蝣ア縺悟沂繧∬セシ縺セ繧後※縺縺セ縺吶ゅ%縺ョ蝣エ蜷医ッ縲√%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ縲√◎縺ョ逕サ蜒上′諠蝣ア縺ィ縺励※謖√▲縺ヲ縺繧矩城℃繝「繝シ繝峨↓蠕薙▲縺ヲ陦ィ遉コ縺輔l縺セ縺吶
+
+ + grayscale + 逕サ蜒上r繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ォ縺吶k縺 + no + true 縺セ縺溘ッ false + 縲逕サ蜒上r繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ォ縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶Hrayscale=true 縺ィ謖螳壹☆繧九→縲∫判蜒上r繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ォ縺励∪縺吶ら怐逡・縺吶k縺ィ false 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + rgamma + 繧ャ繝ウ繝櫁」懈ュ」蛟、 + no + 繧ャ繝ウ繝櫁」懈ュ」蛟、 (0.1 縲 1.0(繝繝輔か繝ォ繝) 縲 9.9) + 縲r (襍、) 縲“ (邱) 縲 b (髱) 縺ョ蜷謌仙縺ョ繧ャ繝ウ繝槫、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー逕サ蜒上r繧サ繝斐い隱ソ縺ォ縺吶k縺ォ縺ッ縲grayscale=true rgamma=1.3 ggamma=1.1 縺ィ謖螳壹@縺セ縺吶 + + + ggamma + 繧ャ繝ウ繝櫁」懈ュ」蛟、 + no + 繧ャ繝ウ繝櫁」懈ュ」蛟、 (0.1 縲 1.0(繝繝輔か繝ォ繝) 縲 9.9) + 縲r (襍、) 縲“ (邱) 縲 b (髱) 縺ョ蜷謌仙縺ョ繧ャ繝ウ繝槫、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー逕サ蜒上r繧サ繝斐い隱ソ縺ォ縺吶k縺ォ縺ッ縲grayscale=true rgamma=1.3 ggamma=1.1 縺ィ謖螳壹@縺セ縺吶 + + + bgamma + 繧ャ繝ウ繝櫁」懈ュ」蛟、 + no + 繧ャ繝ウ繝櫁」懈ュ」蛟、 (0.1 縲 1.0(繝繝輔か繝ォ繝) 縲 9.9) + 縲r (襍、) 縲“ (邱) 縲 b (髱) 縺ョ蜷謌仙縺ョ繧ャ繝ウ繝槫、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー逕サ蜒上r繧サ繝斐い隱ソ縺ォ縺吶k縺ォ縺ッ縲grayscale=true rgamma=1.3 ggamma=1.1 縺ィ謖螳壹@縺セ縺吶 + + + rfloor + 霈晏コヲ譛菴主、 + no + 霈晏コヲ譛菴主、 ( 0(繝繝輔か繝ォ繝) 縲 255 ) + 縲蜷謌仙縺ョ霈晏コヲ譛菴主、繧呈欠螳壹@縺セ縺吶 + + + gfloor + 霈晏コヲ譛菴主、 + no + 霈晏コヲ譛菴主、 ( 0(繝繝輔か繝ォ繝) 縲 255 ) + 縲蜷謌仙縺ョ霈晏コヲ譛菴主、繧呈欠螳壹@縺セ縺吶 + + + bfloor + 霈晏コヲ譛菴主、 + no + 霈晏コヲ譛菴主、 ( 0(繝繝輔か繝ォ繝) 縲 255 ) + 縲蜷謌仙縺ョ霈晏コヲ譛菴主、繧呈欠螳壹@縺セ縺吶 + + + rceil + 霈晏コヲ譛鬮伜、 + no + 霈晏コヲ譛鬮伜、 ( 0 縲 255(繝繝輔か繝ォ繝) ) + 縲蜷謌仙縺ョ霈晏コヲ譛鬮伜、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー縲rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 縺ィ謖螳壹☆繧九→縲∬牡縺悟渚霆「縺励∪縺吶 + + + gceil + 霈晏コヲ譛鬮伜、 + no + 霈晏コヲ譛鬮伜、 ( 0 縲 255(繝繝輔か繝ォ繝) ) + 縲蜷謌仙縺ョ霈晏コヲ譛鬮伜、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー縲rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 縺ィ謖螳壹☆繧九→縲∬牡縺悟渚霆「縺励∪縺吶 + + + bceil + 霈晏コヲ譛鬮伜、 + no + 霈晏コヲ譛鬮伜、 ( 0 縲 255(繝繝輔か繝ォ繝) ) + 縲蜷謌仙縺ョ霈晏コヲ譛鬮伜、繧呈欠螳壹@縺セ縺吶 縺溘→縺医ー縲rfloor=255 gfloor=255 bfloor=255 rceil=0 gceil=0 bceil=0 縺ィ謖螳壹☆繧九→縲∬牡縺悟渚霆「縺励∪縺吶 + + + mcolor + 繝悶Ξ繝ウ繝芽牡 + no + 0xRRGGBB 蠖「蠑 + 縲濶イ繝悶Ξ繝ウ繝峨↓繧医k濶イ隱ソ蜉ケ譫懊↓縺翫>縺ヲ縲√ヶ繝ャ繝ウ繝峨☆繧玖牡繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶よソ蠎ヲ縺ッ mopacity 螻樊ァ縺ァ謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ濶イ繝悶Ξ繝ウ繝峨↓繧医k濶イ隱ソ蜉ケ譫懊ッ陦後o繧後∪縺帙s縲
+
+ + mopacity + 繝悶Ξ繝ウ繝芽牡豼蠎ヲ + mcolor 繧呈欠螳壹@縺溷エ蜷 + 荳埼乗主コヲ(0 縲 255) + 縲濶イ繝悶Ξ繝ウ繝峨↓繧医k濶イ隱ソ蜉ケ譫懊〒縲[color 縺ァ謖螳壹@縺溯牡繧偵←繧後$繧峨>縺ョ荳埼乗主コヲ縺ァ繝悶Ξ繝ウ繝峨☆繧九°繧呈欠螳壹@縺セ縺吶 + + + clipleft + 繧ッ繝ェ繝繝礼洸蠖「蟾ヲ遶ッ菴咲スョ + no + 繧ッ繝ェ繝繝礼洸蠖「蟾ヲ遶ッ菴咲スョ(pixel蜊倅ス) + 縲逕サ蜒上け繝ェ繝繝礼洸蠖「縺ョ蟾ヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶Dlipleft, cliptop, clipwidth, clipheight 縺ァ遏ゥ蠖「繧呈欠螳壹☆繧九→縲《torage 螻樊ァ縺ァ謖螳壹&繧後◆逕サ蜒上ョ縺昴ョ遏ゥ蠖「縺ョ縺ソ縺悟繧雁叙繧峨l縲∵欠螳壹&繧後◆繝ャ繧、繝、縺ョ逕サ蜒上↓縺ェ繧翫∪縺吶ら判蜒上ョ荳驛ィ縺縺代r蛻繧雁叙縺」縺ヲ陦ィ遉コ縺励◆縺縺ィ縺阪↑縺ゥ縺ォ菴ソ逕ィ縺励∪縺吶
縲縺薙l繧峨ョ螻樊ァ繧堤怐逡・縺吶k縺ィ縲《torage 螻樊ァ縺ァ謖螳壹&繧後◆逕サ蜒丞ィ驛ィ縺後Ξ繧、繝、縺ョ逕サ蜒上↓縺ェ繧翫∪縺吶
+
+ + cliptop + 繧ッ繝ェ繝繝礼洸蠖「荳顔ォッ菴咲スョ + no + 繧ッ繝ェ繝繝礼洸蠖「荳顔ォッ菴咲スョ(pixel蜊倅ス) + 縲逕サ蜒上け繝ェ繝繝礼洸蠖「縺ョ荳顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + clipwidth + 繧ッ繝ェ繝繝礼洸蠖「蟷 + no + 繧ッ繝ェ繝繝礼洸蠖「蟷(pixel蜊倅ス) + 縲逕サ蜒上け繝ェ繝繝礼洸蠖「縺ョ蟷繧呈欠螳壹@縺セ縺吶 + + + clipheight + 繧ッ繝ェ繝繝礼洸蠖「鬮倥& + no + 繧ッ繝ェ繝繝礼洸蠖「鬮倥&(pixel蜊倅ス) + 縲逕サ蜒上け繝ェ繝繝礼洸蠖「縺ョ鬮倥&繧呈欠螳壹@縺セ縺 + + + flipud + 荳贋ク句渚霆「 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲逕サ蜒上ョ荳贋ク句渚霆「繧定。後>縺溘>蝣エ蜷医↓ true 繧呈欠螳壹@縺セ縺吶 + + + fliplr + 蟾ヲ蜿ウ蜿崎サ「 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲逕サ蜒上ョ蟾ヲ蜿ウ蜿崎サ「繧定。後>縺溘>蝣エ蜷医↓ true 繧呈欠螳壹@縺セ縺吶 + + + visible + 繝ャ繧、繝、縺ョ蜿ッ隕悶サ荳榊庄隕 + no + true 縺セ縺溘ッ false + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、繧定。ィ遉コ縺吶k縺九√@縺ェ縺縺九r謖螳壹@縺セ縺吶Wisible=true 縺ィ謖螳壹☆繧後ー縲√Ξ繧、繝、縺ッ陦ィ遉コ迥カ諷九↓縺ェ繧翫∪縺吶Wisible=false 縺ィ謖螳壹☆繧後ー縲髱櫁。ィ遉コ迥カ諷九↓縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィ陦ィ遉コ迥カ諷九ッ螟峨o繧翫∪縺帙s縲Mayer=base 繧呈欠螳壹@縺溷エ蜷医ッ縺薙ョ螻樊ァ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲 + + + left + 繝ャ繧、繝、蟾ヲ遶ッ菴咲スョ + no + 蟾ヲ遶ッ菴咲スョ(pixel蜊倅ス) + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺ョ蟾ヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫判蜒剰ェュ縺ソ霎シ縺ソ蜑阪ョ菴咲スョ繧剃ソ晄戟縺励∪縺吶Mayer=base 縺ィ謖螳壹@縺溷エ蜷医ッ縺薙ョ螻樊ァ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲 + + + top + 繝ャ繧、繝、荳顔ォッ菴咲スョ + no + 荳顔ォッ菴咲スョ(pixel蜊倅ス) + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺ョ荳顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫判蜒剰ェュ縺ソ霎シ縺ソ蜑阪ョ菴咲スョ繧剃ソ晄戟縺励∪縺吶Mayer=base 縺ィ謖螳壹@縺溷エ蜷医ッ縺薙ョ螻樊ァ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲 + + + pos + 蜑肴勹繝ャ繧、繝、菴咲スョ + no + left 縺セ縺溘ッ left_center 縺セ縺溘ッ center 縺セ縺溘ッ right_center 縺セ縺溘ッ right + 縲繝ャ繧、繝、菴咲スョ繧定ェ蜍慕噪縺ォ豎コ螳壹@縺セ縺吶ょ燕譎ッ繝ャ繧、繝、縺ォ蟇セ縺励※菴ソ縺縺セ縺吶
縲讓ェ譁ケ蜷代ョ菴咲スョ縺ッ縲√%縺ョ螻樊ァ縺ァ謖螳壹@縺 left ( 蟾ヲ遶ッ ) 縲〕eft_center ( 蟾ヲ繧医j )縲…enter ( 荳ュ螟ョ )縲〉ight_center ( 蜿ウ繧医j )縲〉ight ( 蜿ウ遶ッ ) 縺ョ菴咲スョ縺ォ陦ィ遉コ縺輔l縺セ縺吶ょ推讓ェ譁ケ蜷代ョ蠎ァ讓吶ョ荳ュ蠢菴咲スョ縺ッ Config.tjs 縺ァ謖螳壹☆繧九%縺ィ縺後〒縺阪∪縺吶
縲left, left_center, center, right_center, right 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧 l, lc, c, rc, r 繧呈欠螳壹☆繧九%縺ィ繧ゅ〒縺阪∪縺 ( 蜍穂ス懊ッ蜷後§縺ァ縺 )縲
縲邵ヲ譁ケ蜷代ョ菴咲スョ縺ォ縺、縺縺ヲ縺ッ縲√Ξ繧、繝、縺ョ荳狗ォッ縺ッ逕サ髱「縺ョ荳狗ォッ縺ォ蜷医o縺帙※ ( 荳句エ縺ォ隧ー繧√i繧後※ ) 陦ィ遉コ縺輔l縺セ縺吶
縲縺薙ョ螻樊ァ繧呈欠螳壹@縺溷エ蜷医ッ left 螻樊ァ繧 top 螻樊ァ縺ッ辟。隕悶&繧後∪縺吶
縲layer=base 縺ィ謖螳壹@縺溷エ蜷医↓縺ッ縺薙ョ螻樊ァ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
+
+ + opacity + 荳埼乗主コヲ + no + 荳埼乗主コヲ ( 0 (蜈ィ縺上ョ騾乗) 縲 255 (蜈ィ縺上ョ荳埼乗 ) ) + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺ョ荳埼乗主コヲ繧呈欠螳壹@縺セ縺吶
縲繝繝輔か繝ォ繝医〒 255 (蜈ィ縺上ョ荳埼乗) 縺ァ縺吶ゅ▽縺セ繧翫√%縺ョ螻樊ァ繧呈欠螳壹@縺ェ縺縺ァ逕サ蜒上r隱ュ縺ソ霎シ繧縺ィ縲√◎縺ョ繝ャ繧、繝、縺ョ opacity 縺 255 莉・螟悶〒繧ゅ255 縺ォ險ュ螳壹@縺ェ縺翫&繧後∪縺吶
縲128 繧呈欠螳壹☆繧九→蜊雁遞句コヲ縺ョ騾乗主コヲ縺ォ縺ェ繧翫騾上¢縺ヲ陦ィ遉コ縺輔l縺セ縺吶
縲opacity=0 縺ィ縺励※繧ゅΞ繧、繝、繧定ヲ九∴縺ェ縺上☆繧九%縺ィ縺悟コ譚・縺セ縺吶′縲∝ィ縺上ョ騾乗弱↓縺ェ縺」縺溘□縺代〒髱櫁。ィ遉コ縺ォ縺ェ繧九o縺代〒縺ッ縺ゅj縺セ縺帙s縲
縲縺薙ョ螻樊ァ繧定ィュ螳壹@縺ヲ繧ゅΞ繧、繝、縺ョ逕サ蜒剰ェ菴薙′螟牙喧縺吶k繧上¢縺ァ縺ッ縺ゅj縺セ縺帙s縲ょ、牙喧縺吶k縺ョ縺ッ陦ィ遉コ縺ョ迥カ諷九〒縺吶
+
+ + mapimage + 鬆伜沺逕サ蜒 + no + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励↓逕ィ縺繧矩伜沺逕サ蜒上r謖螳壹@縺セ縺吶
縲縺薙%縺ァ謖螳壹r陦後o縺ェ縺上※繧ゅ《torage 螻樊ァ縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ蜷 (諡。蠑オ蟄舌r髯、縺) 驛ィ蛻縺ォ_p 繧定ソス蜉縺励◆繝輔ぃ繧、繝ォ縺 繧ゅ@縺ゅl縺ー閾ェ蜍慕噪縺ォ鬆伜沺逕サ蜒上→縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶′縲∝挨縺ョ繝輔ぃ繧、繝ォ繧剃サ」繧上j縺ォ隱ュ縺ソ霎シ縺ソ縺溘>蝣エ蜷医↓縺薙ョ螻樊ァ繧堤畑縺縺セ縺吶
+
+ + mapaction + 鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ + no + 鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ蜷 + 縲繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励↓逕ィ縺繧矩伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶
縲縺薙%縺ァ謖螳壹@縺ェ縺上※繧ゅ《torage 螻樊ァ縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ蜷阪→蜷悟錐縺ァ諡。蠑オ蟄舌′ ma 縺ョ繝輔ぃ繧、繝ォ縺後≠繧後ー閾ェ蜍慕噪縺ォ豸シ豌励い繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ縺ィ縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶′縲∝挨縺ョ繝輔ぃ繧、繝ォ繧剃サ」繧上j縺ォ隱ュ縺ソ霎シ縺ソ縺溘>蝣エ蜷医↓縺薙ョ螻樊ァ繧堤畑縺縺セ縺吶
縲諡。蠑オ蟄 ( 騾壼クク縺ッ .ma ) 縺ッ逵∫払縺ァ縺阪∪縺帙s縺ョ縺ァ諡。蠑オ蟄舌b蜷ォ繧√※謖螳壹@縺ヲ縺上□縺輔>縲
+
+ + index + 驥阪ュ蜷医o縺幃蠎 + no + 豁」縺ョ謨エ謨ー + 縲閭梧勹繝ャ繧、繝、縺ォ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
縲驥阪ュ蜷医o縺幃蠎上r謖螳壹@縺セ縺吶ょ、縺悟、ァ縺阪>縺サ縺ゥ謇句燕縺ォ陦ィ遉コ縺輔l縺セ縺吶
縲讓呎コ悶〒縺ッ縲∝燕譎ッ繝ャ繧、繝、 0 縺 1000縲∝燕譎ッ繝ャ繧、繝、 1 縺 2000 ( 莉・髯 1000 縺壹▽蠅励∴繧 )縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、 0 縺 1000000縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、 1 縺 1001000 ( 莉・髯 1000 縺壹▽蠅励∴繧 )縲√繝。繝繧サ繝シ繧ク螻・豁エ繧定。ィ遉コ縺吶k縺溘a縺ョ繝ャ繧、繝、縺 2000000 縺ィ縺ェ縺」縺ヲ縺縺セ縺吶
縲閭梧勹繝ャ繧、繝、縺ョ驥阪ュ蜷医o縺幃蠎上ッ螟画峩縺吶k縺薙→縺ッ縺ァ縺阪∪縺帙s縲
laycount 繧ソ繧ー繧貞ョ溯。後☆繧九→縲√%縺ョ驥阪ュ蜷医o縺幃蠎上ッ讓呎コ悶ョ迥カ諷九↓謌サ縺輔l縺ヲ縺励∪縺蝣エ蜷医′縺ゅk縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
+
+
+ + indent + 繧、繝ウ繝繝ウ繝医ョ險ュ螳 + 縲縺薙ョ繧ソ繧ー縺ョ菴咲スョ縺ォ蟾ヲ繧、繝ウ繝繝ウ繝 ( 邵ヲ譖ク縺阪ョ蝣エ蜷医ッ鬆ュ繧、繝ウ繝繝ウ繝 ) 繧定ィュ螳壹@縺セ縺吶ら匱險閠繧、繝ウ繝繝ウ繝医↑縺ゥ縺ィ縺励※菴ソ縺縺薙→縺後〒縺阪∪縺吶ゅう繝ウ繝繝ウ繝医r隗」髯、縺吶k蝣エ蜷医ッ縲∵隼陦後ョ蜑阪↓ endindent 繧ソ繧ー繧剃スソ逕ィ縺励∪縺吶 + 縲舌≠繧薙ア繧薙措indent]縺薙ョ繧医≧縺ォ逋コ險閠繧、繝ウ繝繝ウ繝医↑縺ゥ縺ィ縺励※菴ソ縺縺薙→縺後〒縺阪∪縺吶[endindent] + + + input + 譁蟄怜励ョ蜈・蜉 + 縲譁蟄怜励r蜈・蜉帙☆繧九◆繧√↓繝繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ繧帝幕縺阪√Θ繝シ繧カ繝シ縺ォ蜈・蜉帙r豎ゅa縺セ縺吶
縲繝ヲ繝シ繧カ繝シ蜷阪ョ蜈・蜉帙↑縺ゥ縺ォ菴ソ逕ィ縺吶k縺薙→縺後〒縺阪∪縺吶
+ [eval exp="f.username='螟ェ驛'"]
[input name=f.username prompt="蜷榊燕繧貞・蜉帙@縺ヲ縺上□縺輔>" title="蜷榊燕縺ョ蜈・蜉"]
蜷榊燕縺ッ : [emb exp=f.username]
+ + name + 螟画焚蜷 + yes + 螟画焚蜷 + 縲蜈・蜉帙@縺溘>譁蟄怜励r譬シ邏阪☆繧句、画焚繧呈欠螳壹@縺セ縺吶
縲繧ゅ@螟画焚縺ォ縺吶〒縺ォ譁蟄怜励′蜈・縺」縺ヲ縺縺溷エ蜷医ッ縲√◎縺ョ譁蟄怜励′繝繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ縺ョ蛻晄悄譁蟄怜励→縺励※陦ィ遉コ縺輔l縺セ縺吶
縲繝ヲ繝シ繧カ繝シ縺後ム繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ縺ョ繧ュ繝」繝ウ繧サ繝ォ繝懊ち繝ウ繧 ESC 繧ュ繝シ繧呈款縺励◆縺ィ縺阪ッ螟画焚縺ョ蛟、縺ッ螟峨o繧翫∪縺帙s縲
縲螟画焚縺ォ縺ッ KAG 縺九i繧「繧ッ繧サ繧ケ縺ァ縺阪k縺吶∋縺ヲ縺ョ螟画焚繧呈欠螳壹☆繧九%縺ィ縺後〒縺阪∪縺吶
+
+ + prompt + 繝励Ο繝ウ繝励ヨ + no + 繝励Ο繝ウ繝励ヨ縺ィ縺励※陦ィ遉コ縺吶k譁蟄怜 + 縲繝繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ縺ョ繝励Ο繝ウ繝励ヨ ( 蜈・蜉帶ャ縺ョ縺吶$荳翫↓陦ィ遉コ縺輔l繧区枚蟄怜 ) 繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ遨コ谺縺ォ縺ェ繧翫∪縺吶
縲縲悟錐蜑阪r蜈・蜉帙@縺ヲ縺上□縺輔>縲阪↑縺ゥ縺ォ縺励∪縺吶
+
+ + title + 繧ソ繧、繝医Ν + no + 繝繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ縺ョ繧ソ繧、繝医Ν + 縲繝繧、繧「繝ュ繧ー繝懊ャ繧ッ繧ケ縺ョ繧ソ繧、繝医Ν繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ繧ソ繧、繝医Ν縺ッ遨コ谺縺ォ縺ェ繧翫∪縺吶
縲縲悟錐蜑阪ョ蜈・蜉帙阪↑縺ゥ縺ォ縺励∪縺吶
+
+
+ + iscript + TJS 繧ケ繧ッ繝ェ繝励ヨ縺ョ險倩ソー + 縲[iscript] 縺ョ縺ソ縺ョ陦後→縲ーendscript] 縺ョ縺ソ縺ョ陦後〒蝗イ縺セ繧後◆驛ィ蛻縺ォ TJS 繧ケ繧ッ繝ェ繝励ヨ繧呈嶌縺崎セシ繧縺薙→縺悟コ譚・縺セ縺吶
縲[iscript] 縺ョ縺ソ縺ョ陦後→縺縺縺ョ縺ッ縲√◎縺ョ陦後↓縺ッ [iscript] 繧ソ繧ー縺ョ縺ソ縺励°險倩ソー縺励※縺ッ縺縺代↑縺縺ィ險縺縺薙→縺ァ縺(endscript 繧ょ酔讒)縲
縲縺セ縺溘√槭け繝ュ荳ュ縺ォ縺薙ョ繧ソ繧ー繧呈嶌縺上%縺ィ縺ッ縺ァ縺阪∪縺帙s縲
+ [iscript]
kag.restoreBookMark(0); // 0 逡ェ逶ョ縺ョ譬槭r縺溘←繧
[endscript]
+
+ + jump + 繧キ繝翫Μ繧ェ縺ョ繧ク繝」繝ウ繝 + 縲謖螳壹&繧後◆繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ縺ョ謖螳壹&繧後◆繝ゥ繝吶Ν縺ォ繧ク繝」繝ウ繝励@縺セ縺吶
縲繧オ繝悶Ν繝シ繝√Φ蜀縺ァ繧ク繝」繝ウ繝励☆繧句エ蜷医ッ縲…all 縲 return 縺ョ繝舌Λ繝ウ繧ケ縺ォ豕ィ諢上@縺ヲ縺上□縺輔>縲
+ + storage + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + no + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + 縲繧ク繝」繝ウ繝怜医ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫樟蝨ィ縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜀縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + target + 繝ゥ繝吶Ν蜷 + no + 繝ゥ繝吶Ν蜷 + 縲繧ク繝」繝ウ繝怜医ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲√ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後&繧後∪縺吶
+
+ + countpage + 縺薙ョ繧ク繝」繝ウ繝励r縲瑚ェュ繧薙□縲阪→隕九↑縺吶° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲莉悶ョ繝ゥ繝吶Ν縺ォ遘サ陦後☆繧九→縺阪↓縲√%縺ョ繧ソ繧ー縺ョ縺ゅk蝣エ謇縺ョ繝ゥ繝吶Ν繧偵瑚ェュ繧薙□縲阪→縺ソ縺ェ縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
縲繧ク繝」繝ウ繝励☆繧矩圀縺ォ縺昴ョ繝壹シ繧ク縺後瑚ェュ繧薙□縲阪%縺ィ縺ォ縺ェ縺」縺ヲ縺ッ蝗ー繧句エ蜷医↓ false 繧呈欠螳壹@縺セ縺吶
+
+
+ + l + 陦梧忰繧ッ繝ェ繝繧ッ蠕縺。 + 縲陦梧忰縺ョ繧ッ繝ェ繝繧ッ蠕縺。繧定。後>縺セ縺吶p 繧ソ繧ー縺ィ縺ッ縲√Γ繝繧サ繝シ繧ク螻・豁エ縺ク縺ョ謾ケ陦後ョ蜃コ蜉帙ョ驕輔>繧縲√梧枚蟄苓。ィ遉コ > 繝壹シ繧ク譛ォ縺セ縺ァ荳豌励↓縲阪r菴ソ逕ィ縺励◆縺ィ縺阪ョ謖吝虚縺ョ驕輔>縺ェ縺ゥ縺後≠繧翫∪縺吶
current 繧ソ繧ー縺ァ陬上壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺ヲ縺繧句エ蜷医ッ縺薙ョ險伜捷縺ッ陦ィ遉コ縺輔l縺セ縺帙s縲り。ィ遉コ縺励◆縺蝣エ蜷医ッ陦ィ繝壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺ヲ縺上□縺輔>縲
+
+ + laycount + 繝ャ繧、繝、縺ョ謨ー縺ョ螟画峩 + 縲蜑肴勹繝ャ繧、繝、縺セ縺溘ッ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ謨ー繧貞、画峩縺励∪縺吶ゅ>縺壹l縺ョ螻樊ァ繧ら怐逡・縺吶l縺ー險ュ螳壹ッ螟画峩縺輔l縺セ縺帙s縲
縲繝ャ繧、繝、謨ー縺ォ蛻カ髯舌ッ縺ゅj縺セ縺帙s縺後∝ョ溯。檎腸蠅縺ョ OS 繧繝。繝「繝ェ縺ォ繧医▲縺ヲ蛻カ髯舌r蜿励¢繧句庄閭ス諤ァ縺後≠繧翫∪縺吶
縲繝ャ繧、繝、縺ョ謨ー縺ッ蠢隕∵怙蟆城剞縺ォ縺励※縺翫¥縺ケ縺阪〒縺吶ゅ◆縺上&繧薙ョ繝ャ繧、繝、繧堤「コ菫昴@縺ヲ縺昴l繧剃スソ縺邨ゅo縺」縺溘i縲√↑繧九∋縺丞ソ隕∵怙蟆城剞縺ョ迥カ諷九↓謌サ縺励※縺翫¥縺ョ縺瑚憶縺縺ァ縺励g縺縲
+ + layers + 蜑肴勹繝ャ繧、繝、縺ョ謨ー + no + 0 縺セ縺溘ッ豁」縺ョ謨エ謨ー + 縲蜑肴勹繝ャ繧、繝、縺ョ謨ー繧呈欠螳壹@縺セ縺吶 + + + messages + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ謨ー + no + 豁」縺ョ謨エ謨ー + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ謨ー繧呈欠螳壹@縺セ縺吶
縲0 縺ッ謖螳壹〒縺阪∪縺帙s縲
+
+
+ + layopt + 繝ャ繧、繝、縺ョ螻樊ァ + 縲繝ャ繧、繝、縺ョ螻樊ァ繧呈欠螳壹@縺セ縺吶 + + layer + 蟇セ雎。繝ャ繧、繝、 + yes + 0 莉・荳翫ョ謨エ謨ー縺セ縺溘ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲蟇セ雎。縺ィ縺ェ繧句燕譎ッ繝ャ繧、繝、縺セ縺溘ッ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶ゅmessage 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current繧ソ繧ー縺ァ謖螳壹@縺溘∫樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ィ縺ェ繧翫∪縺吶 + + + page + 繝壹シ繧ク + no + "fore"(繝繝輔か繝ォ繝) 縺セ縺溘ッ "back" + 縲 陦ィ(fore)逕サ髱「縺ョ繝ャ繧、繝、繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「縺ョ繝ャ繧、繝、繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
縲縺溘□縺励〕ayer=message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医〒縺薙ョ螻樊ァ繧堤怐逡・縺励◆蝣エ蜷医ッ迴セ蝨ィ謫堺ス懷ッセ雎。縺ョ繝壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁∈謚槭&繧後∪縺吶
+
+ + visible + 繝ャ繧、繝、縺ョ蜿ッ隕悶サ荳榊庄隕 + no + true 縺セ縺溘ッ false + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、繧定。ィ遉コ縺吶k縺九√@縺ェ縺縺九r謖螳壹@縺セ縺吶Wisible=true 縺ィ謖螳壹☆繧後ー縲√Ξ繧、繝、縺ッ陦ィ遉コ迥カ諷九↓縺ェ繧翫∪縺吶Wisible=false 縺ィ謖螳壹☆繧後ー縲髱櫁。ィ遉コ迥カ諷九↓縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィ陦ィ遉コ迥カ諷九ッ螟峨o繧翫∪縺帙s縲 + + + left + 繝ャ繧、繝、蟾ヲ遶ッ菴咲スョ + no + 蟾ヲ遶ッ菴咲スョ(pixel蜊倅ス) + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺ョ蟾ヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ菴咲スョ縺ッ螟画峩縺励∪縺帙s縲
縲layer 螻樊ァ縺ォ message0 繧 message1 繧呈欠螳壹@縺溷エ蜷医ッ縲√縺励mposition 繧ソ繧ー縺ァ菴咲スョ遲峨r謖螳壹@縺ヲ縺上□縺輔>縲
縲縺溘□縺励}osition 繧ソ繧ー縺ッ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧偵け繝ェ繧「縺励※縺励∪縺縺セ縺吶′縲√%縺ョ繧ソ繧ー縺ァ縺ッ繧ッ繝ェ繧「縺励∪縺帙s縲ょ螳ケ繧堤カュ謖√@縺溘∪縺セ陦ィ遉コ菴咲スョ繧貞、峨∴縺溘>蝣エ蜷医ッ縺薙ョ繧ソ繧ー繧剃スソ縺縺セ縺吶
+
+ + top + 繝ャ繧、繝、荳顔ォッ菴咲スョ + no + 荳顔ォッ菴咲スョ(pixel蜊倅ス) + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺ョ荳顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ菴咲スョ縺ッ螟画峩縺励∪縺帙s縲
縲layer 螻樊ァ縺ォ message0 繧 message1 繧呈欠螳壹@縺溷エ蜷医ッ縲√縺励mposition 繧ソ繧ー縺ァ菴咲スョ遲峨r謖螳壹@縺ヲ縺上□縺輔>縲
縲縺溘□縺励}osition 繧ソ繧ー縺ッ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧偵け繝ェ繧「縺励※縺励∪縺縺セ縺吶′縲√%縺ョ繧ソ繧ー縺ァ縺ッ繧ッ繝ェ繧「縺励∪縺帙s縲ょ螳ケ繧堤カュ謖√@縺溘∪縺セ陦ィ遉コ菴咲スョ繧貞、峨∴縺溘>蝣エ蜷医ッ縺薙ョ繧ソ繧ー繧剃スソ縺縺セ縺吶
+
+ + opacity + 荳埼乗主コヲ + no + 荳埼乗主コヲ ( 0 (蜈ィ縺上ョ騾乗) 縲 255 (蜈ィ縺上ョ荳埼乗 ) ) + 縲繝ャ繧、繝、縺ョ荳埼乗主コヲ繧呈欠螳壹@縺セ縺吶
縲繝繝輔か繝ォ繝医〒 255 (蜈ィ縺上ョ荳埼乗) 縺ァ縺吶128 繧呈欠螳壹☆繧九→蜊雁遞句コヲ縺ョ騾乗主コヲ縺ォ縺ェ繧翫騾上¢縺ヲ陦ィ遉コ縺輔l縺セ縺吶
縲opacity=0 縺ィ縺励※繧ゅΞ繧、繝、繧定ヲ九∴縺ェ縺上☆繧九%縺ィ縺悟コ譚・縺セ縺吶′縲∝ィ縺上ョ騾乗弱↓縺ェ縺」縺溘□縺代〒髱櫁。ィ遉コ縺ォ縺ェ繧九o縺代〒縺ッ縺ゅj縺セ縺帙s縲
縲縺セ縺溘√%縺ョ螻樊ァ繧定ィュ螳壹@縺ヲ繧ゅΞ繧、繝、縺ョ逕サ蜒剰ェ菴薙′螟牙喧縺吶k繧上¢縺ァ縺ッ縺ゅj縺セ縺帙s縲ゅ◆縺ィ縺医ー opacity=128 縺ィ縺励※蜊企乗弱↓縺励◆蠕後↓ 255 縺ォ謌サ縺励※繧よュ」蟶ク縺ォ陦ィ遉コ縺輔l縺セ縺吶
縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺励※繧ゅ%縺ョ螻樊ァ繧呈欠螳壹〒縺阪∪縺吶′縲position 繧ソ繧ー縺ァ謖螳壹☆繧 opacity 螻樊ァ縺ィ縺ッ諢丞袖縺碁&縺縺セ縺吶
+
+ + autohide + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ィ縺ィ繧ゅ↓髫縺吶° + no + true 縺セ縺溘ッ false + 縲蜑肴勹繝ャ繧、繝、莉・螟悶↓縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
縲[繧キ繧ケ繝繝|繝。繝繧サ繝シ繧ク繧呈カ医☆] 繝。繝九Η繝シ繧帝∈謚槭@縺溘→縺阪↓繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁國繧後∪縺吶′縲√◎繧後→蜷梧凾縺ォ縺薙ョ蜑肴勹繝ャ繧、繝、繧る國縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
+
+ + index + 驥阪ュ蜷医o縺幃蠎 + no + 豁」縺ョ謨エ謨ー + 縲閭梧勹繝ャ繧、繝、縺ォ縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
縲驥阪ュ蜷医o縺幃蠎上r謖螳壹@縺セ縺吶ょ、縺悟、ァ縺阪>縺サ縺ゥ謇句燕縺ォ陦ィ遉コ縺輔l縺セ縺吶
縲讓呎コ悶〒縺ッ縲∝燕譎ッ繝ャ繧、繝、 0 縺 1000縲∝燕譎ッ繝ャ繧、繝、 1 縺 2000 ( 莉・髯 1000 縺壹▽蠅励∴繧 )縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、 0 縺 1000000縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、 1 縺 1001000 ( 莉・髯 1000 縺壹▽蠅励∴繧 )縲√繝。繝繧サ繝シ繧ク螻・豁エ繧定。ィ遉コ縺吶k縺溘a縺ョ繝ャ繧、繝、縺 2000000 縺ィ縺ェ縺」縺ヲ縺縺セ縺吶
縲閭梧勹繝ャ繧、繝、縺ョ驥阪ュ蜷医o縺幃蠎上ッ螟画峩縺吶k縺薙→縺ッ縺ァ縺阪∪縺帙s縲
laycount 繧ソ繧ー繧貞ョ溯。後☆繧九→縲√%縺ョ驥阪ュ蜷医o縺幃蠎上ッ讓呎コ悶ョ迥カ諷九↓謌サ縺輔l縺ヲ縺励∪縺蝣エ蜷医′縺ゅk縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
+
+
+ + link + 繝上う繝代シ繝ェ繝ウ繧ッ + 縲link 繧ソ繧ー縺ィ endlink 繧ソ繧ー縺ァ蝗イ縺セ繧後◆驛ィ蛻縺ョ譁遶繧偵√槭え繧ケ繧繧ュ繝シ繝懊シ繝峨〒驕ク謚槫庄閭ス縺ォ縺励√◎縺薙〒繧ッ繝ェ繝繧ッ縺輔l縺溘j繧ュ繝シ繧呈款縺輔l縺溘→縺阪↓縲√ず繝」繝ウ繝励☆繧句医r謖螳壹〒縺阪∪縺吶
exp 螻樊ァ繧呈欠螳壹☆繧後ー縲√Μ繝ウ繧ッ繧偵け繝ェ繝繧ッ縺輔l縺溘→縺阪↓螟画焚縺ォ蛟、繧剃サ」蜈・縺吶k縺ィ縺縺繧医≧縺ェ蜍穂ス懊b陦後o縺帙k縺薙→縺後〒縺阪∪縺吶
縲蝗イ縺セ繧後◆譁遶縺ッ縲√壹シ繧ク繧偵∪縺溘$縺薙→縺ッ蜃コ譚・縺セ縺帙s(陦後r縺セ縺溘$縺薙→縺ッ縺ァ縺阪∪縺)縲
縲荳逕サ髱「荳ュ縺ォ譛螟ァ縺ァ 255 蛟九ョ繝ェ繝ウ繧ッ繧剃ス懈舌☆繧九%縺ィ縺後〒縺阪∪縺吶
+ + storage + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + no + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + 縲繧ク繝」繝ウ繝怜医ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ縲∫樟蝨ィ縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜀縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + target + 繝ゥ繝吶Ν蜷 + no + 繝ゥ繝吶Ν蜷 + 縲繧ク繝」繝ウ繝怜医ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲√ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後&繧後∪縺吶
+
+ + exp + TJS 蠑 + no + TJS 蠑 + 縲繧ッ繝ェ繝繧ッ縺輔l縺溘→縺阪↓螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶ら怐逡・縺吶l縺ー蠑上ッ螳溯。後&繧後∪縺帙s縲Ttorage 繧 target 縺梧欠螳壹&繧後※縺縺溷エ蜷医√%縺ョ蠑上′螳溯。後&繧後※縺九i繧ク繝」繝ウ繝怜医↓遘サ蜍輔@縺セ縺吶 + + + color + 繝ェ繝ウ繧ッ縺ョ蠑キ隱ソ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲繝ェ繝ウ繧ッ縺碁∈謚槭&繧後◆縺ィ縺阪↓蜃コ繧句濠騾乗弱ョ遏ゥ蠖「縺ョ濶イ繧呈欠螳壹@縺セ縺吶 + + + hint + 繝繝シ繝ォ繝√ャ繝励ヲ繝ウ繝 + no + 繝偵Φ繝医→縺励※陦ィ遉コ縺輔○繧区枚蟄怜 + 縲繝ェ繝ウ繧ッ繧帝∈謚槭@縲√槭え繧ケ繧ォ繝シ繧ス繝ォ繧帝撕豁「縺輔○縺溘→縺阪↓陦ィ遉コ縺輔l繧九ヤ繝シ繝ォ繝√ャ繝励ヲ繝ウ繝医r謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ陦ィ遉コ縺ッ陦後o繧後∪縺帙s縲
縲繝ェ繝ウ繧ッ縺ョ隱ャ譏弱ョ陬懆カウ縺ォ菴ソ縺医∪縺吶′縲”int 螻樊ァ縺ョ縺ソ繧呈欠螳壹@縲》arget, storage, exp 螻樊ァ縺ッ謖螳壹@縺ェ縺縺ァ遨コ縺ョ繝ェ繝ウ繧ッ繧剃ス懈舌@縲∝ー城屮縺励>蜊倩ェ槭ョ隱ャ譏弱r縺吶k縺薙→縺ェ縺ゥ繧ゅ〒縺阪∪縺吶
+
+ + onenter + 繝槭え繧ケ騾イ蜈・譎 + no + TJS 蠑 + 縲繝ェ繝ウ繧ッ蜀縺ォ繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺悟・縺」縺ヲ縺阪◆縺ィ縺阪↓螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶 + + + onleave + 繝槭え繧ケ騾蜃コ譎 + no + TJS 蠑 + 縲繝ェ繝ウ繧ッ蜀縺九i繝槭え繧ケ繧ォ繝シ繧ス繝ォ縺悟コ縺ヲ縺縺」縺滓凾縺ォ螳溯。後&繧後k TJS 蠑上r謖螳壹@縺セ縺吶 + + + countpage + 縺薙ョ繧ク繝」繝ウ繝励r縲瑚ェュ繧薙□縲阪→隕九↑縺吶° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲繝ェ繝ウ繧ッ繧帝∈謚槭@縺ヲ莉悶ョ繝ゥ繝吶Ν縺ォ遘サ陦後☆繧九→縺阪↓縲√%縺ョ繝ェ繝ウ繧ッ縺ョ縺ゅk蝣エ謇縺ョ繝ゥ繝吶Ν繧偵瑚ェュ繧薙□縲阪→縺ソ縺ェ縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
縲[s] 繧ソ繧ー繧貞ョ溯。後☆繧句燕縺ォ繝ェ繝ウ繧ッ縺碁∈謚槭&繧後※繧ク繝」繝ウ繝励☆繧矩圀縺ォ縲√◎縺ョ繝壹シ繧ク縺後瑚ェュ繧薙□縲阪%縺ィ縺ォ縺ェ縺」縺ヲ縺ッ蝗ー繧句エ蜷医↓ false 繧呈欠螳壹@縺セ縺吶
+
+ + clickse + 繧ッ繝ェ繝繧ッ譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繧ッ繝ェ繝繧ッ縺輔l縺溘→縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + clicksebuf + 繧ッ繝ェ繝繧ッ譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲clickse 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + enterse + 繝槭え繧ケ騾イ蜈・譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繝槭え繧ケ縺碁イ蜈・縺励◆縺ィ縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + entersebuf + 繝槭え繧ケ騾イ蜈・譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲enterse 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + leavese + 繝槭え繧ケ騾蜃コ譎ゅョ蜉ケ譫憺浹 + no + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲繝槭え繧ケ縺碁蜃コ縺励◆縺ィ縺阪↓蜀咲函縺吶k蜉ケ譫憺浹繧呈欠螳壹@縺セ縺吶よ欠螳壹@縺ェ縺代l縺ー蜉ケ譫憺浹縺ッ蜀咲函縺輔l縺セ縺帙s縲 + + + leavesebuf + 繝槭え繧ケ騾蜃コ譎ゅョ蜉ケ譫憺浹縺ョ繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + 縲leavese 縺ァ謖螳壹@縺溷柑譫憺浹繧帝ウエ繧峨☆蜉ケ譫憺浹繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + +
+ + load + 譬槭ョ隱ュ縺ソ霎シ縺ソ + 縲髱槭ヵ繝ェ繝シ繧サ繝シ繝悶Δ繝シ繝峨↓縺翫>縺ヲ縲∵槭°繧芽ェュ縺ソ霎シ縺ソ縺セ縺吶ゅΓ繝九Η繝シ縺九i縲梧槭r縺溘←繧九阪r驕ク繧薙□縺ィ縺阪→蜷後§蜍穂ス懊〒縺吶 + + place + 菫晏ュ伜エ謇 + no + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー(0縺後ョ繝輔か繝ォ繝) + 縲譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
縲縺ゥ縺ョ繧医≧縺ェ謨ー蛟、繧呈欠螳壹@縺ヲ繧ゅ°縺セ縺縺セ縺帙s縺後999 縲 1999 縺ッ迚ケ蛻・縺ェ諢丞袖繧呈戟縺、譬槭〒縺吶
+
+ + ask + 遒コ隱阪r縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲∵槭r縺溘←繧九°縺ゥ縺縺九ョ遒コ隱阪r縺励∪縺吶Galse 繧呈欠螳壹☆繧九→譬槭r縺溘←繧九°縺ゥ縺縺九ョ遒コ隱阪ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 繧呈欠螳壹@縺溘→縺ソ縺ェ縺輔l縺セ縺吶
縲譬槭r縺溘←繧狗「コ隱阪〒繝ヲ繝シ繧カ縺後後>縺縺医阪r驕ク繧薙□蝣エ蜷医∝ョ溯。後ッ縺昴ョ縺セ縺セ邯咏カ壹@縺セ縺吶
+
+
+ + loadplugin + 繝励Λ繧ー繧、繝ウ縺ョ隱ュ縺ソ霎シ縺ソ + 縲縺薙ョ繧ソ繧ー縺ァ隱ュ縺ソ霎シ繧繝励Λ繧ー繧、繝ウ縺ッ縲
繝サ繝励Ο繧ク繧ァ繧ッ繝医ヵ繧ゥ繝ォ繝逶エ荳
繝サ蜷蛾悟翠驥悟ョ溯。悟庄閭ス繝輔ぃ繧、繝ォ縺ョ縺ゅk繝輔か繝ォ繝莉・荳九ョ plugin 繝輔か繝ォ繝
繝サ蜷蛾悟翠驥悟ョ溯。悟庄閭ス繝輔ぃ繧、繝ォ縺ョ縺ゅk繝輔か繝ォ繝
縺ョ縺縺壹l縺九↓鄂ョ縺縺ヲ縺翫¥蠢隕√′縺ゅj縺セ縺吶
縲module 螻樊ァ縺ァ謖螳壹☆繧九励Λ繧ー繧、繝ウ縺ョ諡。蠑オ蟄舌ッ逵∫払縺ァ縺阪∪縺帙s縲
+ + module + 繝励Λ繧ー繧、繝ウ蜷 + yes + 繝励Λ繧ー繧、繝ウ繝輔ぃ繧、繝ォ蜷 + 隱ュ縺ソ霎シ縺ソ縺溘>繝励Λ繧ー繧、繝ウ繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
+
+
+ + locate + 譁蟄苓。ィ遉コ菴咲スョ縺ョ謖螳 + 縲譁蟄苓。ィ遉コ菴咲スョ繧呈欠螳壹@縺セ縺吶
position 繧ソ繧ー縺ァ謖螳壹@縺 marginl 縺ィ margint 縺ョ螻樊ァ縺ョ蛟、縺悟ョ滄圀縺ォ縺ッ蜉邂励&繧後∪縺吶
縲讓ェ譖ク縺阪ョ蝣エ蜷医ッ y 繧偵∫クヲ譖ク縺阪ョ蝣エ蜷医ッ x 繧堤怐逡・縺吶k縺薙→縺ォ繧医j蜷後§陦悟縺ァ縺ョ譁蟄苓。ィ遉コ菴咲スョ縺ョ螟画峩縺悟庄閭ス縺ィ縺ェ繧翫∪縺吶
+ + x + 讓ェ譁ケ蜷台ス咲スョ + no + 讓ェ譁ケ蜷台ス咲スョ (pixel蜊倅ス) + 縲譁蟄励r陦ィ遉コ縺吶k x 蠎ァ讓吩ス咲スョ繧呈欠螳壹@縺セ縺吶 + + + y + 邵ヲ譁ケ蜷台ス咲スョ + no + 邵ヲ譁ケ蜷台ス咲スョ (pixel蜊倅ス) + 縲譁蟄励r陦ィ遉コ縺吶k y 蠎ァ讓吩ス咲スョ繧呈欠螳壹@縺セ縺吶 + +
+ + locklink + 繝ェ繝ウ繧ッ縺ョ繝ュ繝繧ッ + 縲縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繝ェ繝ウ繧ッ繧偵Ο繝繧ッ縺励∪縺吶ゅΜ繝ウ繧ッ縺後Ο繝繧ッ縺輔l繧九→縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、荳翫ョ繝ェ繝ウ繧ッ ( 繝懊ち繝ウ縲√お繝繧」繝繝医√メ繧ァ繝繧ッ繝懊ャ繧ッ繧ケ繧ょ性繧 ) 縺ッ縺吶∋縺ヲ驕ク謚槭d謫堺ス懊′荳崎ス縺ォ縺ェ繧翫∪縺吶
縲譎る俣蛻カ髯蝉サ倥″縺ョ驕ク謚櫁い縺ェ縺ゥ縺ァ縲∵凾髢薙r邨碁℃縺励◆繧蛾∈謚櫁い繧帝∈謚樔ク崎ス縺ォ縺吶k蝣エ蜷医↑縺ゥ縺ォ菴ソ逕ィ縺励∪縺吶
縲繝ェ繝ウ繧ッ縺ョ繝ュ繝繧ッ縺ッ縲∵眠縺励>蛻・縺ョ繝ェ繝ウ繧ッ縺御ス懈舌&繧後k縺ィ閾ェ蜍慕噪縺ォ隗」髯、縺輔l縺セ縺吶
縲騾縺ョ蜍穂ス懊r縺吶k unlocklink 繧ソ繧ー繧ゅ≠繧翫∪縺吶
+
+ + locksnapshot + 繧ケ繝翫ャ繝励す繝ァ繝繝医ョ繝ュ繝繧ッ + 縲繧ケ繝翫ャ繝励す繝ァ繝繝医r繝ュ繝繧ッ縺励∪縺吶よ槭〒繧オ繝繝阪う繝ォ繧剃ソ晏ュ倥☆繧句エ蜷医↓逕サ髱「縺ョ繧ケ繝翫ャ繝励す繝ァ繝繝医r謦ョ繧翫∪縺吶′縲√せ繝翫ャ繝励す繝ァ繝繝医r繝ュ繝繧ッ縺吶k縺ィ縲∵ャ。縺ォunlocksnapshot 繧ソ繧ー縺ァ繝ュ繝繧ッ繧定ァ」髯、縺吶k縺セ縺ァ縲√せ繝翫ャ繝励す繝ァ繝繝医r繝ュ繝繧ッ縺励◆譎らせ縺ァ縺ョ逕サ蜒上r繧オ繝繝阪う繝ォ縺ィ縺励※菫晏ュ倥☆繧九h縺縺ォ縺ェ繧翫∪縺吶
縲縺薙l繧貞茜逕ィ縺励※縲∝承繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ縺ォ蜈・縺」縺溘→縺阪↓縺薙ョ繧ソ繧ー繧剃スソ逕ィ縺吶l縺ー縲∝承繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ蜀縺ァ譬槭r菫晏ュ倥@縺ヲ繧ゅ∽ソ晏ュ倥&繧後k繧オ繝繝阪う繝ォ縺ッ蜿ウ繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ縺ォ蜈・縺」縺溘→縺阪ョ繧ケ繝翫ャ繝励す繝ァ繝繝医′菴ソ繧上l繧九h縺縺ォ縺ェ繧翫∪縺 ( 繝ュ繝繧ッ繧偵@縺ェ縺縺ィ蜿ウ繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ縺ォ蜈・縺」縺ヲ縺繧区怙荳ュ縺ョ繧ケ繝翫ャ繝励す繝ァ繝繝医′菫晏ュ倥&繧後※縺励∪縺 )縲
縲locksnapshot 繧ソ繧ー繧剃スソ縺」縺溘i縲√°縺ェ繧峨★ unlocksnapshot 繧ソ繧ー繧ゆスソ逕ィ縺励↑縺代l縺ー縺ェ繧翫∪縺帙s ( 蜿ウ繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ縺ォ菴ソ縺」縺溘↑繧峨ー縲∝承繧ッ繝ェ繝繧ッ繧オ繝悶Ν繝シ繝√Φ繧呈栢縺代k縺ィ縺阪↓縺ッ蠢縺 unlocksnapshot 繧ソ繧ー繧貞ョ溯。後☆繧九h縺縺ォ縺励※縺上□縺輔> )縲
+
+ + macro + 繝槭け繝ュ縺ョ險倩ソー + 縲繝槭け繝ュ險倩ソー繧帝幕蟋九@縺セ縺吶よ眠縺励>繧ソ繧ー繧貞ョ夂セゥ縺吶k縺薙→縺悟コ譚・縺セ縺吶
縲縺薙ョ繧ソ繧ー縺九i縲endmacro 繧ソ繧ー縺セ縺ァ縺ォ縺ゅk譁遶繧繧ソ繧ー縺ッ縲]ame 螻樊ァ縺ァ謖螳壹&繧後◆繧ソ繧ー縺ィ縺励※逋サ骭イ縺輔l縲∽サ・蠕御スソ逕ィ縺ァ縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶
縲縺溘□縺励√槭け繝ュ荳ュ縺ォ iscript 繧ソ繧ー繧剃スソ逕ィ縺吶k縺薙→縺ッ縺ァ縺阪∪縺帙s縲
縲繝槭け繝ュ荳ュ縺ォ譖ク縺九l縺溘ち繧ー縺ォ縺ッ縲∫音蛻・縺ォ % 繧帝ュ縺ォ縺、縺代◆螻樊ァ縺ョ蛟、繧呈欠螳壹☆繧九%縺ィ縺後〒縺阪∪縺吶% 莉・髯阪↓縺ッ繝槭け繝ュ縺ォ貂。縺輔l縺溷ア樊ァ蜷阪r謖螳壹@縺セ縺吶ゅ☆繧九→縲√槭け繝ュ縺ォ貂。縺輔l縺溷ア樊ァ縺ョ蛟、繧偵◎縺ョ螻樊ァ縺ョ蛟、縺ィ縺吶k縺薙→縺後〒縺阪∪縺吶ゅ%縺ョ縺ィ縺阪− 繧剃スソ縺」縺ヲ螻樊ァ縺ョ逵∫払蛟、繧呈欠螳壹☆繧九%縺ィ繧ゅ〒縺阪∪縺 ( 荳九ョ萓句盾辣ァ )縲ょア樊ァ蜷阪↓縺ッ蟆乗枚蟄励r逕ィ縺縺ヲ縺上□縺輔>縲
縲縺セ縺溘∝ア樊ァ縺ョ莉」繧上j縺ォ * 繧呈嶌縺上→縲√槭け繝ュ縺ォ貂。縺輔l縺溘☆縺ケ縺ヲ縺ョ螻樊ァ繧偵◎縺ョ繧ソ繧ー縺ォ貂。縺吶%縺ィ縺後〒縺阪∪縺吶
+ [macro name="newtag"][font color=0xff0000]譁ー縺励>繧ソ繧ー縺ァ縺兌resetfont][endmacro]
[newtag]
[macro name="colortag"][font color=%iro]iro 螻樊ァ莉倥″縺ョ繧ソ繧ー[resetfont][endmacro]
[colortag iro=0x332211]
; 竊 colotag 縺ォ貂。縺輔l縺 iro 螻樊ァ縺ョ蛟、縺 font 繧ソ繧ー縺ョ color 螻樊ァ縺ォ貂。縺輔l繧
[macro name="transwait"][trans *][wt][endmacro]
; 竊 縺薙ョ transwait 縺ォ貂。縺輔l縺溘☆縺ケ縺ヲ縺ョ螻樊ァ縺 trans 繧ソ繧ー縺ォ貂。縺輔l繧
[macro name="colortag"][font color=%iro|0xff0000]iro 螻樊ァ莉倥″縺ァ逵∫払蛟、繧偵@縺ヲ縺縺励◆繧ソ繧ー[resetfont][endmacro]
; 竊 % 縺ョ螻樊ァ縺ョ蛟、縺ァ縺ッ縲 | 縺ョ縺ゅ→縺ォ邯壹¢縺ヲ縲√◎縺ョ螻樊ァ縺ョ逵∫払蛟、繧呈欠螳壹☆繧九%縺ィ縺後〒縺阪∪縺
+ + name + 繧ソ繧ー蜷 + yes + 繧ソ繧ー蜷 + 縲繧ソ繧ー蜷阪r謖螳壹@縺セ縺吶ゆサ・蠕後√%縺ョ蜷榊燕縺ァ譁ー縺励>繧ソ繧ー縺悟ョ夂セゥ縺輔l縲√槭け繝ュ繧剃スソ逕ィ縺ァ縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶 + +
+ + mapaction + 繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝礼畑鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ縺ョ謖螳 + 縲謖螳壹@縺溘Ξ繧、繝、縺ョ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ョ鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ縺ォ菴ソ逕ィ縺吶k繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶
縲縺薙ョ繧ソ繧ー繧 image 繧ソ繧ー縺ァ鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ繧定ェュ縺ソ霎シ繧縺ィ螳滄圀縺ォ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励′菴ソ逕ィ蜿ッ閭ス縺ォ縺ェ繧翫∪縺吶mapdisable 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励r菴ソ逕ィ荳榊庄閭ス縺ォ縺吶k縺薙→縺後〒縺阪∪縺吶
縲隧ウ縺励¥縺ッ KAG System 繝ェ繝輔ぃ繝ャ繝ウ繧ケ繧偵#隕ァ縺上□縺輔>縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲蟇セ雎。縺ィ縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + storage + 鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ + yes + 鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ蜷 + 縲鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶 + +
+ + mapdisable + 繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ョ辟。蜉ケ蛹 + 縲謖螳壹@縺溘Ξ繧、繝、縺ョ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励r辟。蜉ケ縺ォ縺励∪縺吶ゅ莉・髯阪ッ image 繧ソ繧ー繧 mapaction 繧ソ繧ー繧剃スソ縺」縺ヲ鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ繧定ェュ縺ソ霎シ縺セ縺ェ縺代l縺ー繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ッ菴ソ逕ィ縺ァ縺阪∪縺帙s縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲蟇セ雎。縺ィ縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + +
+ + mapimage + 繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝礼畑鬆伜沺逕サ蜒上ョ謖螳 + 縲謖螳壹@縺溘Ξ繧、繝、縺ョ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ョ鬆伜沺逕サ蜒上↓菴ソ逕ィ縺吶k繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶
image 繧ソ繧ー繧 mapaction 繧ソ繧ー縺ァ鬆伜沺繧「繧ッ繧キ繝ァ繝ウ螳夂セゥ繝輔ぃ繧、繝ォ繧定ェュ縺ソ霎シ縺セ縺ェ縺縺ィ繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ッ菴ソ逕ィ縺ァ縺阪∪縺帙s縲
縲隧ウ縺励¥縺ッ KAG System 繝ェ繝輔ぃ繝ャ繝ウ繧ケ繧偵#隕ァ縺上□縺輔>縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲蟇セ雎。縺ィ縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + storage + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + yes + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲繧ッ繝ェ繝繧ォ繝悶Ν繝槭ャ繝励ョ鬆伜沺逕サ蜒上→縺励※逕ィ縺繧九ヵ繧。繧、繝ォ繧呈欠螳壹@縺セ縺吶ゅ繝輔ぃ繧、繝ォ縺ッ 256 濶イ縺ァ菫晏ュ倥&繧後※縺繧句ソ隕√′縺ゅj縺セ縺吶 + +
+ + mappfont + 繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医ョ蜑イ繧雁ス薙※ + 縲迴セ蝨ィ謫堺ス懷ッセ雎。縺ォ縺ェ縺」縺ヲ縺繧九Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ迴セ蝨ィ縺ョ繝輔か繝ウ繝医↓縲∵欠螳壹@縺溘Ξ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医r蜑イ繧雁ス薙※縺セ縺吶ゅ%縺ョ繧ソ繧ー莉・髯阪∝翠驥悟翠驥後〒縺昴ョ繝輔か繝ウ繝医r謠冗判縺吶k縺ィ縺阪ッ蟶ク縺ォ謖螳壹@縺溘Ξ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医′菴ソ逕ィ縺輔l縺セ縺吶
縲蜑イ繧雁ス薙※繧九ヵ繧ゥ繝ウ繝医ッ螳滄圀縺ォ蟄伜惠縺励※縺縺ェ縺上※繧ゅ°縺セ縺縺セ縺帙s縲ゅ◆縺ィ縺医ー縲"縺サ縺偵⊇縺偵ヵ繧ゥ繝ウ繝" 縺ィ縺縺繝輔か繝ウ繝医′驕ク謚槭&繧後※縺繧狗憾諷九〒 mappfont 繧剃スソ縺医ー縲√◎縺ョ "縺サ縺偵⊇縺偵ヵ繧ゥ繝ウ繝" 縺ォ莉サ諢上ョ繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医r蜑イ繧雁ス薙※繧九%縺ィ縺後〒縺阪∪縺吶ゆク縺、縺ョ繝輔か繝ウ繝亥錐縺ォ縺ッ荳縺、縺ョ繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医@縺句牡繧雁ス薙※繧九%縺ィ縺励°縺ァ縺阪∪縺帙s ( 縺溘→縺医ー縲∽ク縺、縺ョ繝輔か繝ウ繝亥錐縺ォ蟇セ縺励※隍謨ー縺ョ繧オ繧、繧コ縺ョ驕輔≧繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医r蜑イ繧雁ス薙※繧九h縺縺ェ縺薙→縺ッ縺ァ縺阪∪縺帙s )縲
縲縺セ縺溘∬、謨ー縺ョ繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医r縺昴l縺槭l蛻・縺ョ繝輔か繝ウ繝医↓蜑イ繧雁ス薙※繧九%縺ィ縺後〒縺阪∪縺吶
+ + storage + 繝輔ぃ繧、繝ォ蜷 + yes + 繝輔ぃ繧、繝ォ蜷 + 迴セ蝨ィ縺ョ繝輔か繝ウ繝医↓蜑イ繧雁ス薙※縺溘>繝ャ繝ウ繝繝ェ繝ウ繧ー貂医∩繝輔か繝ウ繝医ヵ繧。繧、繝ォ繧呈欠螳壹@縺セ縺吶
+
+
+ + move + 繝ャ繧、繝、縺ョ閾ェ蜍慕ァサ蜍 + 縲謖螳壹@縺溘Ξ繧、繝、縺ォ閾ェ蜍慕ァサ蜍輔r縺輔○縺セ縺吶
縲繝ャ繧、繝、縺ッ迴セ蝨ィ縺ョ菴咲スョ繝サ陦ィ遉コ豼蠎ヲ縺九i繧ケ繧ソ繝シ繝医@縺ヲ縲}ath 縺ァ謖螳壹&繧後◆菴咲スョ繝サ陦ィ遉コ豼蠎ヲ繧貞縺ォ縺励※遘サ蜍輔@縺溘j陦ィ遉コ豼蠎ヲ繧貞、牙喧縺輔○縺セ縺吶ら樟蝨ィ縺ョ菴咲スョ繧陦ィ遉コ豼蠎ヲ縺九i遘サ蜍輔′繧ケ繧ソ繝シ繝医☆繧九ョ縺ァ縲}ath 螻樊ァ縺ョ譛蛻昴ョ菴咲スョ/豼蠎ヲ縺ォ縺ッ縲∽ク逡ェ譛蛻昴ョ繝ャ繧、繝、縺ョ菴咲スョ繧陦ィ遉コ豼蠎ヲ繧呈欠螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲( 縺、縺セ繧贋ク逡ェ譛蛻昴ョ菴咲スョ繧陦ィ遉コ豼蠎ヲ縺ッ layopt 繧ソ繧ー縺ェ縺ゥ縺ァ謖螳壹☆繧句ソ隕√′縺ゅj縺セ縺 )縲
縲隍謨ー縺ョ繝ャ繧、繝、縺ォ蟇セ縺励※ move 繧ソ繧ー繧帝撼蜷梧悄縺ォ螳溯。後☆繧九%縺ィ縺後〒縺阪∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ繝ャ繧、繝、縺ョ閾ェ蜍慕ァサ蜍輔ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ょセ縺、縺ォ縺ッ wm 繧ソ繧ー繧呈欠螳壹@縺ヲ縺上□縺輔>縲
縲蜑肴勹繝ャ繧、繝、縺ォ逕サ髱「繧医j繧ょ、ァ縺阪↑逕サ髱「繧定ェュ縺ソ霎シ縺ソ縲√%縺ョ繧ソ繧ー繧剃スソ縺」縺ヲ遘サ蜍輔&縺帙l縺ー繧ケ繧ッ繝ュ繝シ繝ォ縺ョ蜉ケ譫懊r蠕励k縺薙→縺後〒縺阪∪縺吶よ万繧√せ繧ッ繝ュ繝シ繝ォ繧ょ庄閭ス縺ァ縺吶
縲閾ェ蜍慕ァサ蜍穂クュ縺ッ縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ク縺ョ譁蟄玲緒逕サ縺後〒縺阪↑縺九▲縺溘j縲∵枚蟄玲緒逕サ縺碁≦縺上↑縺」縺溘j縺励∪縺吶
縲繝槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ遲峨〒閾ェ蜍慕ァサ蜍輔ッ荳ュ譁ュ縺輔l縺セ縺吶ゆクュ譁ュ縺輔l縺ェ縺繧医≧縺ォ縺吶k縺ォ縺ッ clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励r遖∵ュ「縺励※縺上□縺輔>縲
+ [image storage=s1 layer=0 page=fore visible=true left=0 top=480 opacity=0]
[image storage=s2 layer=1 page=fore visible=true left=320 top=240 opacity=0]
[move time=4000 path="(0,240,255) (0,0,255) (0,-240,255) (0,-480,0)" layer=0]
[move time=4000 path="(320,240,0) (320,240,511) (320,240,0) (320, 240,0)" layer=1]
[wm][wm]
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + 0 莉・荳翫ョ謨エ謨ー 縺セ縺溘ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲蟇セ雎。縺ィ縺ェ繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
縲0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→蜑肴勹繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶
縲message0 縺セ縺溘ッ message1 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶ょ腰縺ォ message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current 繧ソ繧ー縺ァ謖螳壹@縺溽樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ォ縺ェ繧翫∪縺吶
縲閭梧勹繝ャ繧、繝、縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲layer 螻樊ァ縺ァ謖螳壹@縺溘Ξ繧、繝、縺後∬。ィ(fore)逕サ髱「縺ァ縺ゅk縺九∬」(back)逕サ髱「縺ァ縺ゅk縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
縲縺溘□縺励〕ayer=message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医〒縺薙ョ螻樊ァ繧堤怐逡・縺励◆蝣エ蜷医ッ迴セ蝨ィ謫堺ス懷ッセ雎。縺ョ繝壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁∈謚槭&繧後∪縺吶
+
+ + spline + 繧ケ繝励Λ繧、繝ウ陬憺俣 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲}ath 螻樊ァ縺ァ謖螳壹@縺滉ス咲スョ繧抵シ「繧ケ繝励Λ繧、繝ウ縺ァ譖イ邱夊」憺俣縺励◆邱壻ク翫r繝ャ繧、繝、縺檎ァサ蜍輔☆繧九h縺縺ォ縺ェ繧翫∪縺吶
縲false 繧呈欠螳壹☆繧九→縲}ath 螻樊ァ縺ァ謖螳壹@縺滉ス咲スョ繧堤峩邱夊」憺俣縺励◆邱壻ク翫r繝ャ繧、繝、縺檎ァサ蜍輔@縺セ縺吶
縲true 繧呈欠螳壹@縺溷エ蜷医ッ path 縺ォ縺ッ譛菴 2 轤ケ繧呈欠螳壹@縺ヲ縺上□縺輔>縲
+
+ + time + 1轤ケ繧帝夐℃縺吶k譎る俣 + yes + 譎る俣(ms蜊倅ス) + 縲繝ャ繧、繝、縺 path 繧呈欠螳壹@縺溽せ縺九i轤ケ繧堤ァサ蜍輔☆繧九ョ縺ォ蠢隕√↑譎る俣繧呈欠螳壹@縺セ縺吶
縲縺昴ョ縺溘a縲∫ァサ蜍輔↓縺ッ縲騾夐℃縺吶k轤ケ髢薙ョ蛹コ髢薙ョ謨ーテ励%縺ョ螻樊ァ縺ョ蛟、縺ョ譎る俣縺後°縺九j縺セ縺吶
縲縺溘□縺励‖ccel 螻樊ァ縺ォ 0 莉・螟悶r謖螳壹@縺溷エ蜷医ッ 荳轤ケ繧帝夐℃縺吶k譎る俣縺ッ螟牙喧縺励∪縺 ( 遘サ蜍募ィ菴薙↓隕√☆繧区凾髢薙ッ 騾夐℃縺吶k蛹コ髢薙ョ謨ーテ励%縺ョ螻樊ァ縺ョ蛟、縺ァ縺 )縲
+
+ + delay + 蜍穂ス懊r髢句ァ九☆繧九∪縺ァ縺ョ譎る俣 + no + 譎る俣(ms蜊倅ス) + 縲繝ャ繧、繝、縺ョ閾ェ蜍慕ァサ蜍輔′髢句ァ九&繧後k縺セ縺ァ縺ョ譎る俣繧 ms 縺ァ謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ縺ソ縺ェ縺輔l縺セ縺吶
+
+ + path + 遘サ蜍穂ス咲スョ + yes + "(x1,y1,opacity1) (x2,y2,opacity2) ..." + 縲遘サ蜍穂ス咲スョ繧呈欠螳壹@縺セ縺吶
縲遘サ蜍穂ス咲スョ縺ッ縲』(繝ャ繧、繝、蟾ヲ遶ッ菴咲スョ), y(繝ャ繧、繝、荳顔ォッ菴咲スョ), opacity(繝ャ繧、繝、豼蠎ヲ) 繧抵シ薙▽縺・縺、縲√き繝ウ繝槭d遨コ逋ス縲( ) 縺ァ蛹コ蛻縺」縺ヲ謖螳壹@縺セ縺吶
縲縺薙l繧峨ョ髢薙r縲√せ繝励Λ繧、繝ウ陬憺俣縺セ縺溘ッ逶エ邱夊」憺俣縺ォ縺ヲ繝ャ繧、繝、縺檎ァサ蜍輔@縺セ縺吶
縲opacity 縺ォ縺ッ繝ャ繧、繝、縺ョ陦ィ遉コ豼蠎ヲ繧呈欠螳壹@縺セ縺吶ゅΞ繧、繝、縺ョ豼蠎ヲ繧らせ縺九i轤ケ繧堤ァサ蜍輔☆繧矩俣縺ォ騾」邯夂噪縺ォ螟牙喧縺励∪縺吶ゅΞ繧、繝、縺ョ豼蠎ヲ繧帝」邯夂噪縺ァ縺ッ縺ェ縺上∫ェ∫匱逧 ? 縺ォ螟牙喧縺輔○縺溘>蝣エ蜷医ッ豼蠎ヲ縺ォ 256 繧定カウ縺励◆謨ー蛟、繧呈欠螳壹@縺ヲ縺上□縺輔>縲
縲繝ャ繧、繝、繧堤ァサ蜍輔&縺帙★縺ォ陦ィ遉コ豼蠎ヲ螟牙喧縺ョ縺ソ繧定。後≧蝣エ蜷医ッ縲√Ξ繧、繝、菴咲スョ縺ォ縺ッ縺吶∋縺ヲ蜷後§菴咲スョ繧呈欠螳壹@縺セ縺吶
+
+ + accel + 蜉騾溷コヲ逧縺ェ蜍輔″繧偵☆繧九°縺ゥ縺縺 + no + -1 譛ェ貅縺ョ謨ー縺セ縺溘ッ 0(繝繝輔か繝ォ繝) 縺セ縺溘ッ 1 繧医j螟ァ縺阪>謨ー + 縲蜉騾溷コヲ逧縺ェ蜍輔″繧定。後o縺帙k縺九←縺縺九r謖螳壹@縺セ縺吶
縲0 繧呈欠螳壹☆繧九→縲∵怙蛻昴°繧画怙蠕後∪縺ァ荳螳壹ョ蜑イ蜷医〒遘サ蜍募ヲ逅縺碁イ陦後@縺セ縺 ( 蜷騾夐℃轤ケ繧堤ュ蛾俣髫斐ョ譎る俣縺ァ騾夐℃縺励∪縺 )縲ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
縲-1 譛ェ貅縺ョ謨ー繧呈欠螳壹☆繧九→縲∵怙蛻昴ッ譌ゥ縺上∝セ舌縺ォ驕縺上↑繧翫∪縺吶
縲1 繧医j螟ァ縺阪>謨ー繧呈欠螳壹☆繧九→縲∵怙蛻昴ッ驕縺上∝セ舌縺ォ譌ゥ縺上↑繧翫∪縺吶
縲螳滓焚繧呈欠螳壹☆繧九%縺ィ繧ゅ〒縺阪∪縺吶
+
+
+ + nextskip + 縲梧ャ。縺ョ驕ク謚櫁い縺セ縺ァ縺吶☆繧縲阪ョ險ュ螳 + 縲繝ヲ繝シ繧カ繝シ縺後梧ャ。縺ョ驕ク謚櫁い縺セ縺ァ騾イ繧縲阪ョ讖溯ス繧剃スソ逕ィ縺ァ縺阪k繧医≧縺ォ縺吶k縺句凄縺九r謖螳壹〒縺阪∪縺吶
縲繝繝「繧キ繝シ繝ウ縺ェ縺ゥ縺ァ縺ッ辟。蜉ケ縺ォ縺励※縺縺溘⊇縺縺後>縺蝣エ蜷医′縺ゅj縺セ縺吶
+ + enabled + 譛牙柑繝サ辟。蜉ケ縺ョ險ュ螳 + yes + true 縺セ縺溘ッ false + 縲縲梧ャ。縺ョ驕ク謚櫁い縺セ縺ァ騾イ繧縲阪ョ讖溯ス繧呈怏蜉ケ縺ォ縺吶k蝣エ蜷医ッ true縲∫┌蜉ケ縺ォ縺吶k蝣エ蜷医ッ false 繧呈欠螳壹@縺セ縺吶 + +
+ + nowait + 譁蟄苓。ィ遉コ繝弱シ繧ヲ繧ァ繧、繝 + 縲譁蟄励ョ陦ィ遉コ騾溷コヲ繧偵ヮ繝シ繧ヲ繧ァ繧、繝医↓險ュ螳壹@縺セ縺吶
縲縺薙ョ繧ソ繧ー縺ッ縲√ヮ繝シ繧ヲ繧ァ繧、繝医↓險ュ螳壹☆繧句燕縺ォ縲∫峩蜑阪ョ譁蟄苓。ィ遉コ騾溷コヲ繧定ィ俶カ縺励∪縺吶ゅ%縺ョ險俶カ縺励◆譁蟄苓。ィ遉コ騾溷コヲ縺ォ謌サ縺吶↓縺ッ endnowait 繧ソ繧ー繧剃スソ縺縺薙→縺後〒縺阪∪縺吶
縲縺薙ョ繧ソ繧ー縺ィ endnowait 繧ソ繧ー縺ョ髢薙↓縺ッ縲∽ソ晏ュ伜庄閭ス縺ェ繝ゥ繝吶Ν繧定ィ倩ソー縺励↑縺縺ァ縺上□縺輔>縲
+
+ + openvideo + 繝薙ョ繧ェ/SWF縺ョ蜀咲函貅門y + 縲繝薙ョ繧ェ縺セ縺溘ッSWF(Shockwave Flash)縺ョ蜀咲函縺ョ貅門y繧偵@縺セ縺吶
縲荳闊ャ逧縺ォ繝薙ョ繧ェ縺ョ蜀咲函貅門y縺ォ縺ッ譎る俣縺後°縺九k縺ョ縺ァ縲∝咲函縺ョ繧ソ繧、繝溘Φ繧ー繧偵⊇縺九ョ繧ゅョ縺ィ蜷梧悄縺輔○縺溘>蝣エ蜷医↑縺ゥ縲√%縺ョ繧ソ繧ー繧剃スソ縺」縺ヲ蜀咲函貅門y縺ョ縺ソ繧貞医↓陦後o縺帙k縺薙→縺後〒縺阪∪縺吶
縲蜀咲函貅門y繧偵@縺溘ン繝繧ェ繧ТWF繧貞咲函縺吶k縺ォ縺ッ playvideo 繧ソ繧ー繧剃スソ逕ィ縺励∪縺吶
縲縺薙ョ繧ソ繧ー繧剃スソ逕ィ縺励↑縺上※繧 playvideo 繧ソ繧ー縺ァ蜀咲函縺吶k繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺ヲ蜀咲函繧偵&縺帙k縺薙→縺ッ縺ァ縺阪∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + storage + 繝輔ぃ繧、繝ォ蜷 + yes + 繝輔ぃ繧、繝ォ蜷 + 縲蜀咲函貅門y縺吶k繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
+
+
+ + p + 謾ケ繝壹シ繧ク繧ッ繝ェ繝繧ッ蠕縺。 + 縲謾ケ繝壹シ繧ク縺ョ繧ッ繝ェ繝繧ッ蠕縺。繧定。後>縺セ縺吶
縲陦梧忰縺ォ [p] 縺ィ譖ク縺縺溷エ蜷医ッ縲√◎縺ョ縺ゅ→縺ォ \ 縺後≠縺」縺ヲ繧ゅ↑縺上※繧よ隼陦後ッ縺励∪縺帙s( Config.tjs 縺ァ global.ignoreCR 繧 false 縺ォ險ュ螳壹@縺溷エ蜷 )縲
current 繧ソ繧ー縺ァ陬上壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺ヲ縺繧句エ蜷医ッ縺薙ョ險伜捷縺ッ陦ィ遉コ縺輔l縺セ縺帙s縲り。ィ遉コ縺励◆縺蝣エ蜷医ッ陦ィ繝壹シ繧ク縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺ヲ縺上□縺輔>縲
+
+ + pausebgm + BGM 貍泌・上ョ荳譎ょ●豁「 + 縲BGM 貍泌・上r荳譎ょ●豁「縺励∪縺吶Config.tjs 縺ァ BGM 蜀咲函繝。繝繧」繧「縺ォ "Wave" 繧呈欠螳壹@縺溷エ蜷医ョ縺ソ縺ォ譛牙柑縺ァ縺吶
縲BGM 縺ョ荳譎ょ●豁「迥カ諷九ッ譬槭↓菫晏ュ倥&繧後∪縺吶′縲∽ク譎ょ●豁「縺励※縺縺溷エ蜷医ョ BGM 縺ョ蜀咲函菴咲スョ縺ョ諠蝣ア縺ッ菫晏ュ倥&繧後↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲荳譎ょ●豁「縺励◆ BGM 繧貞埼幕縺吶k縺ォ縺ッ resumebgm 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+
+ + pausevideo + 繝薙ョ繧ェ縺ョ荳譎ょ●豁「 + 縲繝薙ョ繧ェ縺ョ蜀咲函繧剃ク譎ょ●豁「縺励∪縺吶 + + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + pimage + 逕サ蜒上ョ驛ィ蛻霑ス蜉隱ュ縺ソ霎シ縺ソ + 縲謖螳壹@縺溘Ξ繧、繝、縺ォ逕サ蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ縺ソ縺セ縺吶
縲謖螳壹@縺溘Ξ繧、繝、縺ョ謖螳壹@縺滄Κ蛻縺ォ縲∝挨縺ョ逕サ蜒上ヵ繧。繧、繝ォ縺ョ荳驛ィ蛻繧帝阪ュ蜷医o縺帙◆繧翫√さ繝斐シ縺励◆繧翫☆繧九%縺ィ縺後〒縺阪∪縺吶
縲縺縺上i縺ァ繧ら判蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ繧縺薙→縺後〒縺阪∪縺吶ゅ◆縺縺励√>縺上i縺ァ繧ゅ√→縺縺」縺ヲ繧ゅ∫判蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ繧縺ィ縺昴ョ縲檎判蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ繧薙□縲阪→縺縺諠蝣ア縺後←繧薙←繧薙→闢遨阪&繧後※縺縺」縺ヲ縺励∪縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲譁ー縺励¥ image 繧ソ繧ー縺ァ繝ャ繧、繝、縺ォ逕サ蜒上r隱ュ縺ソ霎シ繧薙□繧翫freeimage 繧ソ繧ー縺ァ逕サ蜒上r隗」謾セ縺吶k縺ィ縲∬ソス蜉縺励※隱ュ縺ソ霎シ繧薙□逕サ蜒上d縺昴ョ諠蝣ア縺ッ豸医∴縺セ縺吶
縲縺溘→縺医ー縲∽ク螳壽凾髢馴俣髫斐〒繝ャ繧、繝、縺ォ逕サ蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ繧薙〒繧「繝九Γ繝シ繧キ繝ァ繝ウ縲√→縺縺逕ィ騾斐↓縺ッ縺薙ョ繧ソ繧ー縺ァ縺ッ縺ェ縺上※繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ讖溯ス繧剃スソ縺」縺溘⊇縺縺瑚憶縺縺ァ縺励g縺縲
縲縺薙ョ繧ソ繧ー縺ッ縲(mage 繧ソ繧ー縺ァ逕サ蜒上r隱ュ縺ソ霎シ繧薙□縺後√◎縺ョ逕サ蜒上ョ荳驛ィ蛻縺縺代r螟峨∴縺溘>縲√→縺縺縺ィ縺阪↓縲∬ゥイ蠖薙☆繧 image 繧ソ繧ー縺ョ逶エ蠕後↓險倩ソー縺吶k縲√→縺縺逕ィ騾斐↓菴ソ縺縺セ縺吶
+ + storage + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + yes + 逕サ蜒上ヵ繧。繧、繝ォ蜷 + 縲霑ス蜉縺励※隱ュ縺ソ霎シ繧逕サ蜒上r謖螳壹@縺セ縺吶 + + + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲逕サ蜒上r霑ス蜉縺励※隱ュ縺ソ霎シ繧繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、縺ォ逕サ蜒上r隱ュ縺ソ霎シ縺ソ縺セ縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + key + 繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 縲storage 縺ァ謖螳壹@縺溽判蜒上ョ縲√←縺ョ濶イ繧呈栢縺崎牡縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ謚懊″濶イ縺ッ辟。蜉ケ縺ォ縺ェ繧翫∪縺吶 縲key=0xRRGGBB 縺ィ縺縺蠖「蠑上〒 16 騾イ謨ー縺ァ謚懊″濶イ繧呈欠螳壹☆繧九→縲ヽR(襍、) GG(邱) BB(髱)縺ァ蝪励i繧後◆驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺励∪縺吶ゅ◆縺ィ縺医ー縲〔ey=0xff00ff 縺ァ縺ッ (r,g,b)=(255,0,255) 縺、縺セ繧顔悄繝槭ぞ繝ウ繝縺ョ驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺吶k縺ィ縺縺謖螳壹↓縺ェ繧翫∪縺吶
縲縺溘□蜊倥↓謨ー蛟、繧呈欠螳壹☆繧後ー縲√◎縺ョ繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ縺ョ謨ー蛟、縺梧栢縺崎牡縺ィ縺ェ繧翫∪縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲key=adapt 縺ィ謖螳壹☆繧後ー縲∬ェ蜍慕噪縺ォ謚懊″濶イ縺梧アコ螳壹&繧後∪縺吶ゆスソ逕ィ縺輔l繧区栢縺崎牡縺ッ縲∫判蜒上ョ荳逡ェ荳翫ョ繝ゥ繧、繝ウ縺ォ縺ヲ縲∽ク逡ェ螟壹¥菴ソ繧上l縺ヲ縺繧玖牡縺ァ縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲繝槭せ繧ッ逕サ蜒上r菴ソ逕ィ縺吶k蝣エ蜷医ッ縲√%縺ョ螻樊ァ縺ッ謖螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲
+
+ + dx + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈 x 蠎ァ讓 + yes + 繝斐け繧サ繝ォ蜊倅ス + 驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k蜈医ョ蟾ヲ遶ッ x 蠎ァ讓吶r(蟇セ雎。縺ョ繝ャ繧、繝、蜀縺ョ蠎ァ讓吶〒)謖螳壹@縺セ縺吶 + + + dy + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈 y 蠎ァ讓 + yes + 繝斐け繧サ繝ォ蜊倅ス + 驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k蜈医ョ荳顔ォッ y 蠎ァ讓吶r(蟇セ雎。縺ョ繝ャ繧、繝、蜀縺ョ蠎ァ讓吶〒)謖螳壹@縺セ縺吶 + + + sx + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈 x 蠎ァ讓 + no + 繝斐け繧サ繝ォ蜊倅ス + 驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k蜈縺ョ蟾ヲ遶ッ x 蠎ァ讓吶r(霑ス蜉縺励※隱ュ縺ソ霎シ繧逕サ蜒丞縺ョ蠎ァ讓吶〒)謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + sy + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈 y 蠎ァ讓 + no + 繝斐け繧サ繝ォ蜊倅ス + 驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k蜈縺ョ荳顔ォッ y 蠎ァ讓吶r(霑ス蜉縺励※隱ュ縺ソ霎シ繧逕サ蜒丞縺ョ蠎ァ讓吶〒)謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + sw + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈蟷 + no + 繝斐け繧サ繝ォ蜊倅ス + 縲驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k蟷繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲∬ソス蜉縺励※隱ュ縺ソ霎シ繧逕サ蜒上ョ蟷縺吶∋縺ヲ縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + sh + 逕サ蜒剰ェュ縺ソ霎シ縺ソ蜈鬮倥& + no + 繝斐け繧サ繝ォ蜊倅ス + 縲驥阪ュ蜷医o縺帙√≠繧九>縺ッ繧ウ繝斐シ縺吶k鬮倥&繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲∬ソス蜉縺励※隱ュ縺ソ霎シ繧逕サ蜒上ョ鬮倥&縺吶∋縺ヲ縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + mode + 驥阪ュ蜷医o縺帙Δ繝シ繝 + no + "copy"縺セ縺溘ッ "opaque" 縺セ縺溘ッ "pile" (繝繝輔か繝ォ繝) 縺セ縺溘ッ "alpha" 縺セ縺溘ッ "add" 縺セ縺溘ッ "sub" 縺セ縺溘ッ "mul" 縺セ縺溘ッ "dodge" 縺セ縺溘ッ "darken" 縺セ縺溘ッ "lighten" 縺セ縺溘ッ "screen" 縺セ縺溘ッ "psadd" 縺セ縺溘ッ "pssub" 縺セ縺溘ッ "psmul" 縺セ縺溘ッ "psscreen" 縺セ縺溘ッ "psoverlay" 縺セ縺溘ッ "pshlight" 縺セ縺溘ッ "psslight" 縺セ縺溘ッ "psdodge" 縺セ縺溘ッ "psdodge5" 縺セ縺溘ッ "psburn" 縺セ縺溘ッ "pslighten" 縺セ縺溘ッ "psdarken" 縺セ縺溘ッ "psdiff" 縺セ縺溘ッ "psdiff5" 縺セ縺溘ッ "psexcl" + 縲sx sy sw sh 縺ョ蜷螻樊ァ縺ァ謖螳壹@縺溽洸蠖「鬆伜沺繧 驥阪ュ蜷医o縺帙k縺九√≠繧九>縺ッ蜊倡エ斐↓繧ウ繝斐シ縺吶k縺九√≠繧九>縺ッ貍皮ョ励r陦後≧縺九r謖螳壹@縺セ縺吶
縲"copy" 縺セ縺溘ッ "opaque" 繧呈欠螳壹☆繧九→遏ゥ蠖「鬆伜沺縺ッ繧ウ繝斐シ縺輔l縺セ縺吶"copy" 縺ァ繧 "opaque" 縺ァ繧ょ酔縺俶э蜻ウ縺ァ縺吶
縲"pile" 縺セ縺溘ッ "alpha" 繧呈欠螳壹☆繧九→縲√い繝ォ繝輔ぃ蜷域舌↓繧医k驥阪ュ蜷医o縺帙′陦後o繧後∪縺吶"pile" 縺ァ繧 "alpha" 縺ァ繧ょ酔縺俶э蜻ウ縺ァ縺吶
縲"addalpha" 繧呈欠螳壹☆繧九→縲∝刈邂励い繝ォ繝輔ぃ蜷域舌↓繧医k驥阪ュ蜷医o縺帙′陦後o繧後∪縺吶
縲縺昴ョ縺サ縺九ョ繝「繝シ繝峨↓縺、縺縺ヲ縺ッ image 繧ソ繧ー縺ョ mode 螻樊ァ繧貞盾辣ァ縺励※縺上□縺輔>縲
縲逵∫払縺吶k縺ィ "pile" 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶ゆセ句、也噪縺ォ TLG5/6 逕サ蜒上ッ逕サ蜒丈クュ縺ォ縺ゥ縺ョ驥阪ュ蜷医o縺帙Δ繝シ繝峨〒驥阪ュ蜷医o縺輔l繧九°縺ョ諠蝣ア繧呈戟縺」縺ヲ縺縺セ縺 (縺薙ョ諠蝣ア縺ッ image 繧ソ繧ー縺ァ隱ュ縺ソ霎シ縺セ繧後k迚ゥ縺ィ蜷御ク縺ァ縺)縲ゅ%縺ョ蝣エ蜷医ッ縲√%縺ョ螻樊ァ縺檎怐逡・縺輔l縺溷エ蜷医ッ縲√◎縺ョ逕サ蜒上′諠蝣ア縺ィ縺励※謖√▲縺ヲ縺繧矩阪ュ蜷医o縺帙Δ繝シ繝峨↓蠕薙>縺セ縺吶
+
+ + opacity + 荳埼乗主コヲ + no + 荳埼乗主コヲ ( 0 (蜈ィ縺上ョ騾乗) 縲 255 (蜈ィ縺上ョ荳埼乗 ) ) + 縲mode 螻樊ァ縺ァ "pile" 繧呈欠螳壹@縺溷エ蜷医ョ驥阪ュ蜷医o縺帙ョ荳埼乗主コヲ縲√≠繧九>縺ッ "add" "sub" "mul" "dodge" "darken" "lighten" "screen" 縺ョ縺縺壹l縺九r謖螳壹@縺溷エ蜷医ョ貍皮ョ励ョ蠑キ蠎ヲ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 255 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+
+ + playbgm + BGM 縺ョ貍泌・ + 縲BGM 繧呈シ泌・上@縺セ縺吶 + + storage + BGM 繝輔ぃ繧、繝ォ蜷 + yes + BGM 繝輔ぃ繧、繝ォ蜷 + 縲貍泌・上☆繧 BGM 繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶 + + + loop + 繝ォ繝シ繝励☆繧九° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲BGM 繧偵Ν繝シ繝励☆繧九°繧呈欠螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺吶Galse 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺帙s縲
縲逵∫払縺吶k縺ィ true 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+
+ + playse + 蜉ケ譫憺浹縺ョ蜀咲函 + 縲蜉ケ譫憺浹繧貞咲函縺励∪縺吶
縲縺薙ョ繧ソ繧ー縺ッ蜉ケ譫憺浹縺ョ蜀咲函縺ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲らオゆコ繧貞セ縺、縺ォ縺ッ ws 繧ソ繧ー繧剃スソ縺」縺ヲ縺上□縺輔>縲
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜉ケ譫憺浹繧貞咲函縺吶k繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶ゆク縺、縺ョ繝舌ャ繝輔ぃ縺ァ縺ッ蜷梧凾縺ォ縺ッ荳縺、縺ョ蜉ケ譫憺浹繧帝ウエ繧峨☆縺薙→縺後〒縺阪∪縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + storage + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + yes + 蜉ケ譫憺浹繝輔ぃ繧、繝ォ蜷 + 縲貍泌・上☆繧句柑譫憺浹繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
縲諡。蠑オ蟄舌ッ逵∫払蜿ッ閭ス縺ァ縺吶′縲∫怐逡・縺励◆蝣エ蜷医↓閾ェ蜍慕噪縺ォ謗「縺怜コ縺輔l繧九ョ縺ッ.wav 縺セ縺溘ッ .ogg 縺セ縺溘ッ .mp3 縺ョ諡。蠑オ蟄舌r謖√▽繝輔ぃ繧、繝ォ縺縺代〒縺吶( 縺溘□縺 ogg 縺ィ mp3 縺ョ 蜀咲函縺ォ縺ッ SDK 莉伜ア槭ョ繝励Λ繧ー繧、繝ウ縺悟ソ隕 )
縺昴ョ縺サ縺九ョ繝励Λ繧ー繧、繝ウ縺ァ菴ソ逕ィ蜿ッ閭ス縺ォ縺ェ繧九◎縺ョ縺サ縺九ョ繝輔ぃ繧、繝ォ蠖「蠑上r謖螳壹☆繧句エ蜷医ッ諡。蠑オ蟄舌b謖螳壹@縺ヲ縺上□縺輔>縲
+
+ + loop + 郢ー繧願ソ斐@蜀咲函繧定。後≧縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲蜉ケ譫憺浹繧堤ケー繧願ソ斐@蜀咲函縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→郢ー繧願ソ斐@蜀咲函縺輔l縺セ縺吶Galse 繧呈欠螳壹☆繧九→荳蝗樣剞繧翫ョ蜀咲函縺ィ縺ェ繧翫∪縺吶ら怐逡・縺吶k縺ィfalse 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
縲true 繧呈欠螳壹@縺溷エ蜷医ッ ws 繧ソ繧ー縺ァ蜉ケ譫憺浹蜀咲函縺ョ邨ゆコ繧貞セ縺、縺薙→縺ッ縺ァ縺阪∪縺帙s縲
+
+
+ + playvideo + 繝薙ョ繧ェ/SWF縺ョ蜀咲函 + 縲繝薙ョ繧ェ縺セ縺溘ッSWF(Shockwave Flash)繧貞咲函縺励∪縺吶video 繧ソ繧ー縺ァ謖螳壹@縺溯。ィ遉コ鬆伜沺縺ォ縺ヲ蜀咲函縺励∪縺吶ゅン繝繧ェ陦ィ遉コ鬆伜沺縺ッ繝繝輔か繝ォ繝医〒縺ッ髱櫁。ィ遉コ縺ェ縺ョ縺ァ縲」ideo 繧ソ繧ー縺ァ陦ィ遉コ迥カ諷九↓縺励↑縺縺ィ陦ィ遉コ縺輔l縺セ縺帙s縲
縲縺薙ョ繧ソ繧ー縺ッ繝薙ョ繧ェ縺ョ蜀咲函縺ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ょセ縺、縺ォ縺ッ wv 繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + storage + 繝輔ぃ繧、繝ォ蜷 + no + 繝輔ぃ繧、繝ォ蜷 + 縲蜀咲函縺吶k繝輔ぃ繧、繝ォ蜷阪r謖螳壹@縺セ縺吶
縲縺吶〒縺ォ openvideo 繧ソ繧ー縺ァ蜀咲函縺ョ貅門y繧偵@縺ヲ縺縺溷エ蜷医ッ縺薙ョ螻樊ァ繧呈欠螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲
縲騾縺ォ縲{penvideo 繧ソ繧ー繧剃スソ逕ィ縺励↑縺蝣エ蜷医ッ縺薙%縺ァ繝輔ぃ繧、繝ォ蜷阪r謖螳壹☆繧句ソ隕√′縺ゅj縺セ縺吶
+
+
+ + position + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ螻樊ァ + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺吶k讒倥縺ェ螻樊ァ繧呈欠螳壹@縺セ縺吶
縲縺縺壹l縺ョ螻樊ァ繧ゅ∫怐逡・縺吶l縺ー險ュ螳壹ッ螟画峩縺輔l縺セ縺帙s縲
縲marginl, margint, marginr, marginb 縺ョ縺昴l縺槭l縺ョ螻樊ァ縺ッ縲’rame 縺ァ謖螳壹@縺溘ヵ繝ャ繝シ繝逕サ蜒上〒縺ョ陦ィ遉コ鬆伜沺繧呈欠螳壹☆繧九ョ縺ォ繧ゆスソ縺縺セ縺吶ゅ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺励※蛟句挨縺ォ險ュ螳壹〒縺阪∪縺 ( 陬上壹シ繧ク繝サ髱「逕サ髱「繧貞挨縺ョ險ュ螳壹↓縺吶k縺薙→繧ゅ〒縺阪∪縺 )縲
+ + layer + 蟇セ雎。繝ャ繧、繝、 + no + message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲蟇セ雎。縺ィ縺吶k繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ current 繧ソ繧ー縺ァ謖螳壹&繧後◆迴セ蝨ィ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁∈謚槭&繧後∪縺吶
縲縺薙ョ螻樊ァ繧 page 螻樊ァ繧ら怐逡・縺輔l縺溷エ蜷医ッ縲…urrent 繧ソ繧ー縺ァ謖螳壹&繧後◆迴セ蝨ィ縺ョ繝壹シ繧ク繝サ迴セ蝨ィ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁∈謚槭&繧後∪縺吶
+
+ + page + 蟇セ雎。繝壹シ繧ク + no + "fore" 縺セ縺溘ッ "back" + 縲蟇セ雎。縺ィ縺吶k繝壹シ繧ク繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ current 繧ソ繧ー縺ァ謖螳壹&繧後◆迴セ蝨ィ縺ョ繝壹シ繧ク縺碁∈謚槭&繧後∪縺吶
+
+ + left + 蟾ヲ遶ッ菴咲スョ + no + 蟾ヲ遶ッ菴咲スョ ( pixel 蜊倅ス ) + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ蟾ヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + top + 荳顔ォッ菴咲スョ + no + 荳顔ォッ菴咲スョ ( pixel 蜊倅ス ) + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ荳顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + width + + no + 蟷 ( pixel 蜊倅ス ) + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ蟷繧呈欠螳壹@縺セ縺吶 + + + height + 鬮倥& + no + 鬮倥& ( pixel 蜊倅ス ) + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ鬮倥&繧呈欠螳壹@縺セ縺吶 + + + frame + 繝輔Ξ繝シ繝逕サ蜒 + no + 繝輔Ξ繝シ繝逕サ蜒上ョ繝輔ぃ繧、繝ォ蜷 + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繝輔Ξ繝シ繝逕サ蜒上→縺励※陦ィ遉コ縺輔○繧狗判蜒上r謖螳壹@縺セ縺吶ゆスソ逕ィ縺励↑縺蝣エ蜷医ッ "" 繧呈欠螳壹@縺ヲ縺上□縺輔>縲"" 繧呈欠螳壹☆繧九→縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺 color 縺翫h縺ウ opacity 螻樊ァ縺ァ謖螳壹@縺溯牡縲∵ソ蠎ヲ縺ァ遏ゥ蠖「縺ァ陦ィ遉コ縺輔l縺セ縺吶ゅ縺薙%縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ蜷 (諡。蠑オ蟄舌r髯、縺) 驛ィ蛻縺ォ _m 繧定ソス蜉縺励◆繝輔ぃ繧、繝ォ縺後√b縺励≠繧後ー縲√槭せ繧ッ逕サ蜒上→縺励※隱ュ縺ソ霎シ縺セ繧後∪縺吶ゅ槭せ繧ッ逕サ蜒上ッ蠢縺 256 濶イ繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ縺ァ菫晏ュ倥@縺ヲ縺上□縺輔>縲 + + + framekey + 繝輔Ξ繝シ繝逕サ蜒上ョ繧ォ繝ゥ繝シ繧ュ繝シ + no + 0xRRGGBB 蠖「蠑 縺セ縺溘ッ 繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ逡ェ蜿キ 縺セ縺溘ッ "adapt" + 縲frame 螻樊ァ縺ァ謖螳壹@縺溘ヵ繝ャ繝シ繝逕サ蜒上ョ縲√←縺ョ濶イ繧呈栢縺崎牡縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ謚懊″濶イ縺ッ辟。蜉ケ縺ォ縺ェ繧翫∪縺吶 縲key=0xRRGGBB 縺ィ縺縺蠖「蠑上〒 16 騾イ謨ー縺ァ謚懊″濶イ繧呈欠螳壹☆繧九→縲ヽR(襍、) GG(邱) BB(髱)縺ァ蝪励i繧後◆驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺励∪縺吶ゅ◆縺ィ縺医ー縲〔ey=0xff00ff 縺ァ縺ッ (r,g,b)=(255,0,255) 縺、縺セ繧顔悄繝槭ぞ繝ウ繝縺ョ驛ィ蛻繧呈栢縺崎牡縺ィ縺励※騾乗弱↓縺吶k縺ィ縺縺謖螳壹↓縺ェ繧翫∪縺吶
縲縺溘□蜊倥↓謨ー蛟、繧呈欠螳壹☆繧後ー縲√◎縺ョ繝代Ξ繝繝医う繝ウ繝繝繧ッ繧ケ縺ョ謨ー蛟、縺梧栢縺崎牡縺ィ縺ェ繧翫∪縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲key=adapt 縺ィ謖螳壹☆繧後ー縲∬ェ蜍慕噪縺ォ謚懊″濶イ縺梧アコ螳壹&繧後∪縺吶ゆスソ逕ィ縺輔l繧区栢縺崎牡縺ッ縲∫判蜒上ョ荳逡ェ荳翫ョ繝ゥ繧、繝ウ縺ォ縺ヲ縲∽ク逡ェ螟壹¥菴ソ繧上l縺ヲ縺繧玖牡縺ァ縺吶16濶イ/256濶イ縺ョ逕サ蜒上↓蟇セ縺励※譛牙柑縺ァ縺吶
縲繝槭せ繧ッ逕サ蜒上r菴ソ逕ィ縺吶k蝣エ蜷医ッ縲√%縺ョ螻樊ァ繧呈欠螳壹☆繧句ソ隕√ッ縺ゅj縺セ縺帙s縲
+
+ + color + 繝ャ繧、繝、縺ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ陦ィ遉コ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶 frame 縺ォ "" 繧呈欠螳壹@縺溘→縺阪↓譛牙柑縺ァ縺吶 + + + opacity + 繝ャ繧、繝、縺ョ荳埼乗主コヲ + no + 荳埼乗主コヲ ( 0 縲 255 ) + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ荳埼乗主コヲ繧 0 縲 255 縺ョ謨ー蛟、縺ァ謖螳壹@縺セ縺(譁蟄励ョ荳埼乗主コヲ繧縲√Ξ繧、繝、閾ェ菴薙ョ荳埼乗主コヲ縺ァ縺ッ縺ゅj縺セ縺帙s)縲0 縺ァ螳悟ィ縺ォ騾乗弱〒縺吶Grame 縺ォ "" 繧呈欠螳壹@縺溘→縺阪↓譛牙柑縺ァ縺吶 + + + marginl + 蟾ヲ菴咏區 + no + 蟾ヲ菴咏區 ( pixel 蜊倅ス ) + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ蟾ヲ菴咏區繧呈欠螳壹@縺セ縺吶 + + + margint + 荳贋ス咏區 + no + 荳贋ス咏區 ( pixel 蜊倅ス ) + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ荳贋ス咏區繧呈欠螳壹@縺セ縺吶 + + + marginr + 蜿ウ菴咏區 + no + 蜿ウ菴咏區 ( pixel 蜊倅ス ) + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ蜿ウ菴咏區繧呈欠螳壹@縺セ縺吶 + + + marginb + 荳倶ス咏區 + no + 荳倶ス咏區 ( pixel 蜊倅ス ) + 繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ荳倶ス咏區繧呈欠螳壹@縺セ縺吶 + + + vertical + 邵ヲ譖ク縺阪Δ繝シ繝 + no + "true" 縺セ縺溘ッ "false" + 縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧堤クヲ譖ク縺阪↓繝「繝シ繝峨↓縺吶k縺ォ縺ッ "true" 繧呈欠螳壹@縺セ縺吶よィェ譖ク縺阪↓縺吶k縺ォ縺ッ "false" 繧呈欠螳壹@縺ヲ縺上□縺輔>縲 + + + draggable + 繝槭え繧ケ縺ァ繝峨Λ繝繧ー蜿ッ閭ス縺 + no + "true" 縺セ縺溘ッ "false" + 縲true 縺ォ險ュ螳壹☆繧九→縲[arginl, margint, marginr, marginb 縺ァ謖螳壹@縺溘槭シ繧ク繝ウ縺ョ驛ィ蛻縺ァ縺九▽縲√ヵ繝ャ繝シ繝逕サ蜒上ョ荳埼乗主コヲ縺 64 莉・荳翫ョ邂謇繧偵√槭え繧ケ縺ァ繝峨Λ繝繧ー縺吶k縺薙→縺ォ繧医j繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧偵Θ繝シ繧カ縺檎ァサ蜍輔〒縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶
縲false 繧呈欠螳壹☆繧九→縺薙ョ蜍穂ス懊ッ陦後o繧後∪縺帙s縲
+
+ + visible + 蜿ッ隕悶° + no + "true" 縺セ縺溘ッ "false" + 縲true 縺ォ險ュ螳壹☆繧九→縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺悟庄隕(陦ィ遉コ迥カ諷)縺ォ縺ェ繧翫∪縺吶
縲false 縺ォ險ュ螳壹☆繧九→縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺ッ荳榊庄隕(髱櫁。ィ遉コ迥カ諷)縺ォ縺ェ繧翫∪縺吶
+
+
+ + preparevideo + 繝薙ョ繧ェ縺ョ蜀咲函貅門y + 繝薙ョ繧ェ縺ョ蜀咲函貅門y繧定。後>縺セ縺吶
繝ャ繧、繝、繝シ謠冗判繝「繝シ繝画凾縺ォ譛ェ謠冗判逕サ蜒上′陦ィ遉コ縺輔l縺ヲ縺励∪縺縺ョ繧帝亟縺舌◆繧√↓縺薙ョ讖溯ス繧剃スソ逕ィ縺励※縺上□縺輔>縲
縺薙ョ繧ソ繧ー縺ョ逶エ蠕後↓縺九↑繧峨★[wp]繧ソ繧ー繧堤スョ縺縺ヲ貅門y螳御コ繧貞セ縺」縺ヲ縺上□縺輔>縲
縺薙ョ繧ソ繧ー縺ッ繝ャ繧、繝、繝シ謠冗判繝「繝シ繝画凾縺ョ縺ソ譛牙柑縺ァ縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + ptext + 繝ャ繧、繝、縺ク縺ョ譁蟄玲緒逕サ + 縲謖螳壹@縺溘Ξ繧、繝、縺ォ譁蟄励r謠冗判縺励∪縺吶
縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ陦ィ遉コ縺吶k縺ョ縺ィ逡ー縺ェ繧翫√%縺ョ繧ソ繧ー縺ァ謠冗判縺励◆蜀螳ケ縺ッ譬槭↓險倬鹸縺輔l縺セ縺 (譬槭r隱ュ縺ソ霎シ繧薙〒繧ょ咲樟縺輔l縺セ縺)縲
縲譁蟄励ッ繝ャ繧、繝、縺ォ逕サ蜒上r隱ュ縺ソ霎シ繧縺ィ豸亥悉縺輔l縺セ縺吶
縲縺ェ縺ォ縺九ョ謨ー蛟、繧ケ繝繝シ繧ソ繧ケ縺ェ縺ゥ繧堤判髱「荳翫↓陦ィ遉コ縺礼カ壹¢縺溘>蝣エ蜷医↓萓ソ蛻ゥ縺ァ縺吶
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲譁蟄励r謠冗判縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、縺ォ譁蟄励r謠冗判縺励∪縺吶
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + x + x蠎ァ讓吝、 + yes + pixel蜊倅ス + 縲譁蟄励r謠冗判縺吶k讓ェ菴咲スョ繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
+
+ + y + y蠎ァ讓吝、 + yes + pixel蜊倅ス + 縲譁蟄励r謠冗判縺吶k邵ヲ菴咲スョ繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
+
+ + text + 謠冗判縺吶k譁蟄 + yes + 譁蟄怜 + 縲謠冗判縺吶k譁蟄怜励r謖螳壹@縺セ縺吶
+
+ + vertical + 邵ヲ譖ク縺阪°縺ゥ縺縺 + no + false(繝繝輔か繝ォ繝) 縺セ縺溘ッ true + 縲邵ヲ譖ク縺阪°縺ゥ縺縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→邵ヲ譖ク縺阪↓縺ェ繧翫∪縺吶
+
+ + angle + 譁蟄玲緒逕サ隗貞コヲ + no + 隗貞コヲ縺ョ10蛟 + 縲譁蟄玲緒逕サ縺ョ隗貞コヲ繧呈欠螳壹@縺セ縺吶りァ貞コヲ縺ョ 10 蛟阪ョ蛟、 ( 0 縲 3600 ) 縺ァ謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲∵ィェ譖ク縺阪ョ蝣エ蜷医ッ 0縲∫クヲ譖ク縺阪ョ蝣エ蜷医ッ 2700 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
+
+ + size + 譁蟄励し繧、繧コ + no + 譁蟄励し繧、繧コ(pixel蜊倅ス) + 縲譁蟄励し繧、繧コ繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ 12 縺碁∈謚槭&繧後∪縺吶
+
+ + face + 繝輔か繝ウ繝亥錐 + no + 繝輔か繝ウ繝亥錐 + 縲繝輔か繝ウ繝亥錐繧呈欠螳壹@縺セ縺吶
縲繝輔か繝ウ繝亥錐縺ォ縺ッ譖匁乂縺ェ謖螳壹ッ縺ァ縺阪∪縺帙s縲ゅせ繝壹シ繧ケ縲∝濠隗抵シ丞ィ隗偵b豁」遒コ縺ォ謖螳壹@縺ヲ縺上□縺輔>縲
縲隍謨ー縺ョ繝輔か繝ウ繝亥錐繧偵き繝ウ繝槭〒蛹コ蛻縺」縺ヲ謖螳壹〒縺阪∪縺吶ゅ%縺ョ蝣エ蜷医ッ縲∵怙蛻昴ョ譁ケ縺ォ譖ク縺縺溘ヵ繧ゥ繝ウ繝医′蟄伜惠縺吶l縺ー縲√◎繧後′蜆ェ蜈医&繧後※驕ク謚槭&繧後∪縺吶
縲萓 : face="HG陦梧嶌菴,シュシウ シー繧エ繧キ繝繧ッ"
縲邵ヲ譖ク縺咲畑繝輔か繝ウ繝医ッ閾ェ蜍慕噪縺ォ險ュ螳壹&繧後∪縺吶ョ縺ァ縲√ヵ繧ゥ繝ウ繝亥錐縺ョ蜈磯ュ縺ォ @ 繝槭シ繧ッ繧偵▽縺代k蠢隕√ッ縺ゅj縺セ縺帙s縲
縲縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ シュシウ シー繧エ繧キ繝繧ッ縺碁∈謚槭&繧後∪縺吶
+
+ + color + 譁蟄苓牡 + no + 0xRRGGBB 蠖「蠑 + 縲譁蟄苓牡繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0x000000 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + italic + 譁應ス薙↓縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲譁蟄励r譁應ス薙↓縺吶k縺九←縺縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→譁應ス薙↓縺ェ繧翫∪縺吶
縲縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + shadow + 蠖ア繧定。ィ遉コ縺吶k縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲譁蟄励↓蠖ア繧偵▽縺代k縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→蠖ア縺後▽縺阪∪縺吶
縲edge 縺ィ shadow 荳。譁ケ縺ォ true 繧呈欠螳壹☆繧九%縺ィ縺ッ縺ァ縺阪∪縺帙s縲
+
+ + edge + 陲区枚蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲譁蟄励r陲区枚蟄 ( 邵∝叙繧頑枚蟄 ) 縺ォ縺吶k縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→陲区枚蟄励↓縺ェ繧翫∪縺吶
+
+ + edgecolor + 陲区枚蟄励ョ陲九ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲譁蟄励ョ陲九ョ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0x000000 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
+
+ + shadowcolor + 蠖ア縺ョ濶イ + no + 0xRRGGBB 蠖「蠑 + 縲蠖ア縺ョ濶イ繧 0xRRGGBB 蠖「蠑上〒謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0x000000 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
+
+ + bold + 螟ェ譁蟄励↓縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲譁蟄励r螟ェ譁蟄励↓縺吶k縺九r謖螳壹@縺セ縺吶 true 繧呈欠螳壹☆繧九→螟ェ譁蟄励↓縺ェ繧翫∪縺吶
+
+
+ + quake + 逕サ髱「繧呈昭繧峨☆ + 縲逕サ髱「繧呈昭繧峨@縺セ縺吶
縲縺薙ョ繧ソ繧ー縺ッ謠コ繧後ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲よ昭繧後ョ邨ゆコ繧貞セ縺、縺ォ縺ッ wq 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
縲vmax 螻樊ァ繧 0 縺ォ險ュ螳壹☆繧九→讓ェ謠コ繧後↓縺ェ繧翫∪縺吶Imax 螻樊ァ繧 0 縺ォ險ュ螳壹☆繧九→邵ヲ謠コ繧後↓縺ェ繧翫∪縺吶
+ + time + 謠コ繧峨@縺ヲ縺繧区悄髢 + yes + 譁蟄玲焚縺セ縺溘ッ ms(繝溘Μ遘) + 縲縺薙%縺ァ謖螳壹@縺滓枚蟄玲焚繧定。ィ遉コ縺吶k縺ョ縺ィ蜷後§縺縺代ョ譎る俣縲∫判髱「繧呈昭繧峨@縺セ縺吶
縲timemode 螻樊ァ縺ァ ms 繧呈欠螳壹@縺溷エ蜷医ッ繝溘Μ遘貞腰菴阪〒縲‥elay 繧呈欠螳壹@縺溷エ蜷医ッdelay 繧ソ繧ー縺ァ謖螳壹@縺滓枚蟄苓。ィ騾溷コヲテ励%縺ョ繧ソ繧ー縺ョ time 螻樊ァ縺ァ謖螳壹@縺滓凾髢灘謠コ繧後′邯壹″縺セ縺吶
+
+ + timemode + time螻樊ァ縺ョ蜊倅ス + no + "ms" 縺セ縺溘ッ "delay" + 縲time 螻樊ァ縺ョ蜊倅ス阪r謖螳壹@縺セ縺吶
縲縺薙%縺ョ險ュ螳壹ョ繝繝輔か繝ォ繝医ッ Config.tjs 縺ョ defaultQuakeTimeInChUnit 縺ォ縲蠕薙>縺セ縺吶
+
+ + hmax + 讓ェ謠コ繧梧怙螟ァ謖ッ蟷 + no + pixel 蜊倅ス + 縲謠コ繧後ョ讓ェ譁ケ蜷代∈縺ョ譛螟ァ謖ッ蟷繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 10 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶 + + + vmax + 邵ヲ謠コ繧梧怙螟ァ謖ッ蟷 + no + pixel 蜊倅ス + 縲謠コ繧後ョ邵ヲ譁ケ蜷代∈縺ョ譛螟ァ謖ッ蟷繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 10 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶 + +
+ + r + 謾ケ陦後☆繧 + 縲謾ケ陦後@縺セ縺吶
+ + eol + 陦梧忰縺ョ謾ケ陦後°縺ゥ縺縺 + no + true + Config.tjs 縺ョ ignoreCR 縺 false 縺ョ蝣エ蜷医゜AG 縺ッ謾ケ陦後ョ髫帙↓ r繧ソ繧ー繧堤函謌舌@縺セ縺吶′縲√%縺ョ縲梧隼陦後ョ髫帙↓逕滓舌&繧後k r 繧ソ繧ー縲阪ョ蝣エ蜷医ッ縺薙ョ螻樊ァ縺後≠繧翫∝、縺 true 縺ォ縺ェ縺」縺ヲ縺縺セ縺吶ゅす繝翫Μ繧ェ荳ュ縺ォ譖ク縺九l縺歇r] 繧ソ繧ー縺ョ蝣エ蜷医ッ縺薙ョ螻樊ァ縺ッ縺ゅj縺セ縺帙s縲
縺薙ョ螻樊ァ縺ッTJS繧ケ繧ッ繝ェ繝励ヨ蜀驛ィ縺ァ謾ケ陦後→[r]繧ソ繧ー繧貞玄蛻・縺励◆縺蝣エ蜷医↓菴ソ逕ィ縺輔l縺セ縺吶ョ縺ァ縲゜AG繧キ繝翫Μ繧ェ荳翫〒縺薙ョ螻樊ァ繧呈欠螳壹☆繧区э蜻ウ縺ッ縺ゅj縺セ縺帙s縲
+
+
+ + rclick + 蜿ウ繧ッ繝ェ繝繧ッ縺ョ險ュ螳 + 縲蜿ウ繧ッ繝ェ繝繧ッ繧縲√く繝シ繝懊シ繝峨°繧 ESC 繧ュ繝シ繧呈款縺励◆譎ゅョ蜍穂ス懊r險ュ螳壹@縺セ縺吶
縲縺縺壹l縺ョ螻樊ァ繧ゅ∫怐逡・縺吶l縺ー險ュ螳壹ッ螟画峩縺輔l縺セ縺帙s縲
縲縺薙l繧峨ョ讖溯ス縺ッ縲ーl] [p] 繧ソ繧ー縺ァ縺ョ繧ッ繝ェ繝繧ッ蠕縺。縲ーs] 繧ソ繧ー縺ァ縺ョ蛛懈ュ「譎ゅ↓縺ョ縺ソ逋コ蜍輔☆繧九%縺ィ縺後〒縺阪∪縺吶
+ @rclick call=true target="*rclick" name="蜿ウ繧ッ繝ェ繝繧ッ逕ィ繧オ繝悶Ν繝シ繝√Φ繧貞他縺カ(&S)" enabled=true

*rclick
@rclick jump=true target="*exit" name="謌サ繧(&S)" enabled=true
@current layer=message1
@layopt layer=message1 page=fore visible=true
@er
縺薙%縺ッ蜿ウ繧ッ繝ェ繝繧ッ繝ォ繝シ繝√Φ蜀縺ァ縺吶
@s
*exit
@layopt layer=message1 page=fore visible=false
@current layer=message0
@rclick call=true target="*rclick" name="蜿ウ繧ッ繝ェ繝繧ッ逕ィ繧オ繝悶Ν繝シ繝√Φ繧貞他縺カ(&S)" enabled=true
@return
+ + call + 繧オ繝悶Ν繝シ繝√Φ繧貞他縺ウ蜃コ縺吶° + no + true 縺セ縺溘ッ false + 縲true 繧定ィュ螳壹☆繧九→縲∝承繧ッ繝ェ繝繧ッ縺ァ storage 縺ィ target 螻樊ァ縺ァ謖螳壹@縺溘し繝悶Ν繝シ繝√Φ繧貞他縺ウ蜃コ縺吶h縺縺ォ縺ェ繧翫∪縺吶Kump 螻樊ァ縺ィ縺薙ョ螻樊ァ縺ョ荳。譁ケ縺ォ false 繧呈欠螳壹☆繧九→縲騾壼クク縺ョ 縲後Γ繝繧サ繝シ繧ク繧呈カ医☆縲阪ョ蜍穂ス懊↓縺ェ繧翫∪縺吶
縲縺薙ョ螻樊ァ縺ィ jump 螻樊ァ繧貞酔譎ゅ↓ true 縺ォ縺吶k莠九ッ縺ァ縺阪∪縺帙s縲
+
+ + jump + 謖螳壼エ謇縺ォ繧ク繝」繝ウ繝励☆繧九° + no + true 縺セ縺溘ッ false + 縲true 繧定ィュ螳壹☆繧九→縲∝承繧ッ繝ェ繝繧ッ縺ァ storage 縺ィ target 螻樊ァ縺ァ謖螳壹@縺溷エ謇縺ォ繧ク繝」繝ウ繝励☆繧九h縺縺ォ縺ェ繧翫∪縺吶Dall 螻樊ァ縺ィ縺薙ョ螻樊ァ縺ョ荳。譁ケ縺ォ false 繧呈欠螳壹☆繧九→縲騾壼クク縺ョ縲後Γ繝繧サ繝シ繧ク繧呈カ医☆縲阪ョ蜍穂ス懊↓縺ェ繧翫∪縺吶
縲縺薙ョ螻樊ァ縺ィ call 螻樊ァ繧貞酔譎ゅ↓ true 縺ォ縺吶k莠九ッ縺ァ縺阪∪縺帙s縲
+
+ + target + 繧オ繝悶Ν繝シ繝√Φ縺ョ蜻シ縺ウ蜃コ縺怜/繧ク繝」繝ウ繝怜 + no + 繝ゥ繝吶Ν + 縲call 螻樊ァ縺 jump 螻樊ァ縺ォ true 繧定ィュ螳壹@縺溷エ蜷医√◎縺ョ蜻シ縺ウ蜃コ縺怜/繧ク繝」繝ウ繝怜医ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ繧 target="" 縺ィ縺励◆蝣エ蜷医《torage 螻樊ァ縺ァ謖螳壹@縺溘ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後′蟋九∪繧翫∪縺吶
+
+ + storage + 繧オ繝悶Ν繝シ繝√Φ縺ョ蜻シ縺ウ蜃コ縺怜/繧ク繝」繝ウ繝怜医ヵ繧。繧、繝ォ + no + 繝輔ぃ繧、繝ォ + 縲call 螻樊ァ縺 jump 螻樊ァ縺ォ true 繧定ィュ螳壹@縺溷エ蜷医√◎縺ョ蜻シ縺ウ蜃コ縺怜/繧ク繝」繝ウ繝怜医ョ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶
縲縺薙ョ螻樊ァ繧 storage="" 縺ィ縺励◆蝣エ蜷医∝承繧ッ繝ェ繝繧ッ縺後&繧後◆譎らせ縺ァ縺ョ繝輔ぃ繧、繝ォ蜀縺ョ繝ゥ繝吶Ν縺梧、懃エ「縺輔l縺セ縺吶
+
+ + enabled + 蜿ウ繧ッ繝ェ繝繧ッ蜍穂ス懊r陦後≧縺 + no + true 縺セ縺溘ッ false + 縲true 繧定ィュ螳壹☆繧九→縲∝承繧ッ繝ェ繝繧ッ縺ォ繧医j繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺碁國縺輔l縺溘j縲∵欠螳壹ョ繝ォ繝シ繝√Φ縺悟他縺ウ蜃コ縺輔l縺溘j縲∵欠螳壼エ謇縺ォ繧ク繝」繝ウ繝励@縺溘j縺励∪縺吶
縲false 繧呈欠螳壹☆繧九→縲√%繧後i縺ョ蜍穂ス懊ッ陦後o繧後∪縺帙s縲
+
+ + name + 繝。繝九Η繝シ鬆逶ョ蜷 + no + 繝。繝九Η繝シ鬆逶ョ蜷阪∪縺溘ッ "default" + 縲繧キ繧ケ繝繝繝。繝九Η繝シ蜀縺ョ縲後Γ繝繧サ繝シ繧ク繧呈カ医☆縲阪ョ繝。繝九Η繝シ鬆逶ョ蜷阪r謖螳壹@縺セ縺吶
縲name=default 縺ィ縺吶k縺ィ縲√ョ繝輔か繝ォ繝医ョ縲後Γ繝繧サ繝シ繧ク繧呈カ医☆縲阪↓縺ェ繧翫∪縺吶
縲繝。繝九Η繝シ繝帙ャ繝医く繝シ ( 繝。繝九Η繝シ鬆逶ョ蜀縺ァ荳狗キ壹ョ縺、縺縺滓枚蟄 ) 繧呈欠螳壹☆繧九↓縺ッ縲& 縺ォ邯壹¢縺ヲ譁蟄励r謖螳壹@縺ヲ縺上□縺輔> ( 縺溘→縺医ー縲後Γ繝繧サ繝シ繧ク繧呈カ医☆(&S)縲 )縲
+
+
+ + record + 騾夐℃險倬鹸繧定。後≧ + 縲迴セ蝨ィ縺ョ菴咲スョ縺ァ騾夐℃險倬鹸繧定。後>縺セ縺吶
縲騾夐℃險倬鹸縺ォ縺ッ縲∫峩蜑阪↓縺ゅk縲梧槭r菫晏ュ伜庄閭ス縺ェ繝ゥ繝吶Ν縲阪ョ菴咲スョ縺瑚ィ倬鹸縺輔l縲∵綾繧九→縺阪ッ縺昴%縺ォ謌サ繧翫∪縺吶′縲√◎繧後′螳滄圀縺ォ騾夐℃險倬鹸縺ィ縺励※險倬鹸縺輔l繧九ち繧、繝溘Φ繧ー縺ッ縲√%縺ョ繧ソ繧ー繧定ィ倩ソー縺励◆谺。縺ョ縲梧槭r菫晏ュ伜庄閭ス縺ェ繝ゥ繝吶Ν縲阪r騾夐℃縺励◆縺ィ縺阪〒縺吶
+
+ + resetfont + 譁蟄怜ア樊ァ繧偵ョ繝輔か繝ォ繝医↓謌サ縺 + font 繧ソ繧ー縺ァ謖螳壹@縺滓枚蟄励ョ螻樊ァ繧偵ョ繝輔か繝ォ繝医↓謌サ縺励∪縺吶
縲譁蟄怜ア樊ァ縺ッ縲√Γ繝繧サ繝シ繧ク繝ャ繧、繝、縺斐→縺ォ蛟句挨縺ォ險ュ螳壹〒縺阪∪縺吶
+
+ + resetstyle + 繧ケ繧ソ繧、繝ォ繧偵ョ繝輔か繝ォ繝医↓謌サ縺 + style 繧ソ繧ー縺ァ謖螳壹@縺溯。後ョ繧ケ繧ソ繧、繝ォ繧偵☆縺ケ縺ヲ繝繝輔か繝ォ繝医ョ險ュ螳壹↓謌サ縺励∪縺吶 + + + resetwait + 繧ヲ繧ァ繧、繝医ョ蛻晄悄蛹 + wait 繧ソ繧ー縺ョ mode=until 縺ァ菴ソ逕ィ縺吶k譎る俣蜴溽せ繧定ィュ螳壹@縺セ縺吶
縲縺薙ョ繧ソ繧ー縺ィ wait 繧ソ繧ー縺ョ髢薙↓縺ッ譬槭r菫晏ュ伜庄閭ス縺ェ繝ゥ繝吶Ν繧呈嶌縺九↑縺縺ァ縺上□縺輔> ( 騾比クュ縺ァ譬槭r菫晏ュ倥@縺ヲ繧ゅ%縺ョ諠蝣ア縺セ縺ァ縺ッ菫晏ュ倥&繧後↑縺縺ョ縺ァ )縲
+ [resetwait]
[wait mode=until time=3000]
; 竊 resetwait 繧帝夐℃縺励◆譎る俣縺九i 3 遘堤オ碁℃縺吶k縺セ縺ァ蠕縺、
+
+ + resumebgm + BGM 貍泌・上ョ蜀埼幕 + pausebgm 繧ソ繧ー縺ァ荳譎ょ●豁「縺励◆ BGM 繧貞埼幕縺励∪縺吶 + + + resumevideo + 繝薙ョ繧ェ蜀咲函縺ョ蜀埼幕 + 繝薙ョ繧ェ縺ョ蜀咲函繧貞埼幕縺励∪縺吶
pausevideo縺ァ縺ョ荳譎ょ●豁「蠕後ッ縲〉esumevideo繧剃スソ逕ィ縺励※縲∝咲函繧貞埼幕縺励∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + return + 繧オ繝悶Ν繝シ繝√Φ縺九i謌サ繧 + 縲繧オ繝悶Ν繝シ繝√Φ縺九i蜻シ縺ウ蜃コ縺怜縺ォ謌サ繧翫∪縺吶
縲storage 縺ィ target 繧剃ク。譁ケ縺ィ繧ら怐逡・縺吶k縺ィ縲∝他縺ウ蜃コ縺怜縺ョ call 繧ソ繧ー縺ョ逶エ蠕後↓謌サ繧翫∪縺吶Ttorage 繧 target 繧呈欠螳壹☆繧後ー縲∽ササ諢上ョ蝣エ謇縺ォ謌サ繧九%縺ィ縺後〒縺阪∪縺吶
call 繧ソ繧ー縺ァ蜻シ縺ウ蜃コ縺輔l縺溘し繝悶Ν繝シ繝√Φ縺ッ縲√%縺ョ繧ソ繧ー縺ァ蜻シ縺ウ蜃コ縺怜縺ォ謌サ縺吶°縲∽ササ諢上ョ蝣エ謇縺ォ繧ゅ←縺吝ソ隕√′縺ゅj縺セ縺吶
+ + storage + 謌サ繧雁医ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + no + 繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜷 + 縲謌サ繧雁医ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ繧呈欠螳壹@縺セ縺吶Ttorage 螻樊ァ繧堤怐逡・縺励※縲》arget 螻樊ァ縺縺代′譖ク縺九l縺ヲ縺繧九→縲∫樟蝨ィ縺ョ繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ蜀縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + target + 謌サ繧雁医ョ繝ゥ繝吶Ν蜷 + no + 繝ゥ繝吶Ν蜷 + 縲謌サ繧雁医ョ繝ゥ繝吶Ν繧呈欠螳壹@縺セ縺吶
縲target 螻樊ァ繧堤怐逡・縺励※縲《torage 螻樊ァ縺縺代′縺九°繧後※縺繧九→縲√ヵ繧。繧、繝ォ縺ョ蜈磯ュ縺九i螳溯。後&繧後∪縺吶
+
+ + countpage + 縲瑚ェュ繧薙□縲阪→隕九↑縺吶° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲蜻シ縺ウ蜃コ縺怜縺ォ謌サ繧九→縺阪↓縲√%縺ョ return 繧ソ繧ー縺ョ縺ゅk蝣エ謇縺ョ繝ゥ繝吶Ν繧偵瑚ェュ繧薙□縲阪→縺ソ縺ェ縺吶°縺ゥ縺縺九r謖螳壹@縺セ縺吶
縲謌サ繧矩圀縺ォ縺昴ョ繝壹シ繧ク縺後瑚ェュ繧薙□縲阪%縺ィ縺ォ縺ェ縺」縺ヲ縺ッ蝗ー繧句エ蜷医↓ false 繧呈欠螳壹@縺セ縺吶
+
+
+ + rewindvideo + 繝薙ョ繧ェ縺ョ蟾サ縺肴綾縺 + 縲繝薙ョ繧ェ繧貞磯ュ縺セ縺ァ蟾サ縺肴綾縺励∪縺吶 + + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + ruby + 繝ォ繝捺欠螳 + 縲谺。縺ョ荳譁蟄励↓蟇セ縺吶k繝ォ繝薙r謖螳壹@縺セ縺吶
縲繝ォ繝薙r陦ィ遉コ縺輔○縺溘>蝣エ蜷医ッ豈主屓謖螳壹@縺ヲ縺上□縺輔>縲
縲隍謨ー縺ョ譁蟄励↓繝ォ繝薙r謖ッ繧句エ蜷医ッ縲∽ク譁蟄玲ッ弱↓繝ォ繝薙r謖螳壹☆繧句ソ隕√′縺ゅj縺セ縺吶
+ 縲[ruby text="縺九s"]貍「[ruby text="縺"]蟄 + + text + 繝ォ繝 + yes + 繝ォ繝薙→縺励※陦ィ遉コ縺輔l繧区枚蟄 + 繝ォ繝薙→縺励※陦ィ遉コ縺輔○繧区枚蟄励r謖螳壹@縺セ縺吶 + +
+ + s + 蛛懈ュ「縺吶k + 縲繧キ繝翫Μ繧ェ繝輔ぃ繧、繝ォ縺ョ螳溯。後r蛛懈ュ「縺励∪縺吶
link 繧ソ繧ー縺ァ驕ク謚櫁い蠕縺。繧偵☆繧九→縺阪↓縲√%縺ョ繧ソ繧ー繧呈嶌縺阪∪縺吶
+
+ + save + 譬槭ョ菫晏ュ + 縲髱槭ヵ繝ェ繝シ繧サ繝シ繝悶Δ繝シ繝峨↓縺翫>縺ヲ縲∵欠螳壹&繧後◆譬槭↓菫晏ュ倥@縺セ縺吶ゅΓ繝九Η繝シ縺九i縲梧槭r縺ッ縺輔縲阪r驕ク謚槭&繧後◆蝣エ蜷医→蜷後§蜍穂ス懊r縺励∪縺吶 + + place + 菫晏ュ伜エ謇 + no + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー(0縺後ョ繝輔か繝ォ繝) + 縲譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
縲縺ゥ縺ョ繧医≧縺ェ謨ー蛟、繧呈欠螳壹@縺ヲ繧ゅ°縺セ縺縺セ縺帙s縺後999 縲 1999 縺ッ迚ケ蛻・縺ェ諢丞袖繧呈戟縺、譬槭〒縺吶
+
+ + ask + 遒コ隱阪r縺吶k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲∵槭r菫晏ュ倥☆繧九°縺ゥ縺縺九ョ遒コ隱阪r縺励∪縺吶Galse 繧呈欠螳壹☆繧九→譬槭r菫晏ュ倥☆繧九°縺ゥ縺縺九ョ遒コ隱阪ッ縺ゅj縺セ縺帙s縲ゅ%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ false 繧呈欠螳壹@縺溘→縺ソ縺ェ縺輔l縺セ縺吶
+
+
+ + seopt + 蜉ケ譫憺浹縺ョ險ュ螳 + 縲蜉ケ譫憺浹縺ョ蛟九縺ョ繝舌ャ繝輔ぃ縺ォ蟇セ縺吶k險ュ螳壹r螟画峩縺励∪縺吶
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲險ュ螳壹r螟画峩縺吶k繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + volume + 髻ウ驥 + no + 髻ウ驥% (0縲100) + 縲蜉ケ譫憺浹縺ョ髻ウ驥上r % 縺ァ謖螳壹@縺セ縺吶ょ晄悄迥カ諷九ョ KAG 縺ァ縺ッ100 % 縺ァ縺吶ら怐逡・縺吶l縺ー髻ウ驥上ッ螟画峩縺輔l縺セ縺帙s縲
縲100 縺御ク企剞縺ァ縺吶る浹驥上ョ謚大宛縺ョ縺ソ繧偵し繝昴シ繝医@縺セ縺(蠅怜ケ縺ッ髻ウ貅舌ョ迚ケ諤ァ荳翫√〒縺阪∪縺帙s)縲
+
+ + gvolume + 螟ァ蝓滄浹驥 + no + 髻ウ驥% (0縲100) + 縲蜉ケ譫憺浹縺ョ螟ァ蝓滄浹驥上r % 縺ァ謖螳壹@縺セ縺吶ょ晄悄迥カ諷九ョ KAG 縺ァ縺ッ100 % 縺ァ縺吶ら怐逡・縺吶l縺ー髻ウ驥上ッ螟画峩縺輔l縺セ縺帙s縲
縲螟ァ蝓滄浹驥上ッ volume 螻樊ァ縺ァ謖螳壹☆繧矩壼クク縺ョ髻ウ驥上→縺ッ蛻・縺ォ縲√ヰ繝繝輔ぃ縺ョ髻ウ驥上r蛻カ蠕。縺吶k縺薙→縺後〒縺阪k繧ゅ≧荳縺、縺ョ繧ゅョ縺ァ縺吶ょョ滄圀縺ォ蜀咲函縺輔l繧矩浹驥上ッ縲騾壼クク縺ョ髻ウ驥上→螟ァ蝓滄浹驥上r謗帙¢蜷医o縺帙◆髻ウ驥上↓縺ェ繧翫∪縺( 縺溘→縺医ー volume=50 縺ァ gvolume=75 縺ェ繧峨ー 50(%)*75(%)=37.5(%) )
縲螟ァ蝓滄浹驥上ッ蜉ケ譫憺浹繝舌ャ繝輔ぃ縺斐→縺ォ繧キ繧ケ繝繝螟画焚縺ォ險倬鹸縺輔l縲∵ャ。蝗櫁オキ蜍墓凾縺ォ繧ょシ輔″邯吶′繧後∪縺 ( 蜷譬槭↓菫晏ュ倥&繧後k繧上¢縺ァ縺ッ縺ゅj縺セ縺帙s )縲
+
+ + pan + 繝代Φ + no + 繝代Φ (-100縲0縲100) + 縲繝代Φ (蟾ヲ蜿ウ縺ョ髻ウ蜒丈ス咲スョ) 繧呈欠螳壹@縺セ縺吶
縲-100 縺悟ョ悟ィ縺ェ蟾ヲ縲0 縺御クュ螟ョ縲100 縺悟ョ悟ィ縺ェ蜿ウ縺ァ縺吶
+
+
+ + showhistory + 繝。繝繧サ繝シ繧ク螻・豁エ縺ョ陦ィ遉コ + 縲繝。繝繧サ繝シ繧ク螻・豁エ繧定。ィ遉コ縺励∪縺吶
縲繝。繝繧サ繝シ繧ク螻・豁エ縺ョ陦ィ遉コ繧堤オゆコ縺吶k縺ィ縲∝ョ溯。後ッ邯咏カ壹@縺セ縺吶
+
+ + startanchor + 縲梧怙蛻昴↓謌サ繧九阪ョ譛牙柑繝サ辟。蜉ケ + 縲Config.tjs 蜀縺ァ goToStartMenuItem.visible =true; 縺ィ險ュ螳壹☆繧九→縲√す繧ケ繝繝|譛蛻昴↓謌サ繧九Γ繝九Η繝シ縺瑚。ィ遉コ縺輔l縺セ縺吶′縲√◎繧後′驕ク謚槭&繧後◆蝣エ蜷医↓謌サ繧句エ謇繧偵%縺ョ繧ソ繧ー縺ァ謖螳壹@縺セ縺吶
縲謌サ繧句エ謇繧呈欠螳壹☆繧句エ蜷医ッ enabled 螻樊ァ繧堤怐逡・縺吶k縺 true 繧呈欠螳壹@縺セ縺吶′縲√%縺ョ繧ソ繧ー縺ッ繧サ繝シ繝門庄閭ス縺ェ繝ゥ繝吶Ν縺ョ逶エ蠕後↓譖ク縺縺ヲ縺上□縺輔>縲ゅ%縺ョ繝ゥ繝吶Ν繧帝夐℃縺励↑縺髢薙ッ縲√す繧ケ繝繝|譛蛻昴↓謌サ繧九ョ繝。繝九Η繝シ縺ッ菴ソ逕ィ荳榊庄閭ス縺ォ縺ェ繧翫∪縺吶
縲enabled 螻樊ァ縺ォ false 繧呈欠螳壹☆繧九→縲梧怙蛻昴↓謌サ繧九阪ョ讖溯ス縺ッ辟。蜉ケ縺ォ縺ェ繧翫∪縺吶
縲縲梧怙蛻昴↓謌サ繧九阪ョ蜍穂ス懊ッ縲√%縺ョ繧ソ繧ー縺ョ譖ク縺九l縺溷エ謇縺ョ繝ゥ繝吶Ν縺ョ譬槭r隱ュ縺ソ蜃コ縺吝虚菴懊↓莨シ縺ヲ縺縺セ縺吶′縲√ご繝シ繝螟画焚縺ョ蜀螳ケ縺ッ菫晄戟縺輔l縺溘∪縺セ縺ィ縺ェ繧翫∪縺吶
+ + enabled + 譛牙柑繝サ辟。蜉ケ縺ョ險ュ螳 + no + "true"(繝繝輔か繝ォ繝) 縺セ縺溘ッ "false" + 縲"true" 繧呈欠螳壹☆繧九°縺薙ョ螻樊ァ繧堤怐逡・縺吶k縺ィ縲√%縺ョ繧ソ繧ー縺ョ縺ゅk縺吶$蜑阪ョ繧サ繝シ繝門庄閭ス縺ェ繝ゥ繝吶Ν縺後梧怙蛻昴↓謌サ繧九阪ョ謌サ繧雁医〒縺ゅk縺ィ縺輔l縲√梧怙蛻昴↓謌サ繧九阪ョ讖溯ス縺梧怏蜉ケ縺ォ縺ェ繧翫∪縺吶
縲"false" 繧呈欠螳壹☆繧九→縲梧怙蛻昴↓謌サ繧九阪ョ讖溯ス縺檎┌蜉ケ縺ォ縺ェ繧翫∪縺吶
+
+
+ + stopbgm + BGM 貍泌・上ョ蛛懈ュ「 + 縲BGM 貍泌・上r蛛懈ュ「縺励∪縺吶 + + + stopmove + 繝ャ繧、繝、縺ョ閾ェ蜍慕ァサ蜍輔ョ蛛懈ュ「 + move 繧ソ繧ー縺ァ髢句ァ九@縺溯ェ蜍慕ァサ蜍輔r蠑キ蛻カ逧縺ォ荳ュ豁「縺励∪縺吶ゅ☆縺ケ縺ヲ縺ョ繝ャ繧、繝、縺ョ閾ェ蜍慕ァサ蜍輔′蛛懈ュ「縺励∪縺吶
縲逕サ蜒上ッ譛邨ゆス咲スョ縺ォ遘サ蜍輔@縲∵怙邨ゅョ陦ィ遉コ豼蠎ヲ縺ォ縺ェ繧翫∪縺吶
+
+ + stopquake + 逕サ髱「謠コ繧峨@縺ョ蛛懈ュ「 + quake繧ソ繧ー縺ァ髢句ァ九@縺滓昭繧後r邨ゆコ縺輔○縺セ縺吶
縲quake 繧ソ繧ー縺ョ time 螻樊ァ縺ァ謖螳壹@縺溷屓謨ー繧貞セ縺溘★縺ォ謠コ繧後r邨ゆコ縺輔○繧九%縺ィ縺後〒縺阪∪縺吶
+
+ + stopse + 蜉ケ譫憺浹蜀咲函縺ョ蛛懈ュ「 + 縲蜉ケ譫憺浹蜀咲函繧貞●豁「縺励∪縺吶 + + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜉ケ譫憺浹繧貞●豁「縺吶k繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+
+ + stoptrans + 繝ャ繧、繝、縺ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ蛛懈ュ「 + trans 繧ソ繧ー縺ァ髢句ァ九@縺溘ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ繧貞シキ蛻カ逧縺ォ荳ュ豁「縺励∪縺吶ゅ☆縺ケ縺ヲ縺ョ繝ャ繧、繝、縺ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺悟●豁「縺励∪縺吶
縲逕サ蜒上ッ螳悟ィ縺ォ蛻繧頑崛繧上▲縺溽憾諷九↓縺ェ繧翫∪縺吶
+
+ + stopvideo + 繝薙ョ繧ェ/SWF蜀咲函縺ョ蛛懈ュ「 + 縲繝薙ョ繧ェ/SWF縺ョ蜀咲函繧貞●豁「縺励∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+
+ + store + 譬樊ゥ溯ス縺ョ險ュ螳 + 縲譬樊ゥ溯ス繧呈怏蜉ケ縺ォ縺吶k縺九∫┌蜉ケ縺ォ縺吶k縺九r謖螳壹@縺セ縺吶ゅΘ繝シ繧カ繝シ縺ォ繧サ繝シ繝悶サ繝ュ繝シ繝峨ョ蜍穂ス懊r陦後o縺帙◆縺上↑縺蝣エ蜷医↓ [store enabled=false] 縺ィ縺励∪縺吶
disablestore 縺ョ讖溯ス縺ィ驕輔≧縺ョ縺ッ縲《tore 繧ソ繧ー縺ッ譬槭r縺ッ縺輔繝サ縺溘←繧九ョ荳。譁ケ縺ョ讖溯ス繧呈£荵逧縺ォ險ュ螳壹☆繧九ョ縺ォ蟇セ縺励‥isablestore 繧ソ繧ー縺ッ繧サ繝シ繝門庄閭ス縺ェ繝ゥ繝吶Ν繧帝夐℃縺吶k縺セ縺ァ縺ョ髢薙ョ荳譎ら噪縺ェ髢薙□縺代梧槭r縺ッ縺輔縲阪∪縺溘ッ縲後◆縺ゥ繧九阪ョ讖溯ス繧堤┌蜉ケ縺ォ縺吶k縺縺代〒縺吶ゆスソ縺蜍晄焔縺ッ disablestore 縺ョ譁ケ縺瑚憶縺縺ァ縺励g縺縲
+ + enabled + 譛牙柑繝サ辟。蜉ケ縺ョ險ュ螳 + yes + true 縺セ縺溘ッ false + 縲譬樊ゥ溯ス繧呈怏蜉ケ縺ォ縺吶k蝣エ蜷医ッ true 縲∫┌蜉ケ縺ォ縺吶k蝣エ蜷医ッ false 繧呈欠螳壹@縺セ縺吶Galse 繧呈欠螳壹☆繧九→譬槭↓繧医k繧サ繝シ繝悶サ繝ュ繝シ繝峨′縺ァ縺阪↑縺上↑繧翫∪縺吶 + +
+ + style + 繧ケ繧ソ繧、繝ォ縺ョ險ュ螳 + 縲陦後ョ繧ケ繧ソ繧、繝ォ繧呈欠螳壹@縺セ縺吶
縲KAG 繝峨く繝・繝。繝ウ繝医ョ縲梧枚蟄苓。ィ遉コ縺ョ隧ウ邏ー縲阪b蜿らァ縺励※縺上□縺輔>縲ゅ縺薙l繧峨ョ螻樊ァ縺ッ縲resetstyle 繧ソ繧ー繧 ct 繧ソ繧ー縺悟ョ溯。後&繧後k縺ィ縲√ョ繝輔か繝ォ繝医ョ蛟、縺ォ謌サ繧翫∪縺吶
縲陦後ョ繧ケ繧ソ繧、繝ォ縺ッ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺斐→縺ォ蛟句挨縺ォ險ュ螳壹〒縺阪∪縺吶
+ + align + 譁蟄玲純縺 + no + "left"/"top" 縺セ縺溘ッ "center" 縺セ縺溘ッ "right"/"bottom" 縺セ縺溘ッ "default" + 縲陦後ョ譁蟄玲純縺医r謖螳壹@縺セ縺吶
縲讓ェ譖ク縺阪ョ蝣エ蜷医"left" 繧呈欠螳壹☆繧九→蟾ヲ謠縺(繝繝輔か繝ォ繝)縲"center" 繧呈欠螳壹☆繧九→繧サ繝ウ繧ソ繝ェ繝ウ繧ー縲"right" 繧呈欠螳壹☆繧九→蜿ウ謠縺医↓縺ェ繧翫∪縺吶"default" 繧呈欠螳壹☆繧九→蟾ヲ謠縺医↓縺ェ繧翫∪縺吶
縲邵ヲ譖ク縺阪ョ蝣エ蜷医"top" 繧呈欠螳壹☆繧九→荳願ゥー繧(繝繝輔か繝ォ繝)縲"center" 繧呈欠螳壹☆繧九→繧サ繝ウ繧ソ繝ェ繝ウ繧ー縲"bottom" 繧呈欠螳壹☆繧九→荳玖ゥー繧√↓縺ェ繧翫∪縺吶"default" 繧呈欠螳壹☆繧九→荳願ゥー繧√↓縺ェ繧翫∪縺吶
+
+ + linespacing + 陦碁俣 + no + 陦碁俣 (pixel蜊倅ス) + 縲陦碁俣繧 pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶ゆク陦悟ィ菴薙ョ蟷縺ッ縲√%縺ョ螻樊ァ縺ァ謖螳壹@縺溷、縺ィ linesize 螻樊ァ縺ァ謖螳壹@縺溷、繧定カウ縺励◆蛟、縺ォ縺ェ繧翫∪縺吶 + + + pitch + 蟄鈴俣 + no + 蟄鈴俣繧ェ繝輔そ繝繝(pixel蜊倅ス) + 縲蟄鈴俣縺ョ繧ェ繝輔そ繝繝医r pixel 蜊倅ス阪〒謖螳壹@縺セ縺吶ゅ0 繧呈欠螳壹☆繧九→縲√◎縺ョ譁蟄励ョ繝繝輔か繝ォ繝医ョ蟄鈴俣縺ァ陦ィ遉コ縺輔l縺セ縺吶りイ縺ョ謨ー縲√◆縺ィ縺医ー -1 繧呈欠螳壹☆繧九→縲√◎縺ョ譁蟄励ョ繝繝輔か繝ォ繝医ョ蟄鈴俣 -1 縺ョ繝斐け繧サ繝ォ謨ー蛻縲∵枚蟄励′隧ー繧√※陦ィ遉コ縺輔l縺セ縺吶よュ」縺ョ謨ー繧定。ィ遉コ縺吶k縺ィ蟄鈴俣繧偵≠縺代k縺薙→縺悟コ譚・縺セ縺吶 + + + linesize + 譁蟄励し繧、繧コ縺ョ莠育エ繧オ繧、繧コ + no + 莠育エ繧オ繧、繧コ(pixel蜊倅ス) 縺セ縺溘ッ "default" + 縲陦後ョ蟷繧呈欠螳壹@縺セ縺吶
縲"default" 繧呈欠螳壹☆繧九→陦後ョ蟷縺ッ閾ェ蜍慕噪縺ォ豎コ螳壹&繧後∪縺吶′縲騾比クュ縺ァ譁蟄励′螟ァ縺阪¥縺ェ繧九→縲√◎縺ョ螟ァ縺阪>譁蟄励↓蜷医o縺帙※譁蟄励ョ蜀埼咲スョ縺瑚。後o繧後∪縺吶
縲蜀埼咲スョ繧帝亟縺舌↓縺ッ縲√≠繧峨°縺倥a縺薙ョ螻樊ァ縺ァ縲∵枚蟄励ョ譛螟ァ縺ョ螟ァ縺阪&繧呈欠螳壹@縺ヲ縺上□縺輔>縲
+
+ + autoreturn + 閾ェ蜍墓隼陦後サ謾ケ繝壹シ繧ク縺ョ險ュ螳 + no + "true" 縺セ縺溘ッ "false" 縺セ縺溘ッ "default" + 縲閾ェ蜍墓隼陦後サ閾ェ蜍墓隼繝壹シ繧ク繧定。後o縺帙k縺九←縺縺九r謖螳壹@縺セ縺吶
縲"true" 縺セ縺溘ッ "default" 繧呈欠螳壹☆繧九→閾ェ蜍墓隼陦後サ謾ケ繝壹シ繧ク繧定。後>縺セ縺吶
縲"false" 繧呈欠螳壹☆繧九→閾ェ蜍墓隼陦後サ謾ケ繝壹シ繧ク縺ッ陦後o繧後∪縺帙s縺ョ縺ァ縲∬。ィ遉コ縺吶k譁蟄励′髟キ縺吶℃縺ヲ繧ゅΓ繝繧サ繝シ繧ク繝ャ繧、繝、繧偵ッ縺ソ蜃コ縺励※謠冗判縺輔l縺セ縺吶
+
+
+ + tempload + 譬槭ョ繝。繝「繝ェ荳翫°繧峨ョ隱ュ縺ソ霎シ縺ソ + tempsave 繧ソ繧ー縺ァ菫晏ュ倥@縺溘Γ繝「繝ェ荳翫ョ縲梧槭阪r隱ュ縺ソ蜃コ縺励∪縺吶
縲縺溘□縲騾壼クク縺ョ譬槭ョ隱ュ縺ソ蜃コ縺励→驕輔≧縺ョ縺ッ縲∽ソ晏ュ倥@縺滉ス咲スョ縺ォ螳溯。後′遘サ蜍輔@縺ェ縺縺ァ縲√◎縺ョ縺セ縺セ螳溯。後′邯夊。後☆繧九→縺薙m縺ィ縲∝、画焚縺ョ蜀螳ケ縺ッ螟牙喧縺励↑縺縺薙→縺ァ縺吶
縲繝。繝繧サ繝シ繧ク繝ャ繧、繝、繧よカ亥悉縺輔l縺セ縺帙s縲ゅ∪縺溘《e縲|gm縲|acklay 螻樊ァ縺ォ繧医j縲√Ο繝シ繝画凾縺ョ謖吝虚繧貞宛蠕。縺吶k縺薙→縺後〒縺阪∪縺吶
縲荳サ縺ェ逕ィ騾斐ッ縲√◆縺ィ縺医ー繝繝「繧キ繝シ繝ウ縺ェ縺ゥ縺ォ蜈・繧九∪縺医↓縺縺」縺溘s tempsave 繧ソ繧ー縺ァ迥カ諷九r菫晏ュ倥@縲√ョ繝「繧キ繝シ繝ウ縺檎オゅo縺」縺溘→縺薙m縺ァ縺薙ョ繧ソ繧ー縺ァ蠕ゥ蟶ー縺吶k縺ィ縺縺繧医≧縺ォ縲√>縺。縺縺。縺吶∋縺ヲ縺ョ險ュ螳壹r蜈縺ォ謌サ縺吶ョ縺碁擇蛟偵↑縺ィ縺阪↓縲∽ク豌励↓險ュ螳壹r蜈縺ォ謌サ縺咏畑騾斐〒菴ソ縺縺セ縺吶
縲rclick 縺ァ謖螳壹@縺溷承繧ッ繝ェ繝繧ッ譎ゅョ繧オ繝悶Ν繝シ繝√Φ縺ァ荳譎ら噪縺ォ諠蝣ア繧剃ソ晏ュ倥☆繧九ョ縺ォ繧ゆスソ縺縺薙→縺後〒縺阪∪縺吶
+ + place + 菫晏ュ伜エ謇 + no + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー(0縺後ョ繝輔か繝ォ繝) + 縲譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
+
+ + se + 蜉ケ譫憺浹繧定ェュ縺ソ霎シ繧縺 + no + true (繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲隱ュ縺ソ霎シ繧縺ィ縺阪↓縲∝柑譫憺浹縺ョ諠蝣ア繧りェュ縺ソ霎シ繧縺九r謖螳壹@縺セ縺吶
縲false 繧呈欠螳壹☆繧九→蜉ケ譫憺浹縺ョ諠蝣ア縺ッ隱ュ縺ソ霎シ縺ソ縺セ縺帙s ( 迴セ蝨ィ縺ョ蜉ケ譫憺浹縺後◎縺ョ縺セ縺セ魑エ繧顔カ壹¢縺セ縺 )縲
+
+ + bgm + BGM 繧定ェュ縺ソ霎シ繧縺 + no + true (繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲隱ュ縺ソ霎シ繧縺ィ縺阪↓縲。GM 縺ョ諠蝣ア繧りェュ縺ソ霎シ繧縺九r謖螳壹@縺セ縺吶
縲false 繧呈欠螳壹☆繧九→ BGM 縺ョ諠蝣ア縺ッ隱ュ縺ソ霎シ縺ソ縺セ縺帙s ( 迴セ蝨ィ縺ョ BGM 縺後◎縺ョ縺セ縺セ貍泌・上&繧檎カ壹¢縺セ縺 )縲
+
+ + backlay + 陦ィ繝壹シ繧ク繧定」上壹シ繧ク縺ォ隱ュ縺ソ霎シ繧縺 + no + true 縺セ縺溘ッ false (繝繝輔か繝ォ繝) + 縲隱ュ縺ソ霎シ繧縺ィ縺阪↓縲∝燕譎ッ繝ャ繧、繝、縺ョ諠蝣ア縺ッ隱ュ縺ソ霎シ縺セ縺壹↓縲√°縺、閭梧勹繝ャ繧、繝、縺ォ縺ッ蜑肴勹繝ャ繧、繝、縺ョ諠蝣ア繧定ェュ縺ソ霎シ繧縺九←縺縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→縲√Γ繝「繝ェ荳翫ョ縲梧槭阪〒縺ッ陦ィ繝壹シ繧ク縺ィ縺励※險倬鹸縺輔l縺ヲ縺繧区ュ蝣ア縺後∝ョ滄圀縺ォ縺ッ陬上壹シ繧ク縺ォ隱ュ縺ソ霎シ縺セ繧後∬。ィ繝壹シ繧ク縺ッ縺昴ョ縺セ縺セ縺ォ縺ェ繧翫∪縺吶
+
+
+ + tempsave + 譬槭ョ繝。繝「繝ェ荳翫∈縺ョ菫晏ュ + 縲繝。繝「繝ェ荳翫ョ縲梧槭阪↓迴セ蝨ィ縺ョ菴咲スョ縺ァ縺ョ諠蝣ア繧呈検縺ソ縺セ縺吶ゅ%縺薙〒菫晏ュ倥&繧後k縺ョ縺ッ繝輔ぃ繧、繝ォ縺ァ縺ッ縺ェ縺上Γ繝「繝ェ荳翫ョ譬槭〒縺吶ョ縺ァ縲゜AG 縺檎オゆコ縺励※繧ょ螳ケ縺ッ菫晄戟縺輔l縺セ縺帙s縺励騾壼クク縺ョ縲梧槭阪→縺ッ縺ェ繧薙ョ髢「菫ゅb謖√■縺セ縺帙s縲
縲縺セ縺溘∵怙蠕後↓騾夐℃縺励◆繝ゥ繝吶Ν菴咲スョ縺ァ縺ョ迥カ諷九′菫晏ュ倥&繧後k縺ョ縺ァ縺ッ縺ェ縺上※縲√%縺ョ繧ソ繧ー縺ョ縺ゅk菴咲スョ縺ァ縺ョ諠蝣ア縺瑚ィ倬鹸縺輔l縺セ縺吶ゅ∪縺溘∝、画焚縺ョ蜀螳ケ縺ッ險倬鹸縺輔l縺セ縺帙s縲
tempload 繧ソ繧ー縺ィ邨縺ソ蜷医o縺帙※菴ソ縺縺セ縺吶
+ + place + 菫晏ュ伜エ謇 + no + 0縺セ縺溘ッ豁」縺ョ謨エ謨ー(0縺後ョ繝輔か繝ォ繝) + 縲譬槭ョ逡ェ蜿キ繧呈欠螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
縲謖螳壹〒縺阪k謨ー蛟、繧菫晏ュ倡ョ謇縺ョ蛟区焚縺ォ蛻カ髯舌ッ縺ゅj縺セ縺帙s縺後√≠縺セ繧雁、ァ縺阪↑謨エ謨ー縺ッ謖螳壹@縺ェ縺縺ァ縺上□縺輔>縲
+
+
+ + title + 繧ソ繧、繝医Ν謖螳 + 縲繧ソ繧ケ繧ッ繝舌シ縲√♀繧医ウ繧ヲ繧」繝ウ繝峨え繧ュ繝」繝励す繝ァ繝ウ ( 繧ソ繧、繝医Ν繝舌シ ) 縺ォ陦ィ遉コ縺吶k譁蟄励r謖螳壹@縺セ縺吶
縲騾壼クク縺ッ繧イ繝シ繝遲峨ョ繧ソ繧、繝医Ν縺ァ縺吶
+ + name + 繧ソ繧、繝医Ν + yes + 繧ソ繧、繝医Ν + 縲陦ィ遉コ縺励◆縺繧ソ繧、繝医Ν繧呈欠螳壹@縺ヲ縺上□縺輔>縲 + +
+ + trace + 繧ウ繝ウ繧ス繝シ繝ォ縺ク蛟、縺ョ蜃コ蜉 + 縲exp 縺ァ遉コ縺輔l縺溷シ上r隧穂セ。縺励∫オ先棡繧偵さ繝ウ繧ス繝シ繝ォ縺ォ蜃コ蜉帙@縺セ縺吶
縲繧ウ繝ウ繧ス繝シ繝ォ縺ッ Shift+F4 縺ァ陦ィ遉コ縺輔l繧九⊇縺九,onfig.tjs 蜀縺ァ logMode 繧定ィュ螳壹☆繧九%縺ィ縺ォ繧医j縲√ヵ繧。繧、繝ォ縺ォ險倬鹸縺吶k縺薙→繧ゅ〒縺阪∪縺吶
+ [trace exp="f.test"]
; 竊 繧イ繝シ繝螟画焚 test 縺ョ蜀螳ケ繧 繧ウ繝ウ繧ス繝シ繝ォ 縺ォ蜃コ蜉帙☆繧
; 繧ウ繝ウ繧ス繝シ繝ォ縺ォ縺ッ莉・荳九ョ繧医≧縺ォ陦ィ遉コ縺輔l繧 ( 萓 )
; 6:45:34 笆シ[trace] expression="f.test" type of result=Number result=500
+ + exp + TJS 蠑 + yes + TJS 蠑 + 縲隧穂セ。縺吶k TJS 蠑上r謖螳壹@縺セ縺吶 + +
+ + trans + 繝ャ繧、繝、縺ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ + 縲謖螳壹@縺溘Ξ繧、繝、縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後>縺セ縺吶
縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ッ縲∝クク縺ォ陬上壹シ繧ク縺ョ蟇セ雎。縺ョ繝ャ繧、繝、縺後∬。ィ繝壹シ繧ク縺ョ蟇セ雎。縺ョ繝ャ繧、繝、縺ォ蜈・繧梧崛繧上k譁ケ蜷代〒陦後o繧後∪縺吶
縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ蠕後ッ縲∬。ィ繝壹シ繧ク縺ョ蟇セ雎。縺ョ繝ャ繧、繝、縺ョ逕サ蜒上∽ス咲スョ縲√し繧、繧コ縲∝庄隕悶サ荳榊庄隕悶ョ迥カ諷九ッ陬上壹シ繧ク縺ョ蟇セ雎。縺ョ繝ャ繧、繝、縺ィ蜷後§縺ォ縺ェ繧翫∪縺吶
縲荳闊ャ逧縺ォ method=universal 縺ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ッ縲backlay 繧ソ繧ー縺ァ陦ィ繝壹シ繧ク縺ョ諠蝣ア繧定」冗判髱「縺ォ繧ウ繝斐シ縺励∬」上壹シ繧ク縺ォ蟇セ縺励※ imagelayopt 繧ソ繧ー縺ァ繝ャ繧、繝、繧呈桃菴懊@縲√%縺ョ trans 繧ソ繧ー繧 layer=base children=true 縺ァ菴ソ逕ィ縺励wt 繧ソ繧ー縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺吶
macro 繧ソ繧ー縺ァ縺薙ョ荳騾」縺ョ謫堺ス懊r繝槭け繝ュ蛹悶@縺ヲ縺翫¥縺ィ萓ソ蛻ゥ縺九b縺励l縺セ縺帙s縲
縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ荳ュ縺ッ縲∵枚蟄苓。ィ遉コ縺後〒縺阪↑縺九▲縺溘j縲驕縺上↑縺」縺溘j縺励∪縺吶ゅ∪縺溘∝渕譛ャ逧縺ォ迥カ諷九ッ縲御ク榊ョ壹阪↑縺ョ縺ァ縲∽ス咲スョ遘サ蜍輔d陦ィ遉コ繝サ髱櫁。ィ遉コ縺ョ螟画峩縺ッ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺」縺ヲ縺九i縺ォ縺励※縺上□縺輔>縲
縲騾壼クク縺ッ閭梧勹繝ャ繧、繝、縺ォ蟇セ縺励※繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後o縺帙∪縺吶′縲∫音谿翫↑逕ィ騾斐↓菴ソ逕ィ縺吶k逶ョ逧縺ァ蜑肴勹繝ャ繧、繝、繧繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ蟇セ縺励※蛟句挨縺ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後o縺帙k縺薙→縺後〒縺阪∪縺吶ゅ@縺九@縲√瑚」上壹シ繧ク繝サ髱「逕サ髱「縺ョ縺昴ョ繝ャ繧、繝、縺ョ繧オ繧、繧コ縺ッ蜷御ク縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺縲阪→縺縺蛻カ髯舌′縺ゅj縺セ縺吶
縲譛ャ蠖薙↓迚ケ谿翫↑逕ィ騾 ( 荳讎ゅ↓險縺医∪縺帙s縺 ) 縺ォ逕ィ縺繧倶サ・螟悶ッ縲〕ayer 縺ォ縺ッ base繧呈欠螳壹@縺ヲ縺上□縺輔>縲

縲縺薙ョ繧ソ繧ー縺ッ縲√ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺帙s縲ゅヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺、縺ォ縺ッ wt 繧ソ繧ー繧剃スソ逕ィ縺励※縺上□縺輔>縲
+ [backlay]
[image storage=fg0 layer=0 page=back]
[trans method=universal time=1500 rule=trans0 vague=64]
[wt]
+ + layer + 蟇セ雎。繝ャ繧、繝、 + no + "base"(繝繝輔か繝ォ繝) 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー 縺セ縺溘ッ縺ッ message0 縺セ縺溘ッ message1 縺セ縺溘ッ message + 縲蟇セ雎。縺ィ縺ェ繧九Ξ繧、繝、繧呈欠螳壹@縺セ縺吶
縲base 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、 縺ォ縺ェ繧翫∪縺吶
縲0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→蜑肴勹繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶
縲message0 縺セ縺溘ッ message1 繧呈欠螳壹☆繧九→繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ォ縺ェ繧翫∪縺吶ょ腰縺ォ message 縺ィ縺ョ縺ソ謖螳壹@縺溷エ蜷医ッ縲current 繧ソ繧ー縺ァ謖螳壹@縺溽樟蝨ィ縺ョ謫堺ス懷ッセ雎。縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟ッセ雎。縺ォ縺ェ繧翫∪縺 ( 陬上壹シ繧ク繝サ陦ィ繝壹シ繧ク縺ョ縺ゥ縺。繧峨ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺梧桃菴懷ッセ雎。縺ァ縺ゅ▲縺ヲ繧り」上壹シ繧ク竊定。ィ繝壹シ繧ク縺ク縺ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺瑚。後o繧後∪縺 )縲
縲騾壼クク縺ッ base 縺ォ蟇セ縺励※繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後o縺帙∪縺吶
縲base 莉・螟悶↓蟇セ縺励※繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後o縺帙k蝣エ蜷医ッ縺九↑繧翫ョ蛻カ髯舌′縺ゅj縺セ縺吶
+
+ + children + 蟄舌Ξ繧、繝、繧ょ性繧√k縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ蟇セ雎。縺ォ蟄舌Ξ繧、繝、繧ょ性繧√k縺九←縺縺九r謖螳壹@縺セ縺吶Urue 繧呈欠螳壹☆繧九→蟄舌Ξ繧、繝、繧ょ性繧√∪縺吶Galse 繧呈欠螳壹☆繧九→蟄舌Ξ繧、繝、縺ッ蜷ォ縺セ繧後∪縺帙s縲
縲layer=base 縺ィ謖螳壹@縺溘→縺阪ョ縺ソ菴ソ逕ィ縺ァ縺阪∪縺吶
縲蟄舌Ξ繧、繝、縺ォ縺ッ縲∝燕譎ッ繝ャ繧、繝、縺ィ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺悟性縺セ繧後∪縺吶
+
+ + time + 繝医Λ繝ウ繧ク繧キ繝ァ繝ウ譎る俣 + yes + 譎る俣(ms蜊倅ス) + 縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ繧定。後▲縺ヲ縺繧区凾髢薙r謨ー蛟、縺ァ謖螳壹@縺セ縺吶 + + + method + 繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ繧ソ繧、繝 + no + "universal" (繝繝輔か繝ォ繝) 縺セ縺溘ッ "scroll" 縺セ縺溘ッ縺昴ョ莉 + 縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ繧ソ繧、繝励r謖螳壹@縺セ縺吶
"universal" 繧呈欠螳壹☆繧九→縲 rule, vague, time 螻樊ァ縺ォ蠕薙▲縺ヲ繝ヲ繝九ヰ繝シ繧オ繝ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺瑚。後o繧後∪縺吶
"crossfade" 繧呈欠螳壹☆繧九→縲》ime 螻樊ァ縺ォ蠕薙▲縺ヲ縲∝腰邏斐↑繧ッ繝ュ繧ケ繝輔ぉ繝シ繝峨′陦後o繧後∪縺吶
"scroll" 繧呈欠螳壹☆繧九→縲’rom, stay 繧貞縺ォ縺励※繧ケ繧ッ繝ュ繝シ繝ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺瑚。後o繧後∪縺吶
縲繝励Λ繧ー繧、繝ウ縺ォ繧医▲縺ヲ菴ソ逕ィ蜿ッ閭ス縺ォ縺ェ繧九ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ縺ョ繧ソ繧、繝励b縺ゅj縺セ縺吶ゅ◎縺ョ蝣エ蜷医ッ method 螻樊ァ縺ォ縺ッ縺昴ョ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ蜷榊燕繧呈欠螳壹@縲√∪縺溘√ヨ繝ゥ繝ウ繧ク繧キ繝ァ繝ウ縺ォ繧医▲縺ヲ縺ッ蛻・縺ョ螻樊ァ繧呈欠螳壹@縺ェ縺代l縺ー縺ェ繧峨↑縺蝣エ蜷医′縺ゅj縺セ縺吶
+
+ + rule + 繝ォ繝シ繝ォ逕サ蜒 + method=universal 縺ョ縺ィ縺阪ョ縺ソ + 繝ォ繝シ繝ォ逕サ蜒丞錐 + 縲繝ヲ繝九ヰ繝シ繧オ繝ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ォ逕ィ縺繧九Ν繝シ繝ォ逕サ蜒上r謖螳壹@縺セ縺吶 + + + vague + 縺ゅ>縺セ縺鬆伜沺蛟、 + method=universal 縺ョ縺ィ縺阪ョ縺ソ + 縺ゅ>縺セ縺鬆伜沺蛟、 (0縲) + 縲繝ヲ繝九ヰ繝シ繧オ繝ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ォ驕ゥ逕ィ縺吶k 縺ゅ>縺セ縺鬆伜沺蛟、繧呈欠螳壹@縺セ縺吶 + + + from + 繧ケ繧ッ繝ュ繝シ繝ォ縺輔l繧区婿蜷 + method=scroll 縺ョ縺ィ縺阪ョ縺ソ + "left" 縺セ縺溘ッ "top" 縺セ縺溘ッ "right" 縺セ縺溘ッ "bottom" + 縲繧ケ繧ッ繝ュ繝シ繝ォ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ォ縺翫>縺ヲ縲∬」上壹シ繧ク縺ョ逕サ蜒上′縺ゥ縺ョ譁ケ蜷代°繧臥樟繧後※縺上k縺九r謖螳壹@縺セ縺吶"left" = 蟾ヲ縲"top"= 荳翫"right" = 蜿ウ縲"bottom" = 荳 + + + stay + 蜈逕サ蜒上′縺昴ョ蝣エ縺ォ螻蠎ァ繧九° + method=scroll 縺ョ縺ィ縺阪ョ縺ソ + "stayfore" 縺セ縺溘ッ "stayback" 縺セ縺溘ッ "nostay"(繝繝輔か繝ォ繝) + 縲繧ケ繧ッ繝ュ繝シ繝ォ繝医Λ繝ウ繧キ繧ク繝ァ繝ウ縺ォ縺翫>縺ヲ縲∬。ィ繝壹シ繧ク縺ョ逕サ蜒上′縺昴ョ蝣エ縺ォ縺ィ縺ゥ縺セ縺」縺溘∪縺セ縲∬」上壹シ繧ク縺ョ逕サ蜒上′螟夜Κ縺九i繧ケ繧ッ繝ュ繝シ繝ォ縺励※縺上k縺 ( "stayfore" )縲
縲陦ィ繝壹シ繧ク縺ョ逕サ蜒上′繧ケ繧ッ繝ュ繝シ繝ォ縺励※蜃コ縺ヲ縺縺剰」上°繧峨∬」上壹シ繧ク縺ョ逕サ蜒上′縺昴ョ蝣エ縺ォ縺ィ縺ゥ縺セ縺」縺溘∪縺セ迴セ繧後※縺上k縺( "stayback" )縲
縲縺セ縺溘ッ陦ィ繝壹シ繧ク縺ョ逕サ蜒上→陬上壹シ繧ク縺ョ逕サ蜒上′騾」邨舌&繧後※荳邱偵↓遘サ蜍輔@縺ェ縺後i蛻繧頑崛繧上▲縺ヲ縺縺上° ( "nostay" )縲√r謖螳壹@縺セ縺吶
+
+
+ + unlocklink + 繝ェ繝ウ繧ッ縺ョ繝ュ繝繧ッ縺ョ隗」髯、 + 縲縺吶∋縺ヲ縺ョ繝。繝繧サ繝シ繧ク繝ャ繧、繝、縺ョ繝ェ繝ウ繧ッ縺ョ繝ュ繝繧ッ繧定ァ」髯、縺励∪縺吶
縲繝ェ繝ウ繧ッ繧繝懊ち繝ウ縺ッ縲∽ク蝗樣∈謚槭&繧後k縺ィ縲∝阪ウ譁ー縺励>繝ェ繝ウ繧ッ繧繝懊ち繝ウ縺御ス懈舌&繧後k縺セ縺ァ驕ク謚樔ク崎ス縺ォ縺ェ繧翫∪縺 ( 繧ィ繝繧」繝繝医d繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ繧よ桃菴應ク崎ス縺ォ縺ェ繧翫∪縺 ) 縺後√◎繧後r蠑キ蛻カ逧縺ォ蜀阪ウ驕ク謚槫庄閭ス縺ォ縺吶k縺溘a縺ォ縺薙ョ繧ソ繧ー縺後≠繧翫∪縺吶
縲騾縺ョ蜍穂ス懊r縺吶k locklink 繧ソ繧ー繧ゅ≠繧翫∪縺吶
+
+ + unlocksnapshot + 繧ケ繝翫ャ繝励す繝ァ繝繝医ョ繝ュ繝繧ッ縺ョ隗」髯、 + locksnapshot 縺ァ繝ュ繝繧ッ縺励◆繧ケ繝翫ャ繝励す繝ァ繝繝医ョ繝ュ繝繧ッ繧定ァ」髯、縺励∪縺吶
+
+ + video + 繝薙ョ繧ェ/SWF陦ィ遉コ鬆伜沺縺ョ螻樊ァ繧呈欠螳 + 縲繝薙ョ繧ェ/SWF陦ィ遉コ鬆伜沺縺ョ螻樊ァ繧呈欠螳壹@縺セ縺吶
縲繝薙ョ繧ェ/SWF陦ィ遉コ鬆伜沺縺ッ繝繝輔か繝ォ繝医〒髱櫁。ィ遉コ縺ェ縺ョ縺ァ縲√%縺ョ繧ソ繧ー縺ァ陦ィ遉コ迥カ諷九↓縺励↑縺縺ィ陦ィ遉コ縺輔l縺セ縺帙s縲
縲繧ェ繝シ繝舌シ繝ャ繧、繝「繝シ繝峨〒陦ィ遉コ縺輔l繧矩伜沺縺ッ繝ャ繧、繝、縺ァ縺ッ縺ゅj縺セ縺帙s縲ゅ☆縺ケ縺ヲ縺ョ繝ャ繧、繝、繧医j繧よ焔蜑阪↓陦ィ遉コ縺輔l縺セ縺吶
縲迴セ繝舌シ繧ク繝ァ繝ウ縺ァ縺ッSWF縺ッ繝ャ繧、繝、謠冗判繝「繝シ繝峨↓繧医k蜀咲函縺ッ縺ァ縺阪∪縺帙s縲
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + visible + 蜿ッ隕悶サ荳榊庄隕 + no + true 縺セ縺溘ッ false + 縲繝薙ョ繧ェ/SWF 縺ョ陦ィ遉コ鬆伜沺繧定。ィ遉コ縺吶k縺 ( true 縺ョ蝣エ蜷 )縲髱櫁。ィ遉コ縺ォ縺吶k縺 ( false 縺ョ蝣エ蜷 ) 繧呈欠螳壹@縺セ縺吶 髱櫁。ィ遉コ縺ァ繧ゅン繝繧ェ/SWF縺ッ蜀咲函縺ァ縺阪∪縺 ( 蠖鍋┯陦ィ遉コ縺輔l縺セ縺帙s )縲
+
+ + left + 蟾ヲ遶ッ菴咲スョ + no + 蟾ヲ遶ッ菴咲スョ ( pixel 蜊倅ス ) + 縲陦ィ遉コ鬆伜沺縺ョ蟾ヲ遶ッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + top + 荳顔ォッ菴咲スョ + no + 荳顔ォッ菴咲スョ ( pixel 蜊倅ス ) + 縲陦ィ遉コ鬆伜沺縺ョ荳顔ォッ菴咲スョ繧呈欠螳壹@縺セ縺吶 + + + width + + no + 蟷 ( pixel 蜊倅ス ) + 縲陦ィ遉コ鬆伜沺縺ョ蟷繧呈欠螳壹@縺セ縺吶ら樟繝舌シ繧ク繝ァ繝ウ縺ァ縺ッ繝ャ繧、繝、謠冗判繝「繝シ繝峨〒縺ッ謖螳壹ッ辟。隕悶&繧後∪縺吶 + + + height + 鬮倥& + no + 鬮倥& ( pixel 蜊倅ス ) + 縲陦ィ遉コ鬆伜沺縺ョ鬮倥&繧呈欠螳壹@縺セ縺吶ら樟繝舌シ繧ク繝ァ繝ウ縺ァ縺ッ繝ャ繧、繝、謠冗判繝「繝シ繝峨〒縺ッ謖螳壹ッ辟。隕悶&繧後∪縺吶 + + + loop + 繝ォ繝シ繝励☆繧九°縺ゥ縺縺 + no + true 縺セ縺溘ッ false + 縲繝ォ繝シ繝励r陦後>縺溘>蝣エ蜷医ッ true 繧呈欠螳壹@縺セ縺吶 + + + position + 遘サ蜍募域凾髢 + no + 譎る俣 ( ms 蜊倅ス ) + 縲謖螳壹@縺滓凾髢薙∪縺ァ繝薙ョ繧ェ縺ョ蜀咲函菴咲スョ繧堤ァサ蜍輔@縺溘>蝣エ蜷医↓謖螳壹@縺セ縺吶 + + + frame + 遘サ蜍募医ヵ繝ャ繝シ繝 + no + 繝輔Ξ繝シ繝逡ェ蜿キ + 縲謖螳壹@縺滉ス咲スョ縺セ縺ァ繝薙ョ繧ェ縺ョ蜀咲函菴咲スョ繧堤ァサ蜍輔@縺溘>蝣エ蜷医↓謖螳壹@縺セ縺吶
縲position螻樊ァ縺ィ驕輔>縲√%縺ョ螻樊ァ縺ァ縺ッ繝輔Ξ繝シ繝蜊倅ス阪〒謖螳壹☆繧九%縺ィ縺後〒縺阪∪縺吶
+
+ + mode + 謠冗判繝「繝シ繝 + no + "overlay" 縺セ縺溘ッ "layer" + 縲繝繝シ繝薙シ縺ョ謠冗判繝「繝シ繝峨r謖螳壹@縺セ縺吶
縲"overlay" 繧呈欠螳壹☆繧九→繧ェ繝シ繝舌シ繝ャ繧、繝「繝シ繝峨〒蜀咲函縺ァ縺阪∪縺吶ゅが繝シ繝舌シ繝ャ繧、繝「繝シ繝峨〒縺ッ繝薙ョ繧ェ縺ッ莉悶ョ繝ャ繧、繝、繧医j螂・縺ォ縺ェ繧九%縺ィ縺ッ縺ァ縺阪∪縺帙s縺後∝咲函雋闕キ繧定サス縺上☆繧九%縺ィ縺後〒縺阪∪縺吶
縲"layer" 繧呈欠螳壹☆繧九→縲√Ξ繧、繝、謠冗判繝「繝シ繝峨〒蜀咲函縺ァ縺阪∪縺吶ゅΞ繧、繝、謠冗判繝「繝シ繝峨〒縺ッ縲√ン繝繧ェ縺ョ逕サ蜒上r繝ャ繧、繝、縺ォ陦ィ遉コ縺ァ縺阪∪縺吶′縲∝咲函雋闕キ縺ッ "overlay" 繧医j繧るォ倥¥縺ェ繧翫∪縺吶り。ィ遉コ縺吶k繝ャ繧、繝、縺ッ videolayer 繧ソ繧ー縺ァ險ュ螳壹@縺セ縺吶
+
+ + playrate + 蜀咲函騾溷コヲ + no + 蜀咲函騾溷コヲ(0.0繧医j螟ァ縺阪>蛟、) + 縲繝。繝繧」繧「縺ョ蜀咲函騾溷コヲ繧定ィュ螳壹@縺セ縺吶
縲險ュ螳壼庄閭ス蛟、縺ッDirectShow縺ョ繝輔ぅ繝ォ繧ソ縺ォ繧医▲縺ヲ豎コ縺セ繧翫∪縺吶
縲蜿り : 髻ウ螢ー莉倥ョMPEG繝輔ぃ繧、繝ォ縺ョ蝣エ蜷医0.0繧医j螟ァ縺阪>蛟、縺九i2.0縺セ縺ァ縺ョ蛟、縺瑚ィュ螳壼庄閭ス縺ァ縺吶る浹螢ー縺ェ縺励ョMPEG繝輔ぃ繧、繝ォ縺ョ蝣エ蜷医0.0繧医j螟ァ縺阪>蛟、縺九idouble縺ョ遽蝗イ蜀(縺溘カ繧)縺ァ險ュ螳壼庄閭ス縺ァ縺吶′縲∝ョ滄圀縺ョ蜀咲函騾溷コヲ縺ッ蜃ヲ逅騾溷コヲ縺ォ繧医▲縺ヲ荳企剞縺梧アコ縺セ繧翫∪縺吶
+
+ + volume + 髻ウ驥 + no + 髻ウ驥% (0縲100) + 縲髻ウ驥上r % 縺ァ謖螳壹@縺セ縺吶ゅ100 縺御ク企剞縺ァ縺吶る浹驥上ョ謚大宛縺ョ縺ソ繧偵し繝昴シ繝医@縺セ縺(蠅怜ケ縺ッ髻ウ貅舌ョ迚ケ諤ァ荳翫√〒縺阪∪縺帙s)縲 + + + pan + 髻ウ驥 + no + 繝代Φ (-100縲0縲100) + 縲繝代Φ (蟾ヲ蜿ウ縺ョ髻ウ蜒丈ス咲スョ) 繧呈欠螳壹@縺セ縺吶
縲-100 縺悟ョ悟ィ縺ェ蟾ヲ縲0 縺御クュ螟ョ縲100 縺悟ョ悟ィ縺ェ蜿ウ縺ァ縺吶
縲逵滉クュ縺ョ蛟、縺ッ 0 縺ァ縲√%繧後ッ荳。譁ケ縺ョ繝√Ε繝ウ繝阪Ν縺後ヵ繝ォ繝懊Μ繝・繝シ繝縺ァ縺ゅk縺薙→繧呈э蜻ウ縺励※縺縺セ縺吶
縲 荳譁ケ縺ョ繝√Ε繝ウ繝阪Ν縺梧ク幄。ー縺輔l縺ヲ繧ゅ√b縺荳譁ケ縺ョ繝√Ε繝ウ繝阪Ν縺ッ繝輔Ν 繝懊Μ繝・繝シ繝縺ョ縺セ縺セ縺ァ縺吶
+
+ + audiostreamnum + 髻ウ螢ー繧ケ繝医Μ繝シ繝逡ェ蜿キ + no + 髻ウ螢ー繧ケ繝医Μ繝シ繝逡ェ蜿キ(0縲) + 縲謖螳壹@縺滄浹螢ー繧ケ繝医Μ繝シ繝逡ェ蜿キ繧呈怏蜉ケ縺ォ縺励∪縺吶 + +
+ + videoevent + 繝斐Μ繧ェ繝峨う繝吶Φ繝医ョ逋コ逕 + 縲謖螳壹@縺溘ヵ繝ャ繝シ繝縺ァ繝斐Μ繧ェ繝峨う繝吶Φ繝医r逋コ逕溘&縺帙k縺薙→縺後〒縺阪∪縺吶
縲繝斐Μ繧ェ繝峨う繝吶Φ繝医ッ縲wp繧ソ繧ー縺ァ蠕縺、縺薙→縺後〒縺阪∪縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + frame + 繝輔Ξ繝シ繝逡ェ蜿キ + yes + 繝輔Ξ繝シ繝逡ェ蜿キ + 縲繝斐Μ繧ェ繝峨う繝吶Φ繝医r逋コ逕溘&縺帙k繝輔Ξ繝シ繝逡ェ蜿キ繧呈欠螳壹@縺セ縺吶 + +
+ + videolayer + 繝薙ョ繧ェ繝ャ繧、繝、險ュ螳 + 縲繝ャ繧、繝、繝シ謠冗判繝「繝シ繝画凾縺ォ縲√ン繝繧ェ縺ョ逕サ蜒上r陦ィ遉コ縺輔○縺溘>繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶ゅΞ繧、繝、繧オ繧、繧コ縺ッ縲√ン繝繧ェ縺ョ繧オ繧、繧コ縺ォ閾ェ蜍慕噪縺ォ螟画峩縺輔l縺セ縺吶
縲縺薙ョ險ュ螳壹r隗」髯、縺吶k縺ォ縺ッclearvideolayer繧ソ繧ー繧剃スソ縺縺セ縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + channel + 繝√Ε繝ウ繝阪Ν + yes + 1 縺セ縺溘ッ 2 + 縲繝ャ繧、繝、謠冗判繝「繝シ繝峨〒縺ッ縲∝酔譎ゅ↓莠後▽縺ョ繝√Ε繝ウ繝阪Ν縺ァ繝薙ョ繧ェ繧貞咲函縺ァ縺阪∪縺吶
縲slot螻樊ァ縺ッ縲∝酔譎ゅ↓逡ー縺ェ繧九ン繝繧ェ繧貞咲函縺励◆縺縺ィ縺阪ョ縺溘a縺ォ縺ゅj縲…hannel螻樊ァ縺ッ縲∝酔縺倥ン繝繧ェ繧抵シ偵▽縺ョ繝ャ繧、繝、(縺溘→縺医ー縲∬。ィ繝ャ繧、繝、縺ィ陬上Ξ繧、繝、) 縺ァ蜀咲函縺励◆縺縺ィ縺阪ョ縺溘a縺ォ縺ゅj縺セ縺吶
縲縺薙ョ螻樊ァ縺ァ縺ッ縲√◎縺ョ縺ゥ縺。繧峨ョ繝√Ε繝ウ繝阪Ν縺ォ蟇セ縺励※縺ョ繝ャ繧、繝、繧定ィュ螳壹☆繧九°繧呈欠螳壹@縺セ縺吶
+
+ + page + 繝壹シ繧ク + yes + "fore" 縺セ縺溘ッ "back" + 縲陦ィ繝壹シ繧ク("fore")縺九∬」上壹シ繧ク("back")縺九r謖螳壹@縺セ縺吶
+
+ + layer + 繝ャ繧、繝、 + yes + 繝ャ繧、繝、逡ェ蜿キ(0縲) + 縲陦ィ遉コ縺励◆縺繝ャ繧、繝、逡ェ蜿キ繧呈欠螳壹@縺セ縺吶 + +
+ + videosegloop + 繝薙ョ繧ェ縺ョ繧サ繧ー繝。繝ウ繝医Ν繝シ繝怜咲函 + 縲start 螻樊ァ縺ィ end 螻樊ァ縺ァ遉コ縺励◆蛹コ髢灘縺ァ繝ォ繝シ繝怜咲函繧定。後>縺セ縺吶
縺薙ョ繧ソ繧ー縺ッ繝ャ繧、繝、繝シ謠冗判繝「繝シ繝画凾縺ョ縺ソ譛牙柑縺ァ縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + start + 髢句ァ九ヵ繝ャ繝シ繝逡ェ蜿キ + yes + 繝輔Ξ繝シ繝逡ェ蜿キ + 縲繝ォ繝シ繝励ョ蟋狗せ繧呈欠螳壹@縺セ縺吶 + + + end + 邨ゆコ繝輔Ξ繝シ繝逡ェ蜿キ + yes + 繝輔Ξ繝シ繝逡ェ蜿キ + 縲繝ォ繝シ繝励ョ邨らせ繧呈欠螳壹@縺セ縺吶 + +
+ + wa + 繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ蛛懈ュ「蠕縺。 + 縲莉サ諢上ョ繧サ繧ー繝。繝ウ繝医ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ蛛懈ュ「繧貞セ縺。縺セ縺吶
縲繧「繝九Γ繝シ繧キ繝ァ繝ウ縺悟●豁「縺吶k縺溘a縺ォ縺ッ縲‖sd 繝輔ぃ繧、繝ォ荳翫〒 s 繧ソ繧ー縺 home 繧ソ繧ー繧帝夐℃縺吶k蠢隕√′縺ゅj縺セ縺吶
+ + layer + 蟇セ雎。繝ャ繧、繝、 + yes + "base" 縺セ縺溘ッ 0 莉・荳翫ョ謨エ謨ー + 縲繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ蛛懈ュ「繧貞セ縺、縺吶k繝ャ繧、繝、繧呈欠螳壹@縺セ縺吶
"base" 繧呈欠螳壹☆繧九→ 閭梧勹繝ャ繧、繝、縲 0 莉・荳翫ョ謨エ謨ー繧呈欠螳壹☆繧九→縲∝ッセ蠢懊☆繧句燕譎ッ繝ャ繧、繝、繧定。ィ縺励∪縺吶ゅ謖螳壹@縺溘Ξ繧、繝、縺ォ縺ッ縲√い繝九Γ繝シ繧キ繝ァ繝ウ諠蝣ア縺瑚ェュ縺ソ霎シ縺セ繧後※縺縺ェ縺縺ィ縺ェ繧翫∪縺帙s縲
+
+ + page + 繝壹シ繧ク + no + "back" 縺セ縺溘ッ "fore" + 縲陦ィ(fore)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九∬」(back)逕サ髱「繧貞ッセ雎。縺ィ縺吶k縺九r謖螳壹@縺セ縺吶ら怐逡・縺吶k縺ィ陦ィ繝壹シ繧ク縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶 + + + seg + 繧サ繧ー繝。繝ウ繝 + yes + 0 縺セ縺溘ッ豁」縺ョ謨エ謨ー + 縲縺薙ョ螻樊ァ縺ァ謖螳壹@縺溘そ繧ー繝。繝ウ繝育分蜿キ縺ョ繧「繝九Γ繝シ繧キ繝ァ繝ウ縺ョ蛛懈ュ「繧貞セ縺。縺セ縺吶
縲繧サ繧ー繝。繝ウ繝育分蜿キ 0 繧よ欠螳壹〒縺阪∪縺吶
+
+
+ + wait + 繧ヲ繧ァ繧、繝医r蜈・繧後k + 縲繧ヲ繧ァ繧、繝医r蜈・繧後∪縺吶
縲迴セ蝨ィ縺ョ譎る俣縺九i繧貞セ縺、 (mode="normal") 縺九√≠繧九>縺ッ resetwait繧ソ繧ー縺ァ謖螳壹@縺滓凾髢灘次轤ケ縺九i縺ョ譎る俣繧貞セ縺、 (mode="until") 縺薙→縺後〒縺阪∪縺吶
縲mode="until" 縺ョ蝣エ蜷医√☆縺ァ縺ォ謖螳壹@縺滓凾髢薙r驕弱℃縺ヲ縺縺溷エ蜷医ッ kag.lastWaitTime 縺ィ縺縺螟画焚縺ォ 0 縺悟・繧翫∪縺吶ゅ〒縺吶ョ縺ァ縲ーif exp="kag.lastWaitTime != 0"] 縺ョ繧医≧縺ォ縺励※蛻、譁ュ縺吶l縺ー縲√後∪縺謖螳壹@縺滓凾髢薙r驕弱℃縺ヲ縺縺ェ縺蝣エ蜷医(螟壹¥縺ョ蝣エ蜷医∝ヲ逅縺瑚ソス縺縺、縺縺ヲ縺繧句エ蜷)縺九←縺縺九r蛻、譁ュ縺ァ縺阪∪縺吶
+ + time + 譎る俣 + yes + 譎る俣(繝溘Μ遘) + 縲繧ヲ繧ァ繧、繝医r繝溘Μ遘偵〒謖螳壹@縺セ縺吶 + + + mode + 繧ヲ繧ァ繧、繝医ョ譁ケ蠑 + no + "normal"(繝繝輔か繝ォ繝) 縺セ縺溘ッ "until" + 縲繧ヲ繧ァ繧、繝医ョ譁ケ蠑上r謖螳壹@縺セ縺吶
縲"normal" 繧呈欠螳壹☆繧九°縲√%縺ョ螻樊ァ繧堤怐逡・縺吶k縺ィ蜊倥↓ time 縺ァ謖螳壹☆繧区凾髢薙□縺大セ縺、縺薙→縺ォ縺ェ繧翫∪縺吶
縲"until" 繧呈欠螳壹☆繧九→縲resetwait 繧ソ繧ー縺ァ險ュ螳壹@縺滓凾髢灘次轤ケ縺九i縺ョ邨碁℃遘偵r time 縺ァ謖螳壹@縺溘→縺ソ縺ェ縺励∵欠螳壹@縺滓凾髢薙∪縺ァ繧貞セ縺。縺セ縺吶ゅ☆縺ァ縺ォ謖螳壹@縺滓凾髢薙r驕弱℃縺ヲ縺縺溷エ蜷医ッ蠕縺。縺セ縺帙s縲
+
+ + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲縺薙ョ繧ヲ繧ァ繧、繝医r縲√槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ繧繧ュ繝シ繝懊シ繝峨〒繧ケ繧ュ繝繝励〒縺阪k縺九r謖螳壹@縺セ縺吶Galse 繧呈欠螳壹☆繧九→縲√槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ繧繧ュ繝シ繝懊シ繝峨〒縺ッ縲√%縺ョ繧ヲ繧ァ繧、繝医r繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲 + +
+ + waitclick + 繧ッ繝ェ繝繧ッ繧貞セ縺、 + 縲繧ッ繝ェ繝繧ッ繧貞セ縺。縺セ縺吶
l 繧ソ繧ー繧 p 繧ソ繧ー縺ィ驕輔≧縺ョ縺ッ縲√せ繧ュ繝繝励〒縺阪↑縺縺薙→縺ィ縲√け繝ェ繝繧ッ蠕縺。險伜捷縺瑚。ィ遉コ縺輔l縺ェ縺縺ィ縺縺縺薙→縲∝セ縺」縺ヲ縺繧矩俣縺ッ譬槭r謖溘/縺溘←繧九d縲√◎縺ョ縺サ縺九ョ繧ケ繧ュ繝繝玲桃菴懊↑縺ゥ縺後〒縺阪↑縺縺ェ縺ゥ縲√〒縺吶
+
+ + waittrig + 繝医Μ繧ャ繧貞セ縺、 + 縲TJS2 繧ケ繧ッ繝ェ繝励ヨ縺 trigger 繝。繧ス繝繝峨r蜻シ縺カ縺ョ繧貞セ縺。縺セ縺吶
縲縲後ヨ繝ェ繧ャ縲阪ッ 繧、繝吶Φ繝磯ァ蜍募梛縺ョ繝励Ο繧ー繝ゥ繝溘Φ繧ー繝「繝繝ォ縺ァ蜍穂ス懊☆繧 KAG 縺ォ縺翫>縺ヲ縲√す繝翫Μ繧ェ騾イ陦後r縺縺」縺溘s蛛懈ュ「縺励√↑繧薙i縺九ョ蜃ヲ逅繧貞セ縺、縺溘a縺ォ菴ソ繧上l繧区ゥ滓ァ九〒縺吶
縲縺薙ョ繧ソ繧ー縺ッ縲ゝJS2 繧ケ繧ッ繝ェ繝励ヨ縺ョ蜃ヲ逅縺檎オゅo繧九ョ繧貞セ縺、縺ョ縺ォ菴ソ縺縺セ縺吶
縲縺溘→縺医ー繝医Μ繧ャ蜷 "click" 縺ッ縲√槭え繧ケ縺後け繝ェ繝繧ッ縺輔l縺溘→縺阪↓逋コ蜍輔☆繧九ヨ繝ェ繧ャ ( 縺薙l縺ォ縺、縺縺ヲ縺ッ KAG 蜀驛ィ縺ァ縺吶〒縺ォ螳夂セゥ縺輔l縺ヲ縺繧九ヨ繝ェ繧ャ ) 縺ァ縲[waittrig name="click"]縺ィ險倩ソー縺吶k縺薙→縺ォ繧医j繝槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ繧貞セ縺、縺薙→縺後〒縺阪∪縺吶
+ + name + 繝医Μ繧ャ蜷 + yes + 繝医Μ繧ャ蜷 + 縲蠕縺、繝医Μ繧ャ蜷阪r謖螳壹@縺セ縺吶ゅkag 繧ェ繝悶ず繧ァ繧ッ繝 ( MainWindow 繧ッ繝ゥ繧ケ ) 縺ョ trigger 繝。繧ス繝繝峨〒蠑墓焚縺ォ蜷悟錐縺ョ繝医Μ繧ャ蜷阪r謖螳壹☆繧九%縺ィ縺ォ繧医j縲√ヨ繝ェ繧ャ繧堤匱蜍輔@縲∝セ縺。迥カ諷九r隗」髯、縺吶k縺薙→縺後〒縺阪∪縺吶
+
+ + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→縲√け繝ェ繝繧ッ縺ォ繧医j縲∝セ縺、蜍穂ス懊r繧ケ繧ュ繝繝励☆繧九%縺ィ縺後〒縺阪∪縺吶
+
+ + onskip + 繧ケ繧ュ繝繝励&繧後◆縺ィ縺 + no + TJS蠑 + 縲繧ッ繝ェ繝繧ッ縺ォ繧医j繧ケ繧ュ繝繝励&繧後◆縺ィ縺阪↓螳溯。後☆繧 TJS蠑 繧呈欠螳壹@縺セ縺吶
+
+
+ + wb + BGM 繝輔ぉ繝シ繝峨ョ邨ゆコ蠕縺。 + 縲BGM 縺ョ繝輔ぉ繝シ繝峨い繧ヲ繝医サ繝輔ぉ繝シ繝峨う繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺吶 + + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ繝輔ぉ繝シ繝峨ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲BGM 繝輔ぉ繝シ繝峨r繧ケ繧ュ繝繝励@縺溷エ蜷医ッ縲髻ウ驥上ッ逶エ縺。縺ォ繝輔ぉ繝シ繝峨ョ蛻ー驕秘浹驥上↓縺ェ繧翫∪縺吶
+
+
+ + wc + 譁蟄玲焚蛻縺ョ繧ヲ繧ァ繧、繝医r蜈・繧後k + 縲譁蟄玲焚蛻縺ョ繧ヲ繧ァ繧、繝医r蜈・繧後∪縺吶 + + time + 譁蟄玲焚 + yes + 譁蟄玲焚 + 縲縺薙%縺ァ謖螳壹@縺滓枚蟄玲焚繧定。ィ遉コ縺吶k縺ョ縺ィ蜷後§縺縺代ョ譎る俣繧貞セ縺。縺セ縺吶 荳譁蟄励↓蠢隕√↑譎る俣縺ッ delay 繧ソ繧ー縺ァ謖螳壹@縺セ縺吶 + + + + wf + 蜉ケ譫憺浹繝輔ぉ繝シ繝峨ョ邨ゆコ蠕縺。 + 縲蜉ケ譫憺浹縺ョ繝輔ぉ繝シ繝峨い繧ヲ繝医サ繝輔ぉ繝シ繝峨う繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺吶 + + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲繝輔ぉ繝シ繝峨ョ邨ゆコ繧貞セ縺、繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ繝輔ぉ繝シ繝臥オゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clipskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲蜉ケ譫憺浹繝輔ぉ繝シ繝峨r繧ケ繧ュ繝繝励@縺溷エ蜷医ッ縲髻ウ驥上ッ逶エ縺。縺ォ繝輔ぉ繝シ繝峨ョ蛻ー驕秘浹驥上↓縺ェ繧翫∪縺吶
+
+
+ + wl + BGM 蜀咲函縺ョ邨ゆコ蠕縺。 + 縲BGM 蜀咲函縺ョ邨ゆコ繧貞セ縺。縺セ縺吶ゅBGM 縺檎ケー繧願ソ斐@蜀咲函縺ョ蝣エ蜷医ッ蠕縺。縺セ縺帙s縲 + + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ BGM 蜀咲函縺ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲騾比クュ縺ァ蜀咲函邨ゆコ蠕縺。繧偵せ繧ュ繝繝励@縺溷エ蜷医ッ縲。GM 縺ッ逶エ縺。縺ォ蛛懈ュ「縺励∪縺吶
+
+
+ + wm + 閾ェ蜍慕ァサ蜍輔ョ邨ゆコ蠕縺。 + 縲閾ェ蜍慕ァサ蜍輔ョ邨ゆコ繧貞セ縺。縺セ縺吶 + + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ閾ェ蜍慕ァサ蜍輔ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲騾比クュ縺ァ閾ェ蜍慕ァサ蜍輔ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励@縺溷エ蜷医ッ縲∫峩縺。縺ォ譛邨ゆス咲スョ縺ォ遘サ蜍輔@縺セ縺吶
+
+
+ + wp + 繝薙ョ繧ェ繝斐Μ繧ェ繝峨う繝吶Φ繝亥セ縺。 + 繝斐Μ繧ェ繝峨う繝吶Φ繝医r蠕縺。縺セ縺吶
for螻樊ァ縺梧悴謖螳壹ョ蝣エ蜷医√☆縺ケ縺ヲ縺ョ繧、繝吶Φ繝医r蠕縺。縲√>縺壹l縺九′逋コ逕溘☆繧九→蜃ヲ逅繧堤カ咏カ壹@縺セ縺吶
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + for + 繧、繝吶Φ繝医ョ遞ョ鬘 + no + "loop","period","prepare","segLoop"縺ョ縺縺壹l縺 + 縲蠕縺、繧、繝吶Φ繝医ョ遞ョ鬘槭r謖螳壹@縺セ縺吶
縲"loop"繧呈欠螳壹☆繧九→縲√Ν繝シ繝礼オらォッ繧貞セ縺。縺セ縺吶
縲"period"繧呈欠螳壹☆繧九→縲√ヴ繝ェ繧ェ繝峨う繝吶Φ繝医r蠕縺。縺セ縺吶
縲"prepare"繧呈欠螳壹☆繧九→縲}reparevideo縺ョ貅門y螳御コ繧貞セ縺。縺セ縺吶
縲"segLoop"繧呈欠螳壹☆繧九→縲√そ繧ー繝。繝ウ繝医Ν繝シ繝礼オらォッ繧貞セ縺。縺セ縺吶
+
+
+ + wq + 逕サ髱「謠コ繧峨@縺ョ邨ゆコ蠕縺。 + quake 繧ソ繧ー縺ァ髢句ァ九@縺溽判髱「謠コ繧峨@縺ョ邨ゆコ繧貞セ縺。縺セ縺吶 + + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲騾比クュ縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励@縺溷エ蜷医ッ縲∫峩縺。縺ォ蛻繧頑崛繧上j蠕後ョ迥カ諷九↓遘サ陦後@縺セ縺吶
+
+
+ + ws + 蜉ケ譫憺浹蜀咲函縺ョ邨ゆコ蠕縺。 + 縲蜉ケ譫憺浹蜀咲函縺ョ邨ゆコ繧貞セ縺。縺セ縺吶
縲蜉ケ譫憺浹縺檎ケー繧願ソ斐@蜀咲函縺ョ蝣エ蜷医ッ蠕縺。縺セ縺帙s縲
+ + buf + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ + no + 蜉ケ譫憺浹繝舌ャ繝輔ぃ逡ェ蜿キ( 0(繝繝輔か繝ォ繝) 縲 ) + 縲蜀咲函邨ゆコ繧貞セ縺、繝舌ャ繝輔ぃ繧呈欠螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲蜉ケ譫憺浹蜀咲函繧偵槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ァ繧ケ繧ュ繝繝励〒縺阪k縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→蜉ケ譫憺浹蜀咲函繧偵槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ァ繧ケ繧ュ繝繝励〒縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶
縲縺溘□縺 clipskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲縺セ縺溘√せ繧ュ繝繝励&繧後k縺ィ蜉ケ譫憺浹縺ョ蜀咲函繧りェ蜍慕噪縺ォ蛛懈ュ「縺励∪縺吶
+
+
+ + wt + 繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ蠕縺。 + 縲繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ繧貞セ縺。縺セ縺吶 + + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺九←縺縺 + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲true 繧呈欠螳壹☆繧九→繧ッ繝ェ繝繧ッ縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ縺ョ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励〒縺阪∪縺吶
縲false 繧呈欠螳壹☆繧九→繧ケ繧ュ繝繝励〒縺阪∪縺帙s縲
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲騾比クュ縺ァ繝医Λ繝ウ繧ク繧キ繝ァ繝ウ邨ゆコ蠕縺。繧偵せ繧ュ繝繝励@縺溷エ蜷医ッ縲∫峩縺。縺ォ蛻繧頑崛繧上j蠕後ョ迥カ諷九↓遘サ陦後@縺セ縺吶
+
+
+ + wv + 繝薙ョ繧ェ蜀咲函縺ョ邨ゆコ蠕縺。 + 縲繝薙ョ繧ェ蜀咲函縺ョ邨ゆコ繧縲preparevideo 繧ソ繧ー縺ォ繧医k蜀咲函貅門y縺ョ螳御コ縲videoevent 繧ソ繧ー縺ォ繧医k繝斐Μ繧ェ繝峨う繝吶Φ繝医r蠕縺。縺セ縺吶
縲SWF(Sockwave Flash) 縺ョ蜀咲函縺ョ邨ゆコ繧貞セ縺、縺薙→縺ッ縺ァ縺阪∪縺帙s縲wait 繧ソ繧ー遲峨〒蠢隕√↑譎る俣繧貞セ縺、縺ェ縺ゥ繧偵@縺ヲ蟇セ蜃ヲ縺励※縺上□縺輔>縲
+ + slot + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ + no + 繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ(0縲) + 縺薙ョ謫堺ス懊r陦後≧繝繝シ繝薙シ繧ェ繝悶ず繧ァ繧ッ繝育分蜿キ繧呈欠螳壹@縺セ縺吶
逵∫払縺吶k縺ィ 0 縺梧欠螳壹&繧後◆縺ィ隕九↑縺輔l縺セ縺吶
隍謨ー縺ョ繝繝シ繝薙シ繧貞酔譎ゅ↓謫堺ス懊☆繧句エ蜷医ッ縲,onfig.tjs 縺ョ numMovies 縺ョ蛟、繧ゅ∝ソ隕√↑蛟区焚縺ォ螟画峩縺励※縺上□縺輔>縲
+
+ + canskip + 繧ケ繧ュ繝繝励〒縺阪k縺 + no + true 縺セ縺溘ッ false(繝繝輔か繝ォ繝) + 縲繝薙ョ繧ェ蜀咲函繧偵槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ァ繧ケ繧ュ繝繝励〒縺阪k縺九r謖螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→ 繝薙ョ繧ェ蜀咲函繧偵槭え繧ケ縺ョ繧ッ繝ェ繝繧ッ縺ァ繧ケ繧ュ繝繝励〒縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶
縲縺溘□縺 clickskip 繧ソ繧ー縺ァ繧ッ繝ェ繝繧ッ繧ケ繧ュ繝繝励′遖∵ュ「縺輔l縺ヲ縺繧九→縺薙ョ繧ケ繧ュ繝繝励b縺ァ縺阪↑縺縺ョ縺ァ豕ィ諢上@縺ヲ縺上□縺輔>縲
縲縺セ縺溘√せ繧ュ繝繝励&繧後k縺ィ 繝薙ョ繧ェ縺ョ蜀咲函繧りェ蜍慕噪縺ォ蛛懈ュ「縺励∪縺吶
+
+
+ + xchgbgm + BGM 繧貞・繧梧崛縺医k + 縲BGM 繧貞・繧梧崛縺医∪縺吶
縲縺薙ョ繧ソ繧ー繧剃スソ縺蝣エ蜷医ッ縲,onfig.tjs 縺ァ doubleBuffered 繧 true 縺ォ險ュ螳壹@縺ヲ縺上□縺輔>縲
+ + storage + BGM 繝輔ぃ繧、繝ォ蜷 + yes + BGM 繝輔ぃ繧、繝ォ蜷 + 縲谺。縺ォ蜀咲函縺吶k BGM 繝輔ぃ繧、繝ォ蜷阪∪縺溘ッ CD 繝医Λ繝繧ッ繧呈欠螳壹@縺セ縺吶 + + + loop + 繝ォ繝シ繝励☆繧九° + no + true(繝繝輔か繝ォ繝) 縺セ縺溘ッ false + 縲BGM 繧偵Ν繝シ繝励☆繧九°繧呈欠螳壹@縺セ縺吶
縲true 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺吶Galse 繧呈欠螳壹☆繧九→繝ォ繝シ繝励@縺セ縺帙s縲
縲逵∫払縺吶k縺ィ true 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶
+
+ + time + 繝輔ぉ繝シ繝画凾髢 + yes + 繝輔ぉ繝シ繝峨r陦後▲縺ヲ縺繧区凾髢 (ms蜊倅ス) + 縲謖螳壹@縺滓凾髢薙〒迴セ蝨ィ縺ョ譖イ縺ョ繝輔ぉ繝シ繝峨い繧ヲ繝医′陦後o繧後◆蠕後∝酔縺俶凾髢薙〒謖螳壹@縺滓峇縺ョ繝輔ぉ繝シ繝峨う繝ウ縺瑚。後o繧後∪縺吶 + + + overlap + 繧ェ繝シ繝舌シ繝ゥ繝繝玲凾髢 + no + 繧ェ繝シ繝舌シ繝ゥ繝繝励r陦後≧譎る俣(ms蜊倅ス) + 縲overlap 縺ォ譎る俣繧定ィュ螳壹☆繧九→縲√◎縺ョ譎る俣蛻縲√ヵ繧ァ繝シ繝峨い繧ヲ繝医→繝輔ぉ繝シ繝峨う繝ウ縺ョ譎る俣縺碁阪↑繧翫∪縺吶ら怐逡・縺吶k縺ィ 0 縺ァ縺ゅk縺ィ隕九↑縺輔l縺セ縺吶ゅけ繝ュ繧ケ繝輔ぉ繝シ繝峨r陦後≧縺ィ縺阪↓謖螳壹@縺セ縺吶 + + + volume + 谺。縺ョ譖イ縺ョ髻ウ驥 + no + 髻ウ驥% (0縲100) + 縲谺。縺ョ譖イ縺ョ繝輔ぉ繝シ繝牙セ後↓蛻ー驕斐&縺帙k BGM 縺ョ髻ウ驥上r % 縺ァ謖螳壹@縺セ縺吶
縲逵∫払縺吶k縺ィ縲∵ャ。縺ョ譖イ縺ョ髻ウ驥上ッ迴セ蝨ィ縺ョ髻ウ驥上→蜷後§縺ォ縺ェ繧翫∪縺吶
+
+
+
diff --git a/docs/kag3doc/contents/td.png b/docs/kag3doc/contents/td.png new file mode 100644 index 0000000000000000000000000000000000000000..85e02501df1560d359a473f544224481a83c9aa7 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%mF?ju0VQumF+E%TuG2$FoVOh l8)-lem#2$k2#0KP0+7wbznI}gNkudQ4=SZ zn7D+bl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)a zYg>CqXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3 z>o;!Rdidz^lc&#~zj*oTM-f49#DHKz}g-qlJYXWKS#c@69{;yl(w zme1fGL-^|!0}nGJF!GoM8SEK;oa)k8z%*R&)X=$2tEMFtFi5Ig3codfL;AsL{WmA} zY5kaV#>Y2a7=QTYRwnT$mgBYze)OqjCZbbvIU=&96t}^gO4$y zb^AQ#Nqzj@bm+viS@+w&&JMVdxXbcU;e=Yp7u5ppN!p)~Uty|VI zopidLxvenj2>bVBhs8g`A3q7Q30kvpW4Ig78mlHNsrUOImi~$P&#_&{EFUH^l==&H_7dvsO0PW4MrX;%-c$tz=SADsVAXjA=*Ak&KXe?(SYyK58s;P+MLw?a2!TowN_B&r1MU%j_B z^+WrCU*(76+oj@L)}(z--q11gokZ^ErAbkq{0nsa*eWDsSAYJ`@a@Ep-t>>ck9m*m zay@h>&d9J_w{^s(Bd^0~xKQQsuE@$%&{lL_#>lq~VdwzP=Kc7`1w_NvFfgSJPDO)h7JYv@baZomcPq zREs(-|ND#KqyKI8ZxjCAGM~@CPyT-Wk@Yi5eS^gQGxV=J%i~gi+V0HZ_a*Xrqm}8X})Z4#mGykz|e{w(SAD?G-`N4*d z@tyC#R!69QUexulk>iJQ!GYIJ?vJD9Gt^0(|CoMU|6z7*lCA2cQ{MaSJa`tgq(~P? zl-|8=yZXXD>$)@L_qqNs>UZba#OJP3DK~WdR}YI^TYFP`$d5zb(hM{zJps%u5D}*R?biB>0{5)T%YiFb$y0@d%WO2!SfH-^Txai f%HpqPIpCj`9J|8PW^%lIpaZMOD29cB{QsK(xglH? literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/trans0f.jpg b/docs/kag3doc/contents/trans0f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dfed6fcd6db1ece6074ce102aeeb33b895b7a3e GIT binary patch literal 10326 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/trans2b.jpg b/docs/kag3doc/contents/trans2b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8141131529ddb51776196558a9f993b0cfe00048 GIT binary patch literal 14837 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/trans3f.jpg b/docs/kag3doc/contents/trans3f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6588d3ad40e6ab9dfb54d13568dc119d9c5100a7 GIT binary patch literal 13305 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 literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/univtrans_A.png b/docs/kag3doc/contents/univtrans_A.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea1161ba9da3a9d2aa53a9c161e40cc0456946b GIT binary patch literal 558 zcmV+}0@3}6P)pI55QXFUMo??o`}3@CHgrgVHSi_hf8I_EIdMwwZU)m5(=fn z8Xe{=58j&Lx>ZV2<0uaPbr#HksfdWwN*RJ0VCB{qsWJpR0RM-01_m~$fa7HS$OiYx zQ9FQF6U-Z<_uT40ZId}L(SbUvx*pM`mm?iKW2(JX^Bs9J)4 z8nhULlIHyl?e}mQgE~RQAu)}?S27slkT{P)l{^@?yfkm0FhcbA^}RWSHe;$J81*+^ z8YRJ~X9+2S5`RH6&&VdQ@MJSnxtXE#!6KVQymIA&dYl`h5+6UJ4%-YGfWF+$!sO6N*a=Tc+meTeL}z4yJw_s-7u*4F>t=l}2T|NsC0dYyKQ0003< zNkla7ht?E9ek6fQCLdASXZ(4HXX|YSN+z3C_R;_6SH& zP)33RLTvvjkbv>-&Y)yETR*M#G2bM~e=0kWRkT4)t8PjIFx@o(lfnQzTc9ZoAeP91 zdh}Db08}mT@#lLTfI%E2I{;4#$j0)I2a-d%2_LKi6be`b*jGRzj}ZXQ0(WzRM+2nR zCe3560F8E&d%#2isRLdW&^7uYb3j!@!S=A#FTtj*tggN^a&cuu@3UuRv+i5bo0idJ zxo`0jPgds?fWC6oM*wfuW7S$Nx>iS}WAWaBrac$G0$@|5Hvn<~4J?bco&|KoIcEV& z0KIwkuqK97EK3D*FSHOnMmOqLez(pLK0W{H$+PVgRnEQ2afcAXw>cN^1 ng$|m59^UF$i+?>j`Cb1DPYnH$JL{#Z00000NkvXXu0mjf-ajb}ppG@ch0o9#ao@=aS< zn(|@q0Vf~3SOMYlCW}N|pGx}F9BiCn(aUM P2RXsh)z4*}Q$iB}fulLq literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/univtrans_Snostay.png b/docs/kag3doc/contents/univtrans_Snostay.png new file mode 100644 index 0000000000000000000000000000000000000000..861960607a302583cc350007d18d1ec496f7c9c7 GIT binary patch literal 1137 zcmV-%1djWOP)J4% z-YGfWF+$!sO6N*a=Tc+meTeL}z4yJw_s-7u*4F>t=l}2T|NsC0oVXx5000BbNklua>6ZO`?fTC~ftNYHhdaXnvv<$k;>B`N&%}Mj)%DcZ(IUuAu%Ap!?L4& z%t_F5=c8>R31{J20c)C!qd!F>t+w6Zstd8f-#HCHFu&30UXD+ zlmoO?ITBTWIXbV`jgd=8Az$3<>K0ioZiGO9<4{Qf+8GB5Pq-Yt*NKtKNJ80f@1SyIEmJw&ko=LbL+KT`(iEI*a zvDwOq1Mt;xtzQuAMF8{Fq!AfO7n?v%R4$^J`CD>93ncqqXAi)J-|v;pOt6svT$iJr zoL}L-OfHj=Tn3P#l*(7iRz{=%uh(j@i@1yfJP8VqNJ3VVKKxrk*k~3=t=`Cp9N>ar z69>4D7amW9x%Ik}$jFJL&7jAWz;XuwULQ;qq?nQ-2eH-s3hv@rkhvut&cTaL0KwW;G9N^3^><23I^Thot z%dank0G0W9vi?=wjy!(S?&rZG)JJ}m)8^-)0Jl4F((dPB0NY#a(++ih9t5y^M8Azu z=jVY-_*F*$s`K+;5qSnhM4z80Imz_vqhK8XsL#(6_P;l;c^b7Bph7=S-oLi{@Uij% zROsh@WG1|PzY8n$^N{|Woj}_CJgfu^&QXT6`+1lMHBJhWc0UgTSUN!@?S38xa4s|) zK$U(T2(a1eIBECuz6emKp9ccGZx;b+_w&97P^q5>0<5P;Jsf~a{k*T$K&^fr2+-M! zlXgGv!;SQ?-3O}m^RV$-=QK^){XA&=n;Qet?&m>v7IT;+?S39|l$>j6yY&P0`g!vH z&A=U}NxPpXG$S7EFtUCcY4`K+6*P`d=T|w!e%=QF-R}c6`*}FP-u*sMv!92LU%H=m zX!i5K@rQ=_xJb312aVr1CHHxoYClgn{;TVnnoIsabxi)ElLQ0H00000NkvXXu0mjf D0M!=h literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/univtrans_Sstay.png b/docs/kag3doc/contents/univtrans_Sstay.png new file mode 100644 index 0000000000000000000000000000000000000000..08a50352154e6fe93f23b2698872077d34345422 GIT binary patch literal 1280 zcmV+b1^@bqP)J4% z-YGfWF+$!sO6N*a=Tc+meTeL}z4yJw_s-7u*4F>t=l}2T|NsC0oVXx5000DANklFzmzQq7mKi6lxa=QOC^mKsBvRqFH zz~X)btaN&SH1rU_Wf>YeK)&9<&glWt(1QS%xupUu*<*Zrl<;4!M*)finY9GFmhnXN zFhGGIvzB1TGMrvrQ<*xLc_g&Qcq2S`Q_0IV;HD#$D)_+Co5V+sHDdIVs7 zy%TI~0N3kQZe=_jJp^!l1x-UQ#c&Tcu2i(p7$1jU(Y+B^=S@d03r3hc^(GvMgzzl8DUD1qu?NV-#iZh*i7HD zC_9;HyA|vV0JZCdiq@ur>tpA6ME$wHJ#M4Z0yJRCC~YbZ`q+6MUEi(i@TJuOG)&Zz zVj~Xv*m<5)m~hjb3v*^4J90w`Ngq4UL-eXRfteag)T1Idq)_y+^E|8s%+gkdnHoye zqaZh=Q1r3$Jj{f8=@n$Uo<#lNq@G5qK6ajm0c@l%k!gDp^`j*9G!pf(^E?dTqtK`T zaw34t!$Kr|>^u(y*o!{SPz%u8h?_okp7%n4xh=FS%{JnukDcd%0MFtiV6p{pYgo*U z7J}(x=XtLK_+>x1$W3i3j{4Yn9tg0zf7C?+$n6W|^}uZZIeFg8YT%I)x9nudspokh zKxr+`$QGcnfzG12TVLo ztZ0X3`KRQ0P@JXMOftb=Z3nlRXd|iTdB|4sQA-Cg56r1QZ7#*tUg~)sUEj~D?KIo& z5$r#%7i}c`bO2> qmeDOlwvp8HJmU3lJ4% z-YGfWF+$!sO6N*a=Tc+meTeL}z4yJw_s-7u*4F>t=l}2T|NsC0oVXx5000CqNkl-mu@jc9G*^P+zBk88@7Gm=M(J&kH*IT z#I#)h`1$$q(Wp$^KU6#)*}p#Ho((L6IX-^wOa_=el)KTua+ETe4pI3$H3=o+%<}E& z6tW~yUad{c0JuYRN!!?Xy*$@cf>9n#D^0G6TxgPXRWAqcwF&11K>hj0o^B z7Rs+VA(T54ZRS{D^6x2XfhRKn4#V(!p#YSVZV5d0Zf459*%Ov-W=6}bbLQx4KABAt zz+t!xJU|(h9kXfI|DkPJn65mO=__mO9J@_(l+%7|3a4vSrVJJP++r z05uDlCFo%Do<=4ByGGaA5y2J(FjqQFNh9g#5U5KkKd3n~x8#Q!AhqK<8vxe&^PZ?* z1ZxaHH5~2m{EF#da$Fk8aR4=xQv6PNPa{}>oR_`a#KH~mga|yS6ryzc;GIIWvsqAL z^;;Uj0~`^o-2nIQz+;$U-G1F+(#Q$0jZv>DmhDae$Zwh`2(C;@xrizKD|8>85lh$j z(9txT3F*A5K1~70f1d<}3!vo2sA(kC5od@r!oW3GEYUx4r1eoRDg^Yg6rK{xINP@{*{`FZx% zRbDG-c|EMo&vRBtc_x8{^{_fWud|m03`1X80R+}VB!1qt?p{Nv=m+7C=^-9JuafVz zhjPwU>@#|Z$j^ISMmynW1}vzDnEX7e9q=VR#N_93(VGpaFXo0rg+^bn7q zr@Yl^=K)w=5AoFJsmI-U0G8K7MD=;f9=gs0u(%##s?S?FzzFK|IKLXRz?bw8Rej#7 z0Y*`u$E)W6Zu0;vu7|ModFzW|i^ae&^?BU+?i!sSb!#4*~tWS9OW5zAREbg!A+2-ddg#sUE`kdFAci5BmQv z8o3@8_wz8XR(;;fu1pV$`+11^CgC@LRq0`IKW}FLW7R|W`aI!TpSLbO1g_8PYro>2 z)#)KLE~lUe`2rB~Y(x;?n;Cc1#5-o%0re00000NkvXXu0mjf{0B&o literal 0 HcmV?d00001 diff --git a/docs/kag3doc/contents/univtrans_V1.png b/docs/kag3doc/contents/univtrans_V1.png new file mode 100644 index 0000000000000000000000000000000000000000..effc97ac96caf328c5d769829617f69205fd3305 GIT binary patch literal 1164 zcmV;71atd|P)t=l}2T|NsC0MB7w!000CR zNklYEnWVAGyyHr(b7?hRZ1sdNMVuU8g&>c=(V81LMZIS z8CyI41Y50Wl_bQ=#k<}2Yj<;Zi`&55XXf6Q-S^#n`wkd-M*BYxKxzg6(BuL;uklF8 zOJZ^?@Gup)$^|}|k?{qGh{>_QgH&Ln=NC8|C(ZyhaxAc$3WWUtfwQ~B8K6Fn1+LEp zZiWb){d5PYjRW-vz*>;N`@|ifE)LWq)Fs*r>?w%JfqI0xB!9v5x)@)x7ff(~SR9x~ zh)ePp+*vvEHhaT43J{9}^9VpoJ5?ku1!%v+YgmN?^9Xf`hl>F^x9CX~4$LF$EOB!& zK>GtqvML;iM^@)9Q3Q%y4v_gW(FKHaARgJ^XNjB30k%B?!Z{ER>~?jRh+GcPMmDX& zfq0;|r@BPuN`M=WfM9M3e3^z`8TM6|$Xp5V%_AU~1NJ~OlhIH;!ubOVoG;$S@K|+; z%#{E?JOY9_5DzSVv{a8UE(hp%Oc2fidtiStQEQqVbSi);vPF5a7*~aOWt?3xUR*hoVa~u3dU2o?BZe z2kHUMB^uWPTzKxip&V=vEUxUwqDwTc1h{awHo`eD56CW2xzbxX^YmVVIanTmo>|SN z;1Q7@rQ_9TG1LA@TToHh7?k)~Rj-#YsM-O81Ac4Gw##0iLD+0Ik z(-?{z@6lWO3id!G9+ZQ7tlQCNXKO632z-hJcG=;NT@aHyHtPF)A3WyYIEU-BzKg{} zjyma{Y5&ntxuZY$Cl}b~-`R^^)-X1g1)6VRKwgHvD)o4<+PPk^ntD*W2M;{= z@X~zJ2Da_XorGvyY93uK{%s+@lgPaoljU)_`o(?rITtA9u$?$@xhl}~2M@%qxykal zTow4exVXz5)q$tuS{D!K4~jW#J&wy2f%oS{^GNIJcRgMInz$@*V)X|P#T+)N6PXJF er`I1%>+3JZa#xv*Ao_Oz0000I7 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 K#P=FKHvNArFJtup literal 0 HcmV?d00001 diff --git a/docs/kag3doc/index.html b/docs/kag3doc/index.html new file mode 100644 index 0000000..83ef2fc --- /dev/null +++ b/docs/kag3doc/index.html @@ -0,0 +1,10 @@ + + + + + + +(自動的にジャンプしない場合は下記のリンクをたどってください)
+
インデックスへ + + diff --git a/docs/kr2doc/contents/2DAffineMatrix.png b/docs/kr2doc/contents/2DAffineMatrix.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2519d7827ff6f6251e95a533daa5c7bb1ce178 GIT binary patch literal 442 zcmV;r0Y(0aP)f%C@QrgVr3>2q!R4ym(7I*eiL)1cRkJ)l=(?D2vy zVcZ2`j|!&i=RAw6F)`2>?Nl?lbyLtoBj$wsn02;lCR?j&e3=ctY;I-J!r&(S#A^N_ z%t9E=e=t(iVkcdX74dQz#gW(3OaF@z)9xA!zJg93;1 z?uNot^8{1z1opmrs}?X;S7rWcv~w(F691J{JVWK|!tTIXk0hR5V|QY9x0tABq3gD~ gtZ3)HPk*zRS4~SR3j69G2{e + + + + + + 色定数一覧 + + + + + + + + +

色定数一覧 +

+
+ これらの定数を様々な色指定の場面で使うことができます。これらの値は Windows の設定によって実際の色が変わる可能性があるものです。
+
+ +
+ +clScrollBar           : スクロールバーの色
+ +clBackground          : デスクトップの背景色
+ +clActiveCaption       : アクティブなウィンドウのタイトルバーの色
+ +clInactiveCaption     : アクティブでないウィンドウのタイトルバーの色
+ +clMenu                : メニューの背景色
+ +clWindow              : ウィンドウの背景色
+ +clWindowFrame         : ウィンドウの枠の色
+ +clMenuText            : メニューの文字の色
+ +clWindowText          : ウィンドウ内の文字の色
+ +clCaptionText         : アクティブなウィンドウのタイトルバーの文字の色
+ +clActiveBorder        : アクティブなウィンドウの境界線の色
+ +clInactiveBorder      : アクティブでないウィンドウの境界線の色
+ +clAppWorkSpace        : アプリケーションの作業領域の色
+ +clHighlight           : 選択文字の背景色
+ +clHighlightText       : 選択文字の色
+ +clBtnFace             : 3D オブジェクトの面の色
+ +clBtnShadow           : 3D オブジェクトの影の色
+ +clGrayText            : 淡色表示されている文字の色
+ +clBtnText             : 3D オブジェクトのテキストの色
+ +clInactiveCaptionText : アクティブでないウィンドウのタイトルバーの文字の色
+ +clBtnHighlight        : ボタンの強調表示の色
+ +cl3DDkShadow          : 3D オブジェクトの暗い方の影
+ +cl3DLight             : 3D オブジェクトの明るい面の縁の色
+ +clInfoText            : ツールチップのテキスト色
+ +clInfoBk              : ツールチップの背景色
+
+
+ +
Note
+上記の色見本 ( 各色の左の + のような表示 ) は、ブラウザによっては正常に表示されません。

+
+ + + + diff --git a/docs/kr2doc/contents/CommandLine.html b/docs/kr2doc/contents/CommandLine.html new file mode 100644 index 0000000..d30c66c --- /dev/null +++ b/docs/kr2doc/contents/CommandLine.html @@ -0,0 +1,400 @@ + + + + + + + コマンドラインオプション + + + + + + + + +

コマンドラインオプション +

+ 吉里吉里のコマンドラインオプションは通常のコマンドラインから指定するほかに、Releaser ( krkrrel.exe ) または 吉里吉里設定 ( krkrconf.exe または エンジン設定.exe ) で設定ファイルに保存することができます。
+オプションが読み込まれる順序は
  1. 吉里吉里本体に埋め込まれたオプション
  2. 「吉里吉里設定」(krkrconf.exe)が出力した、吉里吉里コアと同じディレクトリにある .cf ファイル (ファイル名は吉里吉里コアと同じ)
  3. 「エンジン設定」(エンジン設定.exe)が出力した、データ保存場所にある .cfu ファイル (ファイル名は吉里吉里コアと同じ)
  4. コマンドラインに指定されたオプション
となります。.cf ファイルや .cfu ファイルについては、存在しない場合は単に無視されます。後に読み込んだ指定ほど優先されます。現在のところ、吉里吉里本体にオプションを埋め込むことができるツールが無いため、吉里吉里本体からオプションの内容が読み込まれることはありません (ただし、コマンドラインから指定できない特殊なオプションなどが吉里吉里本体に埋め込まれる場合があります)。
+
+ コマンドラインのオプションは基本的に '-' (ハイフン) に引き続き、オプションの名前が来ます。そのあとそれに引き続き '=' を書き、オプションの値を書きます。
+ たとえば -cdvol というオプションの値が direct ならば、-cdvol=direct と指定します。
+
+ 「起動オプション」や「デバッグ関連のオプション」や「システム互換性関連のオプション」を除けば、ほとんどは環境依存の問題を解決するための微調整を行うオプションです。
+ 環境依存の問題の解決については環境依存の不具合についても参照してください。
+
+
Note
+Releaser や krkrconf.exe ( エンジン設定.exe ) では、吉里吉里の実行可能ファイルや外部の設定ファイルを書き換えてこれらのオプションを変更できますが、通常はデフォルトのままで問題ありません。作品を制作する側固有の環境で問題があるということで、これらのオプションをデフォルトの物でないものに変えたままの実行可能ファイルや設定ファイルを一般に配布することはおすすめできません (もちろん -datapath のように配布形態や使用形態にしたがって設定すべきオプションもあります)。

+
+下のリストの中で「動的に変更可能」という表記がある物は、System.setArgument メソッドで変更が可能な物です。それ以外のオプションは動的に変更を行うことは出来ません。
+
+ + +

起動オプション +

+ 吉里吉里の特定の機能のみを呼び出して使うために以下のオプションがあります。
+
+
-userconf (エンドユーザ向け設定ツールの起動)
+
 本体に内蔵されているエンドユーザ向け設定ツールを起動します。
+ エンジン設定.exe は、エンジン設定.exe と同じフォルダにある吉里吉里実行可能ファイルを探し、自動的に -userconf オプションをつけて起動するプログラムです。
+
-about (著作権情報ダイアログボックスの表示)
+
 「バージョン・著作権・環境情報」のダイアログボックスを表示します。
+
-nosel (テストモード)
+
 「フォルダ/アーカイブの選択」ダイアログボックスを表示せず、また、data.xp3 などのデータを自動検出せずに、吉里吉里コントローラを起動します。デバッグやテスト用途に使用します。
+
-sel (「フォルダ/アーカイブの選択」ダイアログボックスの表示)
+
 「フォルダ/アーカイブの選択」ダイアログボックスを表示します。data.xp3 などのデータは自動検出されません。
+ コマンドラインパラメータとして(先頭にハイフンをつけずに)フォルダを指定すると、そのフォルダが初期状態で選択された状態で「フォルダ/アーカイブの選択」ダイアログボックスを開くことができます。
+
-printdatapath (データ保存場所の出力)
+
 データ保存場所 (-datapathオプション) の設定内容と改行を標準出力に出力し、終了します。このオプションは、吉里吉里本体と連携してセーブデータの管理を行う外部アプリケーションなどが利用するためにあります。
+ データ保存場所のうち、$(exepath) などの特殊な文字列は、置き換えられた後の状態で出力されます。
+ 吉里吉里本体は GUI アプリケーションのため、コマンドプロンプトから単に吉里吉里実行可能ファイルに -printdatapath オプションを指定して起動しても何も表示されません。出力内容を取り込むにはパイプやリダイレクトを用いてください。
+
+

システム全般のオプション +

+
+
-datapath (データ保存場所)
+
 吉里吉里が様々なデータを保存する場所(フォルダ)の設定です。
+ 設定可能な値は文字列で指定します。
+ 単純にフォルダ名をフルパスで指定することもできますが、通常は以下の特殊な文字列を埋め込んで使います。
+
+
+
$(exepath)
+
System.exePath(吉里吉里コアのあるフォルダ名)に置き換えられます。
+
$(appdatapath)
+
System.appDataPath(ユーザのホームフォルダ)に置き換えられます。このフォルダは通常、隠しフォルダになっています。
+
$(personalpath)
+
System.personalPath(マイドキュメントフォルダ)に置き換えられます。
+
$(vistapath)
+
OSがVista以降の場合に$(appdatapath)に、Vista未満の場合に$(exepath)に置き置き換えられます。

+デフォルトでは「$(exepath)\savedata」となっています。この設定は、インストーラなどを特に用いずにプログラムを zip 等で圧縮・アーカイブして配布し、ユーザにそれを展開して頂いてすぐにプログラム実行、という配布形態に適した設定です。
+しかし、このデフォルトの設定では、Program Files 以下にプログラムを配置した場合、Program Files 以下に書き込む権限がない、Windows XP 等の「制限ユーザ」等でプログラムを起動した場合に、ファイルを書き込むことができずにエラーになる可能性があります。
+「$(appdatapath)\アプリケーション名」や「$(personalpath)\アプリケーション名」のような名称にすれば、ユーザごとのフォルダに書き込まれることになりますのでこういう問題は発生しにくくなりますが、セーブデータ保存場所の見通しが悪くなるのでユーザがとまどうかもしれません。
+
+このオプションで指定されたデータ保存場所は、吉里吉里起動時に、もし存在していなければ作成が試みられます。作成が失敗してもそこで終了とはならずに処理が続行しますので、エラー処理はユーザのスクリプト内で(データが保存できないなどの例外を捕捉することにより)行ってください。
+
+「エンジン設定」で行った設定は、このデータ保存場所で指定したフォルダの中に作成されます。そのほか、各種ログも、標準ではこのフォルダの中に作成されます。
+
+
-contfreq (処理ウェイト)
+
 トランジション時などの処理をウェイトをかけながら指定の周期で呼び出すことにより、CPU使用率を低減させるかどうかの設定です。
+ 設定可能な値は '0' (ウェイトをかけない) あるいは正の整数で、このオプションを指定しないと '0' が指定されたものと見なされます。正の整数を指定した場合は Hz 単位の周期を指定することができます。
+ このオプションの影響を受けるのはトランジションや System.addContinuousHandler で登録した Continuous ハンドラです。
+ '0' にすると、トランジションを実行中などにCPUを使い切って処理を行います。
+ 数値を指定すると、その周期で処理を行うようになり、余った時間はCPUを休ませることになります。これにより、他のアプリケーションへの影響や、CPU温度の上昇、コンピュータの消費電力を抑えることができます。低い数値を指定すればするほどこの効果は高まります。ただし、低い数値を指定するとトランジションなどがなめらかでなくなる可能性があります。
+ waitvsync オプションで垂直同期待ちを行うと、Continuous ハンドラが垂直同期のタイミングに合わせて駆動されるようになり、contfreq オプションの設定内容は無視されます。
+ このオプションは動的に変更することが可能ですが、変更が反映されるのは次にトランジションや Continuous ハンドラの動作がとぎれた時です。
+
+ + + +
-memusage (メモリ使用量)
+
 メモリ使用量の設定です。
+ 設定可能な値は 'normal' (通常) あるいは 'low' (低い) で、このオプションを指定しないと 'normal' が指定されたものと見なされます。
+ 「低い」を選択すると「通常」を選択したときよりもメモリを節約して使用するようになります。しかし「低い」を選択すると、吉里吉里内部の様々なキャッシュ機構が制限されたり、 TJS2 のハッシュ表のサイズが制限されるため、パフォーマンスは低下します。また、「低い」を選択すると、「グラフィック-画像キャッシュ制限」は強制的に「キャッシュを行わない」の設定であると見なされます。
+
-timerprec (タイマの精度)
+
 タイマの精度の高さの設定です。
+ 設定可能な値は 'normal' (通常) あるいは 'higher' (やや高い) あるいは 'high' (高い) で、このオプションを指定しないと 'normal' が指定されたものと見なされます。
+ このオプションは NT 系 OS ( NT/2000/XP/Vista/7 ) でのみ意味を持ちます。Win9x 系の OS ( 95/98/98SE/ME ) ではこのオプションは無視されます。
+ 'higher' や 'high' を指定すると全体的にタイマ ( 時間やタイミングに関する物のほとんども含む ) の精度が高くなり、KAG での文字表示のもたつき感や MIDI 再生のもたつき感が解消される可能性がありますが、パフォーマンスが低下する可能性もあります。
+
-laxtimer (タイマイベント許容量制限)
+
 一度にシステムに蓄えられるタイマイベントの数 ( 最大発生許容量 ) を制限し、タイマイベントが溜まりすぎて処理できなくなる状況を回避するかどうかの設定です。
+ 設定可能な値は 'no' (しない) あるいは 'yes' (する) で、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 処理の非常に遅いコンピュータや、非常に重たい処理をタイマで駆動するような場面などでは、タイマによって発生したイベントに対応しきれず、操作などに吉里吉里が応答しづらくなる場合があります。このオプションで 'yes' を指定すると、システムに蓄えられるタイマイベントの最大発生許容量を常に 1 ( Timer クラスの capacity プロパティが 1 の状態 ) に固定します。これによりシステムが処理しきれないようなタイマイベントの発生を抑えることができますが、通常、タイマの精度や正確性は失われます。
+
+
-lowpri (低優先度)
+
 優先度を、トランジション時などに低くするかどうかの設定です。
+ 設定可能な値は 'no' (しない) あるいは 'yes' (する) で、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 'yes' にすると、トランジションを実行中など、吉里吉里のメインスレッドが連続して CPU を使用する場面になると、メインスレッドの実行優先度を下げるようになります。これにより、トランジション中の音飛びや、トランジション中に他のアプリケーションが操作しづらくなるなどの症状が改善される場合があります。
+ + +
+ +
+

入力関連のオプション +

+
+
-wheel (マウスホイール回転検出方法)
+
 マウスホイールの回転をどのように検出するかの設定です。
+ 設定可能な値は 'no' (使わない) あるいは 'dinput' (DierctInput) あるいは 'message' (ウィンドウメッセージ) で、このオプションを指定しないと 'dinput' が指定されたものと見なされます。
+ 「使わない」を選択するとマウスホイールは使用不可能になります。「DirectInput」を選択するとDirectInputを使用するようになります。「ウィンドウメッセージ」を選択するとDirectInputを使用せずにマウスホイールの回転を検出するようになります。設定を変えると、マウスホイール関連の不具合が改善される可能性があります。
+
-joypad (パッド使用可否)
+
ゲームパッド(ジョイスティック)を使用するかどうかの設定です。
+ 設定可能な値は 'no' (使わない) あるいは 'dinput' (使う) で、このオプションを指定しないと 'dinput' が指定されたものと見なされます。
+ 「使わない」を選択するとパッドは使用不可能になります。パッドを正常に検出できない場合、あるいはパッドを正常に使用できない場合に「使わない」の設定にしてください。
+ +
-paddelay (パッドキーリピートディレイ)
+
ゲームパッド(ジョイスティック)のキーリピートまでの時間をミリ秒単位で指定します。
+ 設定可能な値は正の数あるいは-1で、-1を指定するとキーリピートを行わなくなります。このオプションを指定しないと 500 が指定されたものと見なされます。
+ このオプションは動的に変更可能です。
+ +
-padinterval (パッドキーリピート間隔)
+
パッド(ジョイスティック)のキーリピートの間隔をミリ秒単位で指定します。値が小さいほどリピートが高速になります。
+ 設定可能な値は正の数で、このオプションを指定しないと 30 が指定されたものと見なされます
+ このオプションは動的に変更可能です。
+ +
-controlime (IME状態制御)
+
 IME(日本語などの変換入力ソフト)の状態制御(有効か無効かなどの制御)を行うかどうかの設定です。
+ 設定可能な値は 'yes' (行う) あるいは 'no' (行わない) で、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ 「行わない」を選択すると、「IMEを通じて入力を行う日本語などの言語の入力ができない」といった不具合を回避できる可能性があります。
+
+

サウンド関連のオプション +

+
+
-cdvol (CD-DA 音量制御方法)
+
 CD-DA 音量制御方式の設定です。
+ 設定可能な値は 'mixer' (サウンドカードミキサ) あるいは 'direct' (CD-ROMドライブ直接制御) で、このオプションを指定しないと 'mixer' が指定されたものと見なされます。
+ 'mixer' を指定するとサウンドカードのミキサを操作して CD-DA の音量を変化させます。CD-ROM ドライブから人間の耳に達するまでの経路にサウンドカードが適切に挟まっている必要があります。
+ 'direct' を指定すると CD-ROM ドライブそれ自身が持っている音量制御の機能を使って音量を変化させます。CD-ROM ドライブのヘッドホン端子から直接ヘッドホンなどを接続している場合などでも音量の制御ができますが、CD-ROM ドライブによっては対応していないものもあります。
+
-wsdecpri (PCM デコードスレッド優先順位)
+
 PCM のデコードを行うスレッドの優先順位です。
+ 設定可能な値は '0' (アイドル(最低)), '1' (低い), '2' (通常以下), '3' (通常), '4' (通常以上), '5' (高い) のいずれかで、このオプションを指定しないと '1' が指定されたものと見なされます。
+ 優先順位を高くすると PCM ( 無圧縮 wave や OggVorbis 等 ) の再生中の音飛びが軽減される場合がありますが、トランジションがなめらかでなくなったり、操作への応答性が悪くなる可能性があります。
+ ちなみにここで指定するのは通常時のデコードの優先順位で、緊急時 ( バッファにたまっている残りデータが短くなってきたとき ) は自動的に必要な優先順位を確保します。
+
-wssoft (DirectSound ソフトウェアミキシング)
+
 DirectSoundでソフトウェアを使ってミキシングを行うかどうかの設定です。
+ 設定可能な値は 'yes' (ソフトウェアミキシングを行う), 'no' (ソフトウェアミキシングを行わない) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ 標準の設定では、ソフトウェアでミキシングを行うので、CPUの負荷が高くなりますが、ハードウェア固有の不具合を回避できる可能性が高くなります。このオプションで 'no' を指定しても(ハードエアでミキシングを行っても) 問題がないならば、CPU 負荷を低くすることができる場合があります。USB オーディオや安価なサウンドカードでは、ミキシングは常に CPU で行う場合があるので、このオプションを変更しても影響が無い場合があります。
+
-wsrecreate (DirectSound セカンダリバッファ再生成)
+
 DirectSoundでセカンダリバッファを常に再生成を行うかどうかの設定です。
+ 設定可能な値は 'yes' (常に再生成), 'no' (必要に応じて再生成) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 吉里吉里ではいったん作成したセカンダリバッファは、チャネル数やサンプリング周波数などの条件が同一であれば再利用しますが、'yes' を指定すると再利用をせずに常に再生成するようになります。環境によっては再生開始時の音飛びや音切れなどの不安定性が改善される可能性があります。
+
-wsl1len (DirectSound セカンダリバッファ長さ)
+
 DirectSound セカンダリバッファの長さの設定です。
+ 設定可能な値は 整数で、ミリ秒単位で指定します。最低 250ms 必要です。このオプションを指定しないと 1000 が指定されたものと見なされます。
+ ここで指定するのは実際に DirectSound のセカンダリバッファとして確保されるバッファの長さです。
+ 一般に、長くとると再生は安定しますが、メモリを消費します。
+
-wsl2len (DirectSound セカンダリ補助バッファ長さ)
+
 DirectSound セカンダリバッファ用の2次バッファの長さの設定です。
+ 設定可能な値は 整数で、ミリ秒単位で指定します。最低 250ms 必要です。このオプションを指定しないと 1000 が指定されたものと見なされます。
+ 吉里吉里は、DirectSound のセカンダリバッファごとに補助バッファを作成し、いったんデコードしたデータをこの補助バッファに蓄積してからセカンダリバッファに転送します。ここで指定するバッファの長さはその補助バッファの長さです。
+ 通常、デコード処理と補助バッファへの蓄積は優先度の低いスレッドで行われますが、補助バッファからセカンダリバッファへの転送は高い優先度を持ったスレッドで行われます。
+ 一般に、長くとると再生は安定しますが、メモリを消費します。また、デコード処理に変化を加えるような制御をした場合、それが実際に発音されるまでのディレイが長くなります。
+
-wsmute (DirectSound ミュート)
+
 DirectSoundでアプリケーションが非アクティブあるいは最小化した際にミュートするか(音量を下げるか)の設定です。
+ 設定可能な値は 'never' (ミュートしない), 'minimize' (最小化時), 'deactive' (非アクティブ時) のいずれかで、このオプションを指定しないと 'never' が指定されたものと見なされます。
+ 'never' を選択するとミュートは行われません。'minimize' や 'deactive' では、それぞれアプリケーションが最小化したとき、非アクティブになったときにミュートされます。
+ ミュートされるのは WaveSoundBuffer で再生される物 ( KAGの場合は BGM に 'Wave' を使っている場合と、効果音 ) だけで、MIDI や CDDA 再生はミュートされません。
+
-wsmutevol (DirectSound ミュート音量)
+
 -wsmute (DirectSound ミュート) でのミュート時の音量の設定です。
+ 設定可能な値は 整数で、% 単位で指定します。
+ 「0%」を指定すると完全に無音となり、「50%」を指定すると半分の音量(約-6dB)となります。
+
+ +
-wsforcecnv (DirectSound 強制フォーマット変換)
+
 DirectSoundに再生させるPCMデータを、指定の形式に強制的に変換するかどうかの設定です。
+ 設定可能な値は 'none' (変換しない), 'i16' (16bit整数に変換) , 'i16m' (16bit整数モノラルに変換) のいずれかで、このオプションを指定しないと 'none' が指定されたものと見なされます。
+ 設定を変更すると再生時の障害が改善する場合があります。'i16m' を選択すると -wsexpandquad オプション ( DirectSound 強制4ch再生 ) の設定は無視されます。
+
-wsuse3d (DirectSound 3D制御)
+
 DirectSoundで3D制御を行うかどうかの設定です。
+ 設定可能な値は 'no' (しない), 'yes' (する) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 'yes' を選択すると、サウンドの 3D制御が有効になり、WaveSoundBuffer.posX, WaveSoundBuffer.posY, WaveSoundBuffer.posZ プロパティが有効になります (これらのプロパティは現バージョンでは既に実装されていますが、サポート外です)。
+ また、多くの環境では、'yes' を選択すると、DirectSound3D により、ステレオやモノラルのサウンドが、サラウンドスピーカーに拡張されて再生されるようになります (たとえば、フロントのスピーカーでしか再生されなかったサウンドが、5.1ch環境の全てのスピーカーで再生されるようになります)。
+ 'yes' を選択すると -wsexpandquad オプション ( DirectSound 強制4ch再生 ) の設定は無視されます。
+ + +
-wsexpandquad (DirectSound 強制4ch再生)
+
 DirectSoundでステレオやモノラルのサウンドを再生する場合に、強制的にリアスピーカーを含む4chで再生させるかどうかの設定です。
+ 設定可能な値は 'no' (しない), 'yes' (する) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 'yes'を設定すると、ステレオやモノラルのサウンドがフロントスピーカーでしか再生されない環境でも、フロントスピーカーとリアスピーカーの両方でサウンドを再生させることができます。
+
-wsfreq (DirectSound プライマリバッファ周波数)
+
 DirectSoundのプライマリバッファの再生周波数の設定です。
+ 設定可能な値は 正の自然数で周波数を Hz 単位で表し、このオプションを指定しないと '44100' が指定されたものと見なされます。
+ とくに WDM 系サウンドドライバを用いる環境 (Windows2000, XP以降 など) では、設定を変更しても再生状態に変化がない場合もあります。
+
-wsbits (DirectSound プライマリバッファビット数)
+
 DirectSoundのプライマリバッファの再生ビット数の設定です。
+ 設定可能な値は 'i8' (8bit整数), 'i16' (16bit整数), 'i24' (24bit整数), 'i32' (32bit整数), 'f32' (32bit浮動小数点数) で、このオプションを指定しないと 'i16' が指定されたものと見なされます。
+ とくに WDM 系サウンドドライバを用いる環境 (Windows2000, XP以降 など) では、設定を変更しても再生状態に変化がない場合もあります。
+
-wscontrolpri (DirectSound プライマリバッファ再生制御)
+
 DirectSoundのプライマリバッファに対して再生/停止の制御を行うかどうかの設定です。
+ 設定可能な値は 'yes' (行う), 'no' (行わない) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ まれに設定を変えると音飛びや音切れが改善される環境があるようです。
+
-wspritry (DirectSound プライマリバッファ設定試行レベル)
+
 DirectSoundプライマリバッファのフォーマットを指定する際にどれほど多くの設定を試すかの設定です。
+ 設定可能な値は '0' 〜 '2' (レベル0 〜 レベル2), 'all' (すべて) のいずれかで、このオプションを指定しないと 'all' が指定されたものと見なされます。
+ レベル 0 を指定すると、ステレオ 16bit整数のフォーマットの設定を試行します。
+ レベル 1 を指定すると レベル 0 を試行する前に、システムのスピーカー設定に従ったチャンネル数、16bit整数でのフォーマットの設定を試行します。
+ レベル 2 を指定すると レベル 1 を試行する前に、「DirectSound プライマリバッファビット数」で指定されたビット数、システムのスピーカー設定に従ったチャンネル数、WAVEFORMATEX 構造体によるフォーマットの設定を試行します。
+ 「すべて」を指定すると レベル 2 を試行する前に、レベル 2 と同様の設定で WAVEFORMATEXTENSIBLE 構造体によるフォーマットの指定を試行します。
+

グラフィック関連のオプション +

+
+
-gclim (画像キャッシュ制限)
+
 画像キャッシュに使用するメモリの最大値の設定です。
+ 設定可能な値は 'auto' (自動) または整数の値で、整数の値を指定する場合は画像キャッシュに使用するメモリを MB 単位で指定します。このオプションを指定しないと 'auto' が指定されたものと見なされます。
+ 吉里吉里はいったん読み込んだ画像を素早くアクセスできるように画像をキャッシュする機構を持っています。それに使用するメモリの制限値を指定します。
+ 'auto' を指定すると、コンピュータに実装されている物理メモリの量によって自動的に値が決定されます。
+ '0' を指定するとキャッシュは行いません。
+ 吉里吉里実行中にスワップが頻繁に発生するようであれば、この値を小さく指定するか、'0' を指定すると改善される可能性があります。
+
-fsmethod (フルスクリーン切り替え方法)
+
 フルスクリーン切り替えに用いる方法の設定です。
+ 設定可能な値は 'ddraw' (DirectDraw), 'cds' (ChangeDisplaySettings API) のいずれかで、このオプションを指定しないと 'ddraw' が指定されたものと見なされます。
+ 設定を変えるとフルスクリーン切り替えに関する問題が改善される場合があります。'ddraw' を指定した場合でも、DirectDraw が何らかの原因で使用できなかった場合は、自動的に ChangeDisplaySettings API を使用するようになります。
+ このオプションは動的に変更することが可能ですが、値が反映されるのは次回フルスクリーンにしようとしたときです。
+
+
-fsbpp (フルスクリーン時のカラーモード)
+
 フルスクリーン時のカラーモードの設定です。
+ 設定可能な値は 'nochange' (変えない), '16' (16bitカラー), '24' (24bitカラー), '32' (32bitカラー) のいずれかで、このオプションを指定しないと 'nochange' が指定されたものと見なされます。
+ 'nochange' を指定すると、非フルスクリーン時のカラーモードと同じカラーモードになります。
+ このオプションは動的に変更することが可能ですが、値が反映されるのは次回フルスクリーンにしようとしたときです。
+
+
-fsres (フルスクリーン時の画面解像度)
+
 フルスクリーン時の画面解像度の設定です。
+ 設定可能な値は 'auto' (自動), 'proportional' (縦横比が同じ解像度) , 'nearest' (最も近い解像度) , 'nochange' (解像度を変えない) のいずれかで、このオプションを指定しないと 'auto' が指定されたものと見なされます。
+ 'auto' を選択すると、最も適している画面解像度を自動的に選択して使用します。この場合は、縦横比が同じ解像度のうち、プログラム内で指定されている解像度にフィットする解像度があればそれを選択しますが、そのような解像度がない場合は解像度を変えずにエンジン側で拡大表示をします。この設定の場合は、-fszoom (フルスクリーン時のエンジンによる拡大表示) オプションに 'no' (しない) が指定されていても、常に 'outer' (モニタ内にフィットさせる) であるとみなされます。
+ 'proportional' を選択すると、画面の縦横比が非フルスクリーン時と同じ解像度のうち、プログラム内で指定されている解像度と同じかそれよりも大きく、もっとも近い解像度が選択されます。
+ 'nearest' を選択すると、プログラム内で指定されている解像度と同じかそれよりも大きく、最も近い解像度が選択されますが、非フルスクリーン時と同じ縦横比の解像度が選択される保証はありません。ブラウン管モニタや、画面のアスペクト比を保ったままでの拡大表示に対応している液晶モニタなどでは、この設定が適している場合があります。
+ 'nochange' を選択すると、非フルスクリーン時の解像度のまま、解像度を変更しなくなります。
+ このオプションは動的に変更することが可能ですが、値が反映されるのは次回フルスクリーンにしようとしたときです。
+
+
-fszoom (フルスクリーン時のエンジンによる拡大表示)
+
 フルスクリーン時に、エンジンによる画面の拡大をどのように行うかどうかを指定します。
+ 設定可能な値は 'inner' (モニタ内にフィットさせる), 'outer' (モニタいっぱいに拡大する), 'no' (しない) のいずれかで、このオプションを指定しないと 'inner' が指定されたものと見なされます。
+ 'inner' を選択すると、必要であれば、エンジンによる拡大を行います。必要な場合とは、画面解像度がプログラム内で指定された解像度と異なる場合です (もし画面解像度がプログラム内で指定された解像度よりも低い場合は縮小処理になります)。この際、プログラム内で指定されている解像度の縦横比を維持した状態での拡大を行いますが、モニタの縦横比とこの縦横比が異なる場合、上下、または左右に隙間ができる可能性があります。この隙間は常に真っ黒な状態で表示されます。
+ 'outer' を指定すると、'inner' を指定したときと同じく、必要であればエンジンによる拡大を行います。しかし、'inner' と違い、モニタの縦横比とプログラム内で指定されている縦横比が異なる場合、上下や左右の隙間ができないようにめいいっぱいまで拡大を行います。このため、隙間はできませんが、モニタ外に画面がはみ出す可能性があります。この設定では、たとえば 16:10 のモニタに 16:9 のコンテンツを表示する際などに、隙間をださずに、めいいっぱいまで拡大させて表示することが可能になります。もちろんこれにより、左右にはみ出す領域が発生しますので、このような表示を想定したコンテンツを制作するのならば、はみ出す部分には重要な UI や文字を表示しない、といった対策が必要になります。
+ 'no' を選択すると、必要であっても、エンジンによる拡大は行いません。この場合は、画面解像度がプログラム内で指定された解像度と異なっていても、エンジン側による拡大は行われません (その結果、画面中央に画像が小さく表示される可能性があります)。
+ モニタの本来の解像度とグラフィックカードの出力する信号の解像度が異なる場合、液晶モニタなどではモニタ側で拡大表示を行う場合がありますが、モニタ側で拡大処理をした上で、さらにエンジン側でも拡大表示を行うと二重に拡大が行われることになり、画像が汚くなる場合がありますので注意してください (-fsres の「自動」オプションは、このような二重の拡大表示を防ぐ組み合わせを自動的に選択します)。
+ 拡大表示処理は -dbstyle (ダブルバッファリング) オプションの影響を受けます。速度が異常に遅いなどの場合は、-dbstyle オプションの設定も変えてみてください。
+ このオプションは動的に変更することが可能ですが、値が反映されるのは次回フルスクリーンにしようとしたときです。
+
+ +
-gsplit (画像演算の分割処理)
+
 画像演算を細かく分割して行うかどうかの設定です。
+ 設定可能な値は 'yes' (行う), 'int' (インターレース分割), 'bidi' (双方向分割), 'no' (行わない) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ 吉里吉里は CPU のメモリキャッシュを有効的に使用するために、画像を描画するときに細かい領域に分割しながら演算を行います。環境によってはこれが画面のちらつきにつながるようです。そのような環境では 'no' を指定することによりちらつきを抑えることができる可能性がありますが、描画のパフォーマンスが低下する可能性もあります。ダブルバッファリングを有効にした場合は、分割処理を行わないことの意味が薄いため、分割処理を行う設定にすることをお勧めします。
+ 'int' を指定すると画像の演算の単位を一つおきに処理しますが、画面更新時に縞模様が見える事があります。'bidi' を選択すると画像の演算の順番において、上→下、下→上 を繰り返すようになります ( 'yes' の場合はつねに上→下 )。
+
-usedb (ダブルバッファリングを用いるかどうか)
+
 画像を表示するときにダブルバッファリングを用いるかどうかの設定です。
+ 設定可能な値は 'yes' (用いる), 'no' (必要な時以外用いない) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ ダブルバッファリングを行う設定にすると、画像をいったん別の場所 (オフスクリーンビットマップ) に描画し、一画面の更新分すべてを描画し終わった後、一気に表示領域に転送するようになります。これにより、画面のちらつきを抑えられる可能性がありますが、描画のパフォーマンスは低下します。
+ ダブルバッファリングを行わない場合は、各 分割領域の画像演算が終了した時点で、順次 表示領域に転送します。
+ また、ダブルバッファリングは、Window.setZoom などで表示内容の拡大表示を行う場合や、-fsres オプションで吉里吉里が拡大縮小処理を行う場合にも行われます。
+ ダブルバッファリングを行う場合は、 waitvsync オプションも 'yes' (行う) に設定することにより、ちらつきの抑制をさらに期待できます。
+ このオプションは動的に変更することが可能ですが、すぐに値が反映される保証はありません。
+
+
-dbstyle (ダブルバッファリング方式)
+
 画像を表示するときにダブルバッファリングを行う際、どの方式を用いるかの設定です。
+ 設定可能な値は 'auto' (自動), 'gdi' (GDIを用いる), 'ddraw' (DirectDrawを用いる), 'd3d' (Direct3Dを用いる) のいずれかで、このオプションを指定しないと 'auto' が指定されたものと見なされます。
+ ダブルバッファリングは、オフスクリーンビットマップの確保場所によって3つの方式があり、GDI を用いる方法と DirectDraw を用いる方法と Direct3D を用いる方法があります。
+ 'auto' が選択された場合、DirectDraw と Direct3D のどちらかを使うかを決めるために、0.6秒ほどの時間をつかってベンチマークを行い、高速な方を選択します。グラフィックカードの機能によっては、DirectDraw あるいは Direct3D では smoothzoom オプションで指定した方式でスムージングできない場合がありますが、その場合はそれぞれ候補から外されます。GDI によるダブルバッファリングは、DirectDraw や Direct3D よりも性能が大幅に低いことが多く、自動的には選択されませんが、DirectDraw と Direct3D のどちらも使用不可能な場合は自動的に GDI が用いられます。
+ このベンチマークは、ウィンドウが表示された直後や、フルスクリーンに切り替わった後、フルスクリーンから復帰した後に自動的に行われます。
+ 環境によっては、自動的に選択された方法によっては画面が正しく表示されない可能性があります。その場合は、明示的にこのオプションを使って方式を選択する必要があります。
+ このオプションは動的に変更することが可能ですが、すぐに値が反映される保証はありません。
+
+
-smoothzoom (拡大表示時のスムージング)
+
 Window.setZoom などで表示内容の拡大表示を行う場合や、-fsres オプションで吉里吉里が画面の拡大(縮小)表示を行う場合に、スムージング(拡大時の補間)を行うかどうかの設定です (Layer.affineCopy 等での拡大縮小とは関係ありません )。
+ 設定可能な値は 'no' (行わない), 'yes' (行う) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ スムージングを行うと、画像がなめらかになりますが、若干ぼけた感じになります。スムージングを行わないと、画像はシャープになりますが、ギザギザが目立つようになります。
+ dbstyle オプションが auto の場合、ここの指定によって使用される方式が変わる場合があります。
+ 環境によっては、スムージングを行わない方がパフォーマンスが低下する可能性があります。また、スムージングが効かない環境がある可能性があります。
+ サードパーティー製の描画デバイス ( Window.drawDevice プロパティで設定するデバイス ) によってはこのオプションの影響を受けない物もあるかもしれません。
+ このオプションは動的に変更することが可能ですが、すぐに値が反映される保証はありません。
+
+ + +
-waitvsync (垂直同期待ち)
+
 トランジション(画面切り替え)などでディスプレイの垂直同期を待ってから描画するかどうかの設定です。
+ 設定可能な値は 'yes' (行う), 'no' (行わない) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 'yes' を指定すると画面のちらつきを抑えられる可能性がありますが、描画のパフォーマンスが低下する可能性もあります。
+ このオプションで垂直同期待ちを行うと、Continuous ハンドラが垂直同期のタイミングに合わせて駆動されるようになり、contfreq オプションの設定内容は無視されます。
+ このオプションは動的に変更することが可能です。
+
+
-aamethod (アンチエイリアス文字描画方式)
+
 アンチエイリアス文字描画方法の設定です。
+ 設定可能な値は 'auto' (自動), 'res4' (リサンプリング4×4), 'res8' (リサンプリング8×8), 'api' (Windows API) のいずれかで、このオプションを指定しないと 'auto' が指定されたものと見なされます。
+ 'auto' の場合は現バージョンでは WindowsNT 系の OS では 'api'、Win9x 系の OS では 'res8' を自動的に選択します。
+ 'res4' または 'res8' では、数倍の大きさ (4×4 または 8×8) で文字を描画し、それを縮小することでアンチエイリアスを実現します。res4 の方が res8 よりも高速ですが、精度は低くなります。
+ 'api' では GetGlyphOutline API を用いてアンチエイリアス文字を描画しますが、いろいろと不都合の多い API のようで環境によっては正常に描画できない可能性があります。
+
-jpegdec (JPEG画像デコード精度)
+
 JPEG画像のデコード(展開)の精度の設定です。
+ 設定可能な値は 'high' (高い), 'normal' (標準), 'low' (低い) のいずれかで、このオプションを指定しないと 'normal' が指定されたものと見なされます。
+ 'high' を指定するとデコードは低速になりますが、画質は高くなります。'low' を指定するとデコードは高速になりますが画質は低くなります。しかし、見た目ではほとんど違いはありません。
+
-drawthread (描画スレッド数)
+
 描画処理時に、使用するスレッドの数の設定です。
+ 設定可能な値は任意の数値もしくは'auto' (自動)のいずれかで、このオプションを指定しないと '1'が指定されたものと見なされます。
+ 'auto'を指定すると、OSの認識するプロセッサ数と同数のスレッドが自動的に割り当てられます。
+ 描画スレッドを複数設定することで、マルチコア環境での描画パフォーマンスを向上させられる可能性がありますが、逆にパフォーマンスが低下する場合もあります。
+ 描画面積が大きい処理、Affine系の高負荷な処理、演算の重いレイヤ合成処理などに適用することで、良好な結果を得られる可能性があります。
+ マルチスレッドを使用するように設定しても、描画処理の負荷が軽くマルチスレッド化の効果が得られないとシステムが判断した場合は、マルチスレッドで実行されない場合があります。
+
+ +

CPU 機能関連のオプション +

+ 以下のオプションはすべて設定可能な値は 'yes' (使用可能であれば使用する), 'no' (使用可能であっても使用しない), 'force' (強制的に使用する) のいずれかで、オプションを指定しないと 'yes' が指定されたものと見なされます。
+ CPU の認識トラブルが起こった場合に 'no' に設定するとその機能を用いません。
+ 'force' は、その CPU 機能を検出しなくても強制的に使用するようになりますが、CPU にその機能がついていない場合はもちろん正常に動作しません。
+ 吉里吉里本体には -cpummx -cpucmov -cpusse -cpuemmx のオプションのみが影響を与えます。OggVorbis デコーダ (wuvorbis.dll) には -cpusse と -cpummx と -cpu3dn のオプションが影響を与えます。そのほかの(サードパーティーの)プラグインの中にも CPU 機能の設定の影響を受けるものがあるかも知れません。
+
+
+ + +

デバッグ関連のオプション +

+
+
-debug (デバッグモード)
+
 吉里吉里をデバッグモード ( → デバッグ ) で動作させるかどうかの設定です。
+ 設定可能な値は 'no' (無効), 'yes' (有効)のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。
+ 有効にすると、吉里吉里はデバッグモードで動作し、いくつかのデバッグ支援機能が有効になりますが、通常のモードよりも実行速度は低下します。
+ +
-forcelog (ファイルへのログ)
+
 コンソールのログをファイルに出力するかどうかの設定です。
+ 設定可能な値は 'no' (出力しない), 'yes' (既存のファイルに追加して出力する), 'clear' (既存のファイルをクリアしてから出力する) のいずれかで、このオプションを指定しないと 'no' が指定されたものと見なされます。 +
+
-logerror (エラー時のファイルへのログ)
+
 エラー時にコンソールのログをファイルに出力するかどうかの設定です。
+ 設定可能な値は 'no' (出力しない), 'yes' (既存のファイルに追加して出力する), 'clear' (既存のファイルをクリアしてから出力する) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。 +
+
-debugwin (デバッグ支援ウィンドウ)
+
 デバッグ支援ウィンドウ(コンソール、監視式など)を有効にするかどうかの設定です。
+ 設定可能な値は 'yes' (有効), 'no' (無効) のいずれかで、このオプションを指定しないと 'yes' が指定されたものと見なされます。
+ ユーザにデバッグ支援ウィンドウを使用させたくないときに 'no' を指定します。
+ + +

ホットキー関連のオプション +

+ 以下のオプションは、吉里吉里のホットキー関連のオプションです。
+ 設定できる値はMenuItem.shortcut プロパティで指定できる文字列と同様です。
+ 空文字列を指定すると(入力欄を空にしておくと)、その機能に対するホットキーは無効になります。
+ 他のホットキーと重複したキーを指定しないでください。
+
+
+ + + + + +

システム互換性関連のオプション +

+
+
-arcdelim (アーカイブデリミタ)
+
 アーカイブデリミタ (アーカイブストレージ名と、アーカイブ内ストレージ名の間を区切る文字) を指定します。
+ 設定可能な値は '>' ('>'を使う), '#' ('#'を使う) のいずれかで、このオプションを指定しないと '>' が指定されたものと見なされます。
+ アーカイブデリミタは、吉里吉里2 2.19 beta 14 で、従来の '#' から '>' に変更されました。
+ 2.19 beta 14 未満で動作していたアプリケーションはこの変更のため動作しなくなる可能性がありますが、このオプションでデリミタを '#' に変更することで動作させることができます。
+
+ +
-evalcontext (後置'!'演算子の動作)
+
 TJS2の後置'!'演算子の動作を指定します。
+ 設定可能な値は 'this' (this上で式を評価), 'global' (global上で式を評価) のいずれかで、このオプションを指定しないと 'this' が指定されたものと見なされます。
+ TJS2の後置'!'演算子は式をglobalコンテキスト上で実行していましたが、2.21 beta 9 より、this コンテキスト上で実行するようになりました。
+2.21 beta 9 未満を想定しているアプリケーションでは、この設定を「global上で式を評価」にしないと動作しない可能性があります。
+ +
-holdalpha (Layer.holdAlpha プロパティのデフォルトの値)
+
 Layer.holdAlpha プロパティのデフォルト値を指定します。
+ 設定可能な値は 'false' (偽), 'true' (真) のいずれかで、このオプションを指定しないと 'false' が指定されたものと見なされます。
+ 吉里吉里2 2.23 beta 4 で、各種演算関数に指定していた hda (アルファチャンネルを保護するか) オプションがなくなり、代わりに Layer.holdAlpha プロパティが作られました。この時点では Layer.holdAlpha のデフォルト値は真でした。Layer.holdAlpha が真の場合は過去のアプリケーションの動作に影響を与えません。
+ 吉里吉里2 2.23 beta 5 で、このデフォルト値が偽になりました。吉里吉里2 2.23 beta 5 未満を想定しているアプリケーションを動作させたい場合は、このオプションに「真」を指定しないと正常に動作しない可能性があります。
+ +
-unaryaster (前置'*'演算子の動作)
+
 TJS2の前置'*'演算子の動作を指定します。
+ 設定可能な値は 'default' (2.25以降の動作), 'compat' (2.25未満の動作) のいずれかで、このオプションを指定しないと 'default' が指定されたものと見なされます。
+ TJS2の前置'*'演算子は、プロパティオブジェクトそのものを、プロパティハンドラを介さずに取り出す演算子でしたが、2.25 beta 1 より、この機能を持つ演算子は前置の'&'となり、前置'*'演算子はプロパティオブジェクトのプロパティハンドラを動作させるための演算子となりました。2.25 beta 1 未満を想定しているアプリケーションでは、この設定を「2.25未満と互換」にしないと正常に動作しない可能性があります。
+ + +
+ + + + + + diff --git a/docs/kr2doc/contents/ComputerDependentProblems.html b/docs/kr2doc/contents/ComputerDependentProblems.html new file mode 100644 index 0000000..d959017 --- /dev/null +++ b/docs/kr2doc/contents/ComputerDependentProblems.html @@ -0,0 +1,93 @@ + + + + + + + 環境依存の不具合について + + + + + + + + +

環境依存の不具合 +

+エンドユーザ(二次ユーザ)の環境の不具合に起因する、吉里吉里の不具合とその対策です。
+吉里吉里の制作においては環境依存の不具合が出ないように尽力していますが、コンピュータの設定や構成は非常に多様である為、環境依存の不具合はどうしても発生してしまいます。
+個別の症状に対する対処で対応できる場合もありますが、全般的には、以下のような対策を講じていただいてください。
+
  • ドライバを最新の安定した物にしていただく
  • 常駐物(とくにウィルス対策ソフトウェアやメモリクリーナー系ソフト、ウィンドウ外見変更系ソフト、Windows互換シェルなど、他ソフトと競合を起こしやすい物)をはずしていただく
  • 各種チェックツール(「ディスクのチェック」(OS標準のディスクチェックツール)、memtest86など)でコンピュータをチェックしていただく
  • HDDの残り容量は十分あるかをチェックして頂く
  • WinFAQ (おだ氏のページ) などを参照して、似たような症状が起きてないかを探し、それに応じて対処して頂く
  • いったんセーフモードで起動してから通常モードで起動し直して頂く
  • CPUアクセラレータを使用している場合は、CPUの特定機能に制限がある場合がありますので、CPUアクセラレータのマニュアルをよく読んで頂き、場合によってはエンジン設定で個別のCPU機能を無効にする必要があります (例: http://buffalo.melcoinc.co.jp/qa/cpu/b4590010.html の場合はSSEを無効にしてください)
  • OSを再インストールしていただく
吉里吉里のエンジンに対して設定できるオプションは、ほとんどが環境依存の不具合の対処の為にあります。コマンドラインオプションもご覧ください。
+
+ +

環境依存の症状 +

+下記において「エンジン設定」とは、エンドユーザ向け設定ツール (エンジン設定.exe)のことです。
+ + +
+ + + +
インストールしたデータが壊れている
+
症状としては「読み込みエラーが発生しました」等の読み込みエラー系エラーの発生や「作品実行中にフリーズする」、「EAccessViolationエラーが出る」、そのほか予測不可能な動作をします。
+インストールしたデータが壊れている可能性があるので、「ファイル破損チェックツール」などを用いて、インストールしたデータが破損してないかを確認していただいてください。
+ +
フルスクリーン化に失敗する
+
フルスクリーンに失敗する場合、あるいはフルスクリーンからの復帰に失敗する(エラーが出る、フリーズする等の)場合は、エンドユーザの環境のDirectDrawに問題がある可能性があります。「エンジン設定」にて「フルスクリーン切り替え方法」を「ChangeDisplaySettings API」に変更していただいてください。
+ + +
画面切り替え時やスキップ時にフリーズする
+
画面切り替え(トランジション時)やKAGでのスキップ時など、画面描画が頻繁に起こる場面でフリーズする場合は、ディスプレイドライバに問題がある可能性があります。
+ディスプレイドライバのバージョンが最新の安定した物であるか確認し、古い場合は最新の安定したバージョンに変えて頂いてください。
+あるいは、「エンジン設定」にて「ダブルバッファリング方式」あるいは「垂直同期待ち」の設定を変えると改善する場合があります。
+nVIDIA製のグラフィックカードに付属してくるユーティリティである「nView Desktop Manager」をお使いの場合は、このユーティリティをアンインストールするか、無効にして頂いてください。
+
+
画面描画が異常に遅い
+
とくにフルスクリーン時に吉里吉里が画像を拡大して表示する場合や明示的にダブルバッファリングを有効にしている場合に、画面描画が異常に遅い場合は、「エンジン設定」にて「ダブルバッファリング方式」あるいは「垂直同期待ち」の設定を変えると改善する場合があります。
+また、モニタ側ではなくてエンジン側で拡大が行われている場合は、拡大に伴ってパフォーマンスが劣化する可能性があります。この場合はエンジン設定にて「フルスクリーン時の画面解像度」を「最も近い解像度」にすると、ディスプレイ側で拡大が行われるようになりますが、ディスプレイによっては正しいアスペクト比で画像を表示できない可能性があります。
+
画面が真っ暗のままになる、あるいは画像が乱れる
+
とくにフルスクリーン時に吉里吉里が画像を拡大して表示する場合などに画面が真っ暗のままになる、あるいは画像が乱れる、あるいはフリーズする場合は、「エンジン設定」にて「ダブルバッファリング方式」あるいは「垂直同期待ち」の設定を変えると改善する場合があります。
+
+ +
ビデオ再生に失敗する
+
オーバーレイによるビデオ再生に失敗する(エラーが表示される、フリーズする)場合、あるいはビデオ再生直後にフリーズする場合は、ハードウェアアクセラレーションを無効にすると改善する可能性があります。「画面のプロパティ」(デスクトップ上を右クリックして表示されるコンテキストメニューで「プロパティ」を選択して表示されるダイアログボックス)の「設定」タブで、「詳細設定」ボタンを押すと表示されるダイアログボックスの「トラブルシューティング」タブの「ハードウェアアクセラレータ」のツマミを、最大から順に「なし」の方向に動かしていって試行していただいてください。
+スクリプト側で、ビデオの再生をしないような設定を設けることもお勧めします。
+あるいは、「エンジン設定」にて「ダブルバッファリング方式」あるいは「垂直同期待ち」の設定を変えると改善する場合があります。
+
+ + +
サウンドがとぎれたり、鳴らなくなったり、サウンド再生中にフリーズする
+
サウンドカードや環境によっては、ブツブツと再生がとぎれとぎれになったり、ノイズが乗ったり、途中から音が聞こえなくなったりします。場合によってはサウンドの再生中に限ってフリーズするなどの症状が現れます。
+それがトランジション(画面切り替え)や重たいエフェクト中に発生するならば、エンジン設定で「システム全般-低優先度」を「する」に設定するか、「システム全般-CPU使用率低減」を「する」に設定することで改善する場合があります。
+そのほか、エンジン設定で、「サウンド-DirectSound ソフトウェアミキシング」の設定を変更しても改善する場合があります。
+あるいはコントロールパネルの「マルチメディア」(または「サウンドとマルチメディア」や「サウンドとオーディオ デバイスのプロパティ」)の「オーディオ」タブの「音の再生」の「詳細設定」を開き、「パフォーマンス」タブの「ハードウェア アクセラレータ」のスライダーを「なし」の方向に徐々に動かしつつ試行していただいてください。
+
+
操作がうまくできない
+
マウス移動支援やマウスジェスチャー実現ツールなどのソフトウェアが常駐していると、作品の操作をすることができない場合があります。このようなソフトの常駐を解除していただいてください。
+サードパーティの(OS標準ではない)マウスドライバを導入していると、操作系に不具合を生じる可能性があります。このような場合はサードパーティ製のドライバを無効にするかアンインストールし、OS標準のドライバを使っていただいてください。
+ゲームパッド対応ソフトウェアにおいてゲームパッド(ジョイスティック)がつながっている場合、パッドの不具合が原因で作品を操作できない場合があります。パッドの上に物が乗っている為にパッドのボタンが押された状態になってしまっていないかを、確認していただいてください。
+また、ゲームパッド(ジョイスティック)が接続されていないと、パッドのボタンが押されている状態として検知してしまう環境があります。このような場合は、パッドのドライバを無効にしていただいてください。
+ゲームパッドやジョイスティックの軸のセンターの調整が不十分のため操作に不具合がでる場合があります。この場合は、コントロールパネルの「ゲーム コントローラ」から、ゲームコントローラの調整をしていただいてください。
+どうしてもパッドのドライバを無効にできない場合は、吉里吉里側でパッドを使用しない設定にできます。エンジン設定で「パッド使用可否」を「使わない」に設定していただいてください。
+サードパーティ製のマウスドライバを使っている場合、ホイールでの入力できない可能性があります。この場合は、エンジン設定で「マウスホイール回転検出方法」を「ウィンドウメッセージ」に設定していただくと改善する可能性があります。
+
+ +
スラッシングが頻繁に起こる
+
メモリ不足が原因で、スラッシング(大量のスワップイン・スワップアウト)が頻繁に起こる場合があります。
+エンジン設定で「システム全般-メモリ使用量」を「低い」に設定すると改善する場合があります。
+ただし、パフォーマンスが低下しますので、「システム全般-メモリ使用量」のオプションは変更せずに、「グラフィック-画像キャッシュ制限」を「4MB」や「8MB」などの比較的低い値に設定することで、パフォーマンスをあまり低下させずにメモリ使用量を減らすことができる可能性があります。
+
+ + + + + +
+ + + + + diff --git a/docs/kr2doc/contents/Configure.html b/docs/kr2doc/contents/Configure.html new file mode 100644 index 0000000..4478b77 --- /dev/null +++ b/docs/kr2doc/contents/Configure.html @@ -0,0 +1,72 @@ + + + + + + + 吉里吉里設定 + + + + + + + + +

吉里吉里設定について +

+ 「吉里吉里設定」は、吉里吉里のオプションを GUI で設定できるツールです。
+ 「吉里吉里設定」には2種類あって、普通の「吉里吉里設定 (tools フォルダにある krkrconf.exe)」と、エンドユーザ向けの「エンジン設定 (エンジン設定.exe)」があります。
+ 普通の吉里吉里設定は主に制作者向けで、エンドユーザ向のほうは吉里吉里本体とともに配布し、エンドユーザ ( 2次ユーザ ) が自分自身である程度トラブルシューティングやパフォーマンスの調整をできるようにするためにあります。
+ 普通の吉里吉里設定の方は、最初に設定を行う吉里吉里実行可能ファイルをたずねてくるので指定してください。
+ エンジン設定.exe は、エンジン設定.exe が置かれているフォルダから吉里吉里実行可能ファイルを探し、それに -userconf オプションをつけて起動するプログラムです。従って エンジン設定.exe の動作には吉里吉里実行可能ファイル本体が必要です。
+
+ オプションの名前や設定可能な値やオプションの説明は、吉里吉里本体に内蔵されている情報を使います。吉里吉里設定と吉里吉里本体が同じ吉里吉里配布パッケージに入っていなかったものでも ( たいていは ) 大丈夫です。
+
+

設定ファイルについて +

+ 吉里吉里の設定ファイルは2種類あります。吉里吉里の実行可能ファイルと同じ場所に配置され、実行可能ファイルの名前の拡張子をcfに変えた物と、コマンドラインオプション の -datapath で指定されたデータ保存場所に配置された、実行可能ファイルの名前の拡張子をcfuに変えた物の二つです。
+ それぞれは2種類ある「吉里吉里設定」に対応し、前者は普通の「吉里吉里設定 (tools フォルダにある krkrconf.exe)」、後者はエンドユーザ向けの「エンジン設定 (エンジン設定.exe)」に対応します。
+ 「吉里吉里設定」やReleaserで設定を行った場合は .cf ファイルが作成されますが、このファイルは吉里吉里本体とともに配布しなければ、設定したオプションが反映されないので注意してください。
+ これらのファイルは、もし存在しなければ、吉里吉里設定やエンジン設定を起動し、OK ボタンを押下した際に作成されます。
+ そのほか、普通の「吉里吉里設定」の場合は、吉里吉里本体に一部のオプションを直接埋め込みます。
+
Note
+設定ファイルの中は、一行ずつ、「名前="値"」の記述が並んでいます。"値"の部分は \xNN が連続している形になっており、それぞれが UNICODE におけるコードポイントの値となっています。たとえば opt="\x61\x62\x63\x3042\x3044\x3046" と記述してある場合は、これは「abcあいう」を表します。他のアプリケーションなどからこれらのファイルに書き込む際は注意してください。
+なお、opt="abcあいう" のように \xNN 形式を使わずに記述した場合、吉里吉里本体はこれを正しく認識することができますが、吉里吉里設定やエンジン設定はこの形式を認識することができずに、想定した動作をしない可能性があります。値の両側のダブルクオーテーションも必須です。

+
+ +

吉里吉里設定の画面 +

+ 吉里吉里設定画面は以下のようになります。
+
+Configure.png
+
+( エンドユーザ向けの吉里吉里設定 (エンジン設定.exe) には「アイコン」のグループと「非表示」のチェックボックスはありません )
+
+
+
「オプションの名前」
+
 設定できるオプションが一覧表示されています。
+ コマンドラインオプション も参照してください。
+
「オプションの値」
+
 「オプションの名前」で選んだオプションに対して設定できるオプションの値が一覧表示されます。
+ 選択してください。
+
「オプションの説明」
+
 「オプションの名前」で選んだオプションに対する説明が表示されます。
+
「非表示」
+
 このチェックボックスがチェックされた状態のオプションは、エンドユーザ向け設定ツールでは表示されません。ユーザに隠したいオプションを指定するときにチェックします。
+
「リリースオプション」
+
 いくつかの、ユーザーが通常の操作では設定不可能なオプションを指定できます。
+
+
メッセージマップファイルを読み込まない
+
メッセージマップファイル(msgmap.tjs)を起動時に読み込みません。
+
XP3アーカイブのみから実行
+
dataフォルダやコマンドラインから指定されたプロジェクトフォルダを読み込まず、必ず data.xp3 あるいは data.exe、あるいは Releaser で本体に結合されたアーカイブからのみ実行をします。
+
「アイコン」
+
 実行可能ファイルのアイコンを変えることができます。
+ 吉里吉里設定が使用しているアイコン変更のアルゴリズムは完全ではないので、一度アイコンの変更を行うと別のアイコンに変更できなくなる可能性があります。
+ + + + + diff --git a/docs/kr2doc/contents/Configure.png b/docs/kr2doc/contents/Configure.png new file mode 100644 index 0000000000000000000000000000000000000000..85db9bb0c638c5ddc65c13ab8abc310d6d07e7fa GIT binary patch literal 19003 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/Console.html b/docs/kr2doc/contents/Console.html new file mode 100644 index 0000000..02739ff --- /dev/null +++ b/docs/kr2doc/contents/Console.html @@ -0,0 +1,44 @@ + + + + + + + コンソール + + + + + + + + +

コンソールについて +

+ コンソールは、実行中に Shift + F4 を押すことにより表示することができます。
+ コンソールでは、吉里吉里のシステムや、ユーザスクリプトが Debug.message メソッドで出力する様々なデバッグ用メッセージを表示することができます。また、TJS2 式を入力してその場で実行し、式の結果を表示させる事もできます。
+
+

画面の説明 +

+Console.png
+
+左下にある ExecIcon.png はクリックすることにより、その右にある入力欄に入力されたものを TJS2 式として実行することができます。
+
+右クリックメニューの説明です。
+
+
CopyIcon.png コピー
+
 コンソールの選択部分をクリップボードにコピーします。
+
ControllerIcon.png コントローラ
+
 コントローラ を表示します。
+
ScriptEditorIcon.png スクリプトエディタ
+
 スクリプトエディタ を表示します。
+
ExprWatchIcon.png 監視式
+
 監視式 を表示します。
+
エラー時に自動的に表示する
+
 エラーが発生したときに自動的にコンソールを表示するようにします。

+
+ + + + diff --git a/docs/kr2doc/contents/Console.png b/docs/kr2doc/contents/Console.png new file mode 100644 index 0000000000000000000000000000000000000000..fa210c6073a674394ef2724220df17fe86f7d981 GIT binary patch literal 8533 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/Controller.html b/docs/kr2doc/contents/Controller.html new file mode 100644 index 0000000..59951db --- /dev/null +++ b/docs/kr2doc/contents/Controller.html @@ -0,0 +1,48 @@ + + + + + + + コントローラ + + + + + + + + +

コントローラについて +

+ コントローラは、実行中に Shift + F1 を押すことにより表示することができます。
+ コントローラでは、各デバッグ支援ウィンドウを開いたり、イベント発生の停止や TJS コンテキストのダンプ、メッセージマップファイルの作成、システムの強制終了をすることができます。
+
+

画面の説明 +

+Controller.png
+
+
+
ScriptEditorIcon.png スクリプトエディタ
+
 スクリプトエディタ を開きます。
+
ExprWatchIcon.png 監視式
+
 監視式 を開きます。
+
ConsoleIcon.png コンソール
+
 コンソール を開きます。
+
EventIcon.png イベント発生
+
 イベントの発生を制御します。押し込まれた状態ではシステムにイベントが発生し、押し込まれてない状態ではイベントは発生しません。吉里吉里は基本的にイベント駆動型のプログラミングモデルですので、イベントが発生しない状態ではプログラムが停止することになります。例外がどこにも捕捉されなかった場合、自動的にイベントは発生しなくなります。
+ このボタンは System.eventDisabled プロパティと連動しています。
+
TJS コンテキストのダンプ (コンテキストメニュー内)
+
 TJS2 スクリプトエンジンが保持している各コンテキストのダンプ ( 主に逆アセンブル ) がファイルに出力されます。Scripts.dump メソッドと同様の動作をします。
+
メッセージマップファイルの作成 (コンテキストメニュー内)
+
 吉里吉里に内蔵されている各メッセージのリストと、それに対応するメッセージの現在の設定を出力します。このファイルは吉里吉里本体と同じ場所に置くことで、吉里吉里の起動時に自動的に読み込ませてメッセージの再設定を行えるものです。デフォルトの名前は msgmap.tjs になります。
+
スクリプトエンジンの再起動 (コンテキストメニュー内)
+
 TJS2スクリプトエンジンを再起動します。これによりTJS2が初期化されますが、これによりシステム全体や内部状態が再起動するわけではありません。場合によっては再起動の際にエラーが発生します。
+
ExitIcon.png プログラムの強制終了
+
 プログラムを強制的に終了します。

+
+ + + + diff --git a/docs/kr2doc/contents/Controller.png b/docs/kr2doc/contents/Controller.png new file mode 100644 index 0000000000000000000000000000000000000000..96f19def6054a4fe8539288d939cbab1e1a92e17 GIT binary patch literal 885 zcmV-*1B(2KP)>A?H(m4&subE3NDKr)+N2xu{V%aRAQC?RAV@pY z&Cg#$9crHEY5n#4&)=c0^z_y1oy~ZkcBPojdi>-isW*(?KBo09)(fZis~!>hKLnIqH+F)a0 zCAI2@sx(jr((1Y?5=#3M0X0Q4GCrG|@_Yb40TF#^cFl<6d|MHpvO* z|M3j~bEs+Vp3d1!)8vu(+b3buaK6E8U`>NBcRZq)5X=$Jb#QnKCcLMPZyXW`Ny|o4 z(4syK`X*}9QU#6Z)1YsJK22Z)40Pr3KvWoy^9>0G@~BnQAQ+=>ls&Y-#?V8X*?1%Z z8|Wd9jjv`WVq^D>U>#dc6HQaIrdcog^svoZKa=+ip)O;MkA zDQtxG4c7}`HULk|rfx5=W>`?Qnxl}t(~+Cmwm~$$nW$0j8%!l4WM?C!L!a5^L6pAP^0@3;N1<Xbp6_$Dw7Jp1TM7(6T+ zm<~A?LPjtcIgS#H;Y^hC4Wv@;o4BCiT-exYtXn)Q_eSXznb}T20?@E1MGE3^wC4=?hnt|6?9(#&@71*(?e(1m^H2UTZF>-7UDe?ziH)_51FoTw9-IU-WM8wN=w@ y9+&v8-M25y)bRI?_(K<03qGq5l;J(tVn6dyj_!h`=avGkVDNPHb6Mw<&;$Uw2w&g; literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/CopyIcon.png b/docs/kr2doc/contents/CopyIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..59a2347b0031d57f386e85e72f9c9cfcbdc63073 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2#?#ZqF@z&J^sKf}LjaHS zMUQE6pWD_d8s_s)EnR3oL-Ex)LEUdW;z^>D-pIE#$EfOUbhQfaY?PVUf8cY1_naNx hMs|rhi}&yU$dDEgAM50OZ8FeM22WQ%mvv4FO#p6MQa%6x literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/Copyrights.html b/docs/kr2doc/contents/Copyrights.html new file mode 100644 index 0000000..5a46e32 --- /dev/null +++ b/docs/kr2doc/contents/Copyrights.html @@ -0,0 +1,202 @@ + + + + + + + 著作権など + + + + + + + + +

著作権/ライセンス +

+ SDK 付属の license.txt をご覧ください。
+ 以下は著作権やライセンスに関する FAQ あるいは多くの方が疑問に思うであろう事です。
+ 原則は license.txt に書かれている通りですので、必ず license.txt に目を通してください。
+ ここに書かれている事と license.txt に書かれていることがもし食い違っていた場合、license.txt に書かれていることのほうが優先されます。
+ 画像形式に ERI を使用する場合は 恵理ちゃんclub にある著作権関係のドキュメントに目を通してください。
+
+
+
吉里吉里の作者にお金を払わないとならないのでしょうか・・・
+
 その必要はありません。
+
商用 ( シェアウェア含む ) で利用したいのですが・・・
+
 商用でも利用できます。
+ 商用でも、利用に関しライセンス料等は必要ありません。無償で利用できます。
+
作品中にお名前をお借りしたいのですが・・・
+
 特に吉里吉里を使用したということをドキュメントなどに書く必要はありません。
+ もちろん、書いてくださっても結構です(^^;
+
作品が完成したら吉里吉里の作者に知らせなければならないのでしょうか・・・
+
 吉里吉里を使用したことを通知する義務はありません。商用の場合でも通知の義務はありません。
+ ただ、一言声をかけてくださるときっと喜びます、はい。
+
吉里吉里のソースを流用したいのですが・・・
+
 吉里吉里2は GNU GPL と独自のライセンスのデュアルライセンスです。GNU GPL に従ってソースを流用することもできます。独自のライセンスの方 ( license.txt に書いてあります ) にて流用する場合は、吉里吉里のソースを流用したことをそのソフトウェアなどのドキュメントに記述するか、あるいは、吉里吉里の作者にソースを流用したことを通知しなければなりません。
+

謝辞 +

+ 吉里吉里2は多くの方の協力があって成り立っています。みなさまのご厚意に感謝いたします。
+ 特に吉里吉里/KAGに関してPIA少尉様には多くの助言をいただきました。ありがとうございます。
+
+ Win32Ole プラグインをはじめとする様々なプラグインは Go Watanabe 氏からいただきました。ありがとうございます。
+
+ Photoshop互換のブレンド関数群は Kenjo 氏からいただきました。ありがとうございます。
+
+ ゲームパッド対応コードは Kiyobee 氏から頂きました。ありがとうございます。
+
+ KAGParser クラスのドキュメント、KAGの拡張は Kouhei Yanagita 氏からいただきました。ありがとうございます。
+
+ 吉里吉里のアイコンは MIK 氏によるものです。ありがとうございます。
+
+ レイヤによるムービー再生などのムービー再生に関する様々な機能は 井元 武則 氏による「ムービー拡張」を取り込ませて頂きました。ありがとうございます。
+http://www.kaede-software.com/
+
+ ブラーの実装は yun 氏から頂いたコードが元になっております。ありがとうございます。
+
+ mey氏からはPad関連の機能強化パッチ、String.reverse() などの実装をいただきました。ありがとうございます。
+
+ 以下は吉里吉里が使用しているプログラミングライブラリ/支援ソフトウェアのリストです (順不同, 敬称略)。有用なライブラリを公開されている方々に感謝いたします。
+
+
+
IJG JPEG Library (Independent JPEG Group)
+
http://www.ijg.org/
+ This software is based in part on the work of the Independent JPEG Group.
+
libpng (Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson, and others)
+
http://www.libpng.org/pub/png/libpng.html
+
zlib (Jean-loup Gailly, Mark Adler)
+
http://www.gzip.org/zlib/
+
ERINA-Library (L.Entis)
+
http://www.entis.jp/eri/
+ ERINA-Library Copyright (C) 2001 Leshade Entis, Entis-soft.
+
Regex++ (Dr John Maddock)
+
http://ourworld.compuserve.com/homepages/John_Maddock/regexpp.htm
+ Regex++ Copyright (c) 1998-2000 Dr John Maddock
+
UPX (Markus F.X.J. Oberhumer & Laszlo Molnar)
+
http://upx.sourceforge.net/
+
Shell Component Library (伊藤 隆志)
+
http://www.bekkoame.ne.jp/~itotaka/
+
NASM, The Netwide Assembler (Simon Tatham, Julian Hall and others)
+
http://nasm.sourceforge.net/
+
alink (Anthony A.J. Williams)
+
http://alink.home.dhs.org/
+
md5.c (L. Peter Deutsch)
+
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
+
libogg/libvorbis (Xiph.Org Foundation)
+
http://www.xiph.org/
+
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met:
+
+- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ +
Ogg Vorbis 高速化プロジェクト
+
吉里吉里2は、blacksword 氏による Ogg Vorbis 高速化プロジェクトで公開されている、 SSE 対応の FFT 演算コードを Phase Vocoder の内部で使用しています。http://homepage3.nifty.com/blacksword/
+
+
A C-program for MT19937 (Makoto Matsumoto and Takuji Nishimura)
+
http://www.math.keio.ac.jp/matumoto/emt.html
+
+Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved.
+ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met:
+
  1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution.
  3. The names of its contributors may not be used to endorse or promote +products derived from this software without specific prior written +permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ +
LibTomCrypt (Tom St Denis)
+
http://libtomcrypt.org/
+
+ + + + +
AGG (Anti-Grain Geometry)
+
http://antigrain.com/
+
+The Anti-Grain Geometry Project
+A high quality rendering engine for C++
+http://antigrain.com
+
+Anti-Grain Geometry - Version 2.3
+Copyright (C) 2002-2005 Maxim Shemanarev (McSeem)
+
+Permission to copy, use, modify, sell and distribute this software +is granted provided this copyright notice appears in all copies. +This software is provided "as is" without express or implied +warranty, and with no claim as to its suitability for any purpose.
+ + +
Expat
+
http://expat.sourceforge.net/
+
+Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+
+Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions:
+
+The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ + + + diff --git a/docs/kr2doc/contents/CutIcon.png b/docs/kr2doc/contents/CutIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe4f1286a76f92171370713ce64a7422f521f1 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k>$Q-g#gP=v1}$S?RmGGK5$aOVV2#>&&hF@z(!^z=eT1_O>G2jUy% zYGu`zvzYA;5m5}@3FnWiU!Dmx Og~8L+&t;ucLK6VZwMM}J literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/Debug.html b/docs/kr2doc/contents/Debug.html new file mode 100644 index 0000000..ee4808f --- /dev/null +++ b/docs/kr2doc/contents/Debug.html @@ -0,0 +1,101 @@ + + + + + + + デバッグ + + + + + + + + +

アプリケーションのデバッグについて +

+ デバッグとは、アプリケーション内にあるバグ(機能不全や想定しない動作の原因)を特定し、修正する作業です。
+ 吉里吉里はいくつかのデバッグ支援機能を持っていますので、その機能を用い、アプリケーションをデバッグします。その方法について説明します。
+

デバッグ支援ウィンドウ +

+吉里吉里はデバッグを支援するためのウィンドウをいくつか提供しています。詳しくは各リンクの説明を参照してください。
+
+
コントローラ
+
各デバッグ支援ウィンドウを開いたり、イベント発生の停止や TJS コンテキストのダンプ、メッセージマップファイルの作成、システムの強制終了をすることができます。
+
スクリプトエディタ
+
簡単な TJS スクリプトの編集とその実行をすることができます。また、例外が発生したとき、その例外の発生位置を指し示すために「スクリプトエディタ (例外通知)」というスクリプトエディタのウィンドウが開く場合があります。
+
監視式
+
多くの式の結果を一度に確認することができます。
+
コンソール
+
吉里吉里のシステムや、ユーザスクリプトが出力する様々なデバッグ用メッセージを表示することができます。また、TJS2 式を入力してその場で実行し、式の結果を表示させる事もできます。

+ 特にコンソールでは、Debug.message によってユーザプログラムがプログラム中で出力したメッセージが表示されます。プログラムの任意の場所でメソッドを呼び出し、変数の内容をコンソールに表示させ、実行中の変数の内容を見ることができます。
+ また、コンソールの下部の入力欄にTJS2式を入力し、Enterキーを押すことでその式をその場で実行することができます。これは、実行中のオブジェクトのメソッドを直接呼び出したり、オブジェクトのプロパティや変数に値を代入する際に便利です。
+ コンソールへメッセージを表示する方法やログをファイルに記述する方法については、コマンドラインオプション の 「デバッグ関連のオプション」や Debug クラス を参照してください。
+
+ +

デバッグモード +

+ コマンドラインオプション で '-debug' を指定する (「デバッグモード」を'有効'にする) と、吉里吉里をデバッグモードで動作させることができます。
+ デバッグモードではTJS2の動作は低速になりますが、デバッグに便利ないくつかの機能が有効になります。
+
+
+
型情報追跡機能
+
 TJS2のオブジェクトに関する情報が強化されます。
+ デバッグモードではない場合は、たとえば KAG で kag.saveSystemVariables の情報を得ようとしてコンソールに kag.saveSystemVariables と入力しても +
+コンソール : kag.saveSystemVariables = (object)(object 0x0279E130:0x01EB0BD4) +
+ + と表示されるだけですが、デバッグモードが有効の場合は +
+コンソール : kag.saveSystemVariables = (object)(object 0x0279E130[(function) KAGWindow.saveSystemVariables]:0x01EB0BD4[instance of class KAGWindow]) +
+ + のように型の情報が表示されます (':' で区切られた2つの部分のうち、前の部分はオブジェクトの型、後ろの部分はそのオブジェクトが動作するコンテキストです )。
+ この機能は、コンソールで値を表示させる場合にとどまらず、(現バージョンでは)オブジェクトが文字列に変換される過程すべてで有効になります。
+
+
オブジェクトリーク検出機能
+
 削除されていない(解放されていない)オブジェクトを終了時に警告する機能が有効になります。
+ TJS2は本来、ガベージコレクション機能により、作成されたオブジェクトは自動的に削除され、明示的な削除の指示は必要ありません。しかし、プラグインや吉里吉里本体のバグ、循環参照が原因で、オブジェクトが削除されないままになる(リークする)可能性があります。
+ デバッグモードでは、終了時になってもまだ解放されていないオブジェクトがコンソールのログファイルに書き出されます。
+ たった一個のオブジェクトが解放されなかっただけでも、そのオブジェクトに関連するオブジェクトが全て検出されるため、ログファイルが巨大になる可能性がありますので注意してください。
+
+ System.exit メソッドは、アプリケーションを強制終了に近い形で終了させるもので、このメソッドでアプリケーションを終了させると多くのオブジェクトがリークし、大量のログが記録されますので注意してください。
+
Note
+循環参照とは、A は B を参照している、B は A を参照しているという状況の事です。
+たとえば、以下のスクリプトは循環参照を生成します。 +
+var a = %[], b = %[];
+a.b = b; b.a = a;
+
+ +このような状況では、オブジェクト a は b を必要とし、オブジェクト b は a を必要としています。TJS2が採用しているガベージコレクションの方法(参照カウンタ)はこのような状況を検出してオブジェクトを解放するのは困難であるため、TJS2ではこのような状況を検出しません。そのため、いつまで経ってもこれらのオブジェクトが削除されることはありません (明示的に invalidate 演算子でどちらかのオブジェクトを無効化すると循環参照を断ち切ることができます)。
+
+プラグインでは、参照カウンタの扱いを誤るとオブジェクトがリークする可能性があります。プラグインを作成して、その中でTJS2オブジェクトを扱う場合は、参照カウンタの扱いに十分注意してください。
+

+
+
削除中のオブジェクトでのスクリプト実行の警告
+
 オブジェクトは、削除あるいは無効化されるときに finalize メソッドが呼ばれます。
+ オブジェクトが削除されるタイミングは、TJS2では「いつになるかわからない」ため、変なタイミングで finalize メソッドがよばれ、予期しない挙動を示す場合があります。デバッグモードでは、このような「不安定なタイミング」、つまり無効化されなかったオブジェクトがガベージコレクションによって削除され、finalizeメソッドが呼ばれたときに、警告がコンソールに表示されるようになります。
+ 警告は以下のような物です。
+ +
+警告: anonymous@0x016DFA7C(9)[(function) finalize]: 削除中のオブジェクト 0x0167DD44[instance of class A] 上でコードが実行されています。このオブジェクトの作成時の呼び出し履歴は以下の通りです:
+                     anonymous@0x016DFA7C(13)[(top level script) global]
+
+ + このような状況を防ぐため、new で作成したオブジェクトは、使用し終わったら明示的に invalidate 演算子で無効化することを推奨します。
+ ただし、Array や Dictionary、Date のように finalize メソッドがない、あるいは finalize メソッドでは特に問題を起こすような動作を起こさないクラスのオブジェクトについては、明示的な無効化は必要ない場合があります。
+ 上記の警告は、明示的な無効化が無いままオブジェクトが削除されようとし、そのコンテキスト上でTJS2スクリプトが実行されようとした場合に表示されます。
+
呼び出し履歴の取得機能
+
 TJS2 の関数/メソッド呼び出し履歴をスクリプトから取得できるようになります。
+ これには Scripts.getTraceString メソッドを用います。
+ プログラムの途中に何か問題があり、そのメソッドがどこから呼ばれたのか分からない場合に、このメソッドを使って、呼び出し履歴をコンソールに出力したりができるようになります。
+
+
+ + + + diff --git a/docs/kr2doc/contents/DeleteIcon.png b/docs/kr2doc/contents/DeleteIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba4a74b84c5200e1bc5bf733d4b59cb01ae3794 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2CdkvpF@!^w_25BXW<>#( z4GS5LluhWmEdA$QaxAZAg6kWG6mgrPV^7ZXX}#(yKeIXNM(Ff}HEM6PS~k{AzELV_ r7-p@z+wR9HN%8eROyoW`@g0!Ys*7|y-e|uMXgY(ZtDnm{r-UW|@9$V* literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/EventIcon.png b/docs/kr2doc/contents/EventIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..818e0681980a079be27f52e971716800297fa687 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k>$Q-g#gP=v1}$S?RmGGK5$aOVV2#>LacF@z)9^~^>=1_ci017Bo* zuTMNLq%$E_MIn8axxxeP84OZeESh6-f{z|JRBg%JC2qyK_y3O<)@!>O`FLwSO3i)9 Z>bTi&_8!g3w?Ok4JYD@<);T3K0RZ5eOS%96 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/EventSystem.html b/docs/kr2doc/contents/EventSystem.html new file mode 100644 index 0000000..d307c2c --- /dev/null +++ b/docs/kr2doc/contents/EventSystem.html @@ -0,0 +1,95 @@ + + + + + + + イベントシステム + + + + + + + + +

イベントシステムについて +

+ 吉里吉里で TJS スクリプトを記述する場合、イベント駆動型のプログラミングモデルを採る必要があります。
+ イベントは「何かが起こった」ときに、他のオブジェクトや、自分のオブジェクト内にそれを通知するために発生します。イベントハンドラにはこれに応答する処理を書くことになります。
+ 吉里吉里では一つのイベントハンドラで必要以上に長い時間がかかることは好ましくありません。時間を待ちたいときは Timer クラスを用いることをおすすめします。
+
+

同期イベントと非同期イベント +

+ 同期イベントとは、たとえばサウンドバッファで再生を開始した場合に、その play メソッド内で onStatusChanged イベントが発生するように、オブジェクトの操作を行うとすぐにその場で発生するイベントです。
+ これに対し、非同期イベントとは、吉里吉里内部にあるイベントキュー ( 発生させるイベントを一時保管している場所 ) に一時的に蓄積されます。このイベントはすべての他のイベントハンドラの処理が終わるまで発生せず、他のイベントハンドラ内では発生しません(ただし例外があるので下記 note を参照してください)。タイマー周期が来て発生する onTimer イベントなどや、ユーザからの入力により発生するすべてのイベントは非同期イベントです。
+
Note
+ Window.showModal のような一部の、ユーザからの入力を得ようとするような機能は、イベントキューを動作させる (イベントを配信する) ことがあります。これにより、イベントハンドラ中で別の非同期イベントが発生する可能性はあります。

+ 非同期イベントをスクリプトの操作で発生させるために AsyncTrigger クラスがあります。
+
+

画面反映のタイミング +

+ ウィンドウにレイヤを表示するための画面反映のタイミングは非同期イベントと同じで、すべての他のイベントハンドラの処理が行われたあとです。一つのイベントハンドラ内で何度描画を行っても、内部的な画像バッファには描画されていますが、画面にはすぐに反映はされません。イベントハンドラからぬけて、吉里吉里が描画のタイミングを得たときに初めてウィンドウに内容が描画され、反映されます。
+
+

クラス内でのイベントハンドラ +

+ クラス内で発生したイベントはそのクラス内で、スーパークラスのイベントハンドラをオーバーライドすることによりハンドリングする事ができます。
+ たとえば、Timer クラスからサブクラスを作成し、以下のようにイベントハンドラを作成することができます。
+ +
+class MyTimer extends Timer
+{
+    function MyTimer()
+    {
+        super.Timer(...);
+    }
+
+    function onTimer()
+    {
+        // ( ここに onTimer の処理 )
+        super.onTimer(...); // スーパークラスのメソッドは一応呼び出す
+    }
+}
+
+
+ + スーパークラスのメソッドは呼び出す必要はありませんが、一般的には呼び出します。また、スーパークラスのメソッドは呼ばないと後述の action メソッドによるイベントハンドリングができません。
+
+

actionメソッド +

+ Layer クラスや WaveSoundBuffer クラスなどは、コンストラクタに指定したオーナーの action メソッドにイベントを発生する機能があります。
+ action メソッドには辞書配列オブジェクトの引数が一つ渡され、ここにイベントの情報が入っています。
+ 辞書配列のメンバのうち、 target はイベントの発生元オブジェクトを表しています。type はイベント名を表しています。
+ その他のメンバはイベントによって異なります。たとえば、Layer.onClick イベントならば、x と y というメンバがあり、レイヤ上をクリックされた場所を表します。
+ +
+例:
+class MyWindow extends Window
+{
+    var layer;
+    (略)
+    function MyWindow()
+    {
+        super.Window(...);
+        add(layer = new Layer(this /* this = オーナー */, null));
+        layer.visible = true;
+    }
+    (略)
+    function action(ev)
+    {
+        if(ev.type == "onClick" && ev.target == layer)
+        {
+            // layer がクリックされた
+            System.inform(ev.x, ev.y);
+        }
+    }
+}
+
+
+ +
+ + + + diff --git a/docs/kr2doc/contents/ExecIcon.png b/docs/kr2doc/contents/ExecIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..6514a3b362c6359b8f73b2b49908329542c817e8 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k>$Q-g#gP=v1}$S?RmGGK5$aOVV2#?aHnF@$4g@(ylR9*$#?5|7VB zN-!T{GCZJTzgTe~DWM4f DL;FE* literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ExitIcon.png b/docs/kr2doc/contents/ExitIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..5f25e657f0efedfb12dea01ead5022f0f8013821 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2#?#ZqF@$4gXzxNn21B01 zKFqtSR|bTiVv + + + + + + 監視式 + + + + + + + + +

監視式について +

+ 監視式は、実行中に Shift + F3 を押すことにより表示することができます。
+ 監視式では簡単に多くの式の結果を一度に確認することができます。
+ また、一定時間ごとに結果の表示を更新させることもできます。
+ ちなみに式の結果は変更があったときに自動的に更新されるわけではありません。手動で表示を更新するか、あるいは一定時間ごとに自動的に更新させる必要があります。イベントハンドラ中での変数の変化を追従して表示することもできません。イベントハンドラを実行中に表示更新の時間が来たとしても、すべてのイベントハンドラから吉里吉里本体に制御が戻ったときに表示が更新されます。
+
+

画面の説明 +

+ExprWatch.png
+
+右クリックメニューの説明です。
+
+
NewExprIcon.png 新規の式
+
 監視式を新しく追加します。
+
DeleteIcon.png 削除
+
 選択されている監視式を削除します。
+
式の編集
+
 選択されている監視式を編集します。
+
UpdateIcon.png 更新
+
 結果を更新します。
+
AutoUpdateIcon.png 自動更新
+
 結果表示を一定時間ごとに自動的に更新しします。
+
自動更新の間隔
+
 自動更新を行う間隔を設定します。
+
ControllerIcon.png コントローラ
+
 コントローラ を表示します。
+
ScriptEditorIcon.png スクリプトエディタ
+
 スクリプトエディタ を表示します。
+
ConsoleIcon.png コンソール
+
 コンソール を表示します。

+
+ + + + diff --git a/docs/kr2doc/contents/ExprWatch.png b/docs/kr2doc/contents/ExprWatch.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7a7e08f10b26c4b15d68afed4c51bb49dd2ce6 GIT binary patch literal 5062 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/FileChkTool.html b/docs/kr2doc/contents/FileChkTool.html new file mode 100644 index 0000000..6c5090b --- /dev/null +++ b/docs/kr2doc/contents/FileChkTool.html @@ -0,0 +1,79 @@ + + + + + + + ファイル破損チェックツール + + + + + + + + +

ファイル破損チェックツールについて +

+ インストール時やインストール後のコンピュータの不調などにより、データは破損します。
+ 「ファイル破損チェックツール」は、そのような「破損した」ファイルを検出する為のツールです。
+
+ ファイルの破損を検出する為には、あらかじめキー・署名ツールで、配布ファイルに署名を行っておかなければなりません。
+ ファイル破損チェックツールは、その電子署名の正当性も検査します(正当性が確認できないファイルは、このツールでは「破損」として扱われます)。
+ チェックの対象となるファイルは、このファイル破損チェックツールの置いてあるフォルダ以下のファイルとなります (ファイル破損チェックツールの置いてあるフォルダの階層下のフォルダも検索します)。そのため、このツールはインストール先フォルダに配置してください。
+ このツールがチェックするファイルは署名の行われているファイルのみで、署名の行われていないファイルに対してはチェックを行いません。しかし例外的に吉里吉里本体(やReleaserで作成された実行可能ファイル)だけは必ず署名のチェックを行うので、吉里吉里本体は必ず署名をしてください。
+
Note
+ファイル破損チェックツールは、ファイルの破損は検出できますが、「ファイルが存在しない」という状態は、それ自体では検出できません。
+ファイルの不足がエラーの原因であると考えられる場合は、このツールの「結果をコピー」で、このツールがチェックしたファイルの一覧をクリップボードにコピーできますので、それをエンドユーザから送って頂いて調査してください。
+

+
+ +

ファイル破損チェックツールの設定ファイル +

+ enduser-tools フォルダにある 「ファイル破損チェックツール.exe」がファイル破損チェックツールの本体ですが、その設定ファイルは「ファイル破損チェックツール.ini」となります。
+ ここにはファイル破損チェックツールの設定を書き込み、チェックツールの本体とともに配布する必要があります。
+
Note
+ 「ファイル破損チェックツール.exe」の名称を変更した場合は、設定ファイルの名称も変更してください。たとえば「署名確認ツール.exe」にした場合、設定ファイルは「署名確認ツール.ini」にしてください。

+以下に設定可能な項目を説明します。
+
+
[message]セクション - notice
+
 画面上部に表示するメッセージを指定します。
+ notice= で始まる行は一行で(改行をいれずに)記述しなければなりませんが、[cr] を書くとそこに改行を入れることができます。
+
[message]セクション - caption
+
 ウィンドウのタイトルバーに表示する文字列を指定します。
+
+
[key]セクション - publickey
+
 電子署名の確認に用いる為の公開鍵を指定します。
+ ここには、直接 ('設定名=' のようなものを記述せずに) 、公開鍵をコピー&ペーストして指定してください。
+
 例は標準の(吉里吉里2 SDK配布ファイル内の)「ファイル破損チェックツール.ini」を参照してください。
+

使い方 +

+
+ ファイル破損チェックツール.exe を起動すると以下の画面が表示されます。
+sigchk.png
+
+
+
+
ファイル名一覧
+
 チェック対象となるファイルの一覧が表示されます。
+ 「状態」欄には「チェック中」「未チェック」「正常」「破損」のいずれかが表示されます。
+ ファイルが破損していた場合は、該当ファイルは「破損」と表示されます。
+
+
チェック
+
 チェックを開始します。
+ 大きなファイルのチェックには時間がかかります。
+
結果をコピー
+
 結果をクリップボードにコピーします。
+ エンドユーザがチェックした結果を送って頂く際に便利です。
+ チェックが完了すると、有効状態(ボタンが押せる状態)になります。
+ 結果はタブ区切りのデータで、左から順に、ファイル名、ファイルの日付、ファイルサイズ、チェックの結果、となります。
+ また、対象ディレクトリ化にある全てのファイルとディレクトリの一覧もコピーされます。想定していないファイルが存在する可能性がある場合は、この出力を見てチェックを行うことができます。
+
+
閉じる
+
ウィンドウを閉じます。
+ + + + + diff --git a/docs/kr2doc/contents/Files.html b/docs/kr2doc/contents/Files.html new file mode 100644 index 0000000..aecffc7 --- /dev/null +++ b/docs/kr2doc/contents/Files.html @@ -0,0 +1,127 @@ + + + + + + + ファイル/フォルダ覧 + + + + + + + + +

ファイル/フォルダ覧 +

+ここでは、吉里吉里に関連するファイルやフォルダを説明します。
+すべてのファイルを網羅するわけではありません。特に注意が必要なファイルが中心になっています。吉里吉里2 SDK 配布アーカイブのフォルダ構造については readme.txt を参照してください。
+便宜上、KAGに関連するファイルも掲載しています。
+
+

フォルダ +

+
+
plugin
+
吉里吉里がプラグインを探すフォルダです。吉里吉里は、吉里吉里の実行可能ファイルがあるフォルダにこのフォルダがあると、その中に配置されているプラグインを参照します。→ プラグインについて
+ +
tools
+
吉里吉里は、吉里吉里の実行可能ファイルがあるフォルダにこのフォルダがあると、その中からkrdevui.dllを探します(吉里吉里本体がkrdevui.dllを使うのは、最初にフォルダ/アーカイブの選択のダイアログボックスを表示するときだけです)。
+ +
datacontent-data
+
吉里吉里吉里の実行可能ファイルがあるフォルダにこのフォルダがある場合、フォルダをプロジェクトフォルダと見なして実行します。→ 起動の仕方
+

ファイル +

+
+
*.xp3
+
吉里吉里用のアーカイブファイルです。→ Releaser
+ +
data.xp3data.exe
+
吉里吉里は、このファイルが吉里吉里の実行可能ファイルと同じフォルダにある場合、それをプロジェクトフォルダとみなして実行します。→ 起動の仕方
+ +
*.tpm
+
吉里吉里用のプラグインで、起動時に自動的に読み込まれる物です。→ プラグインについて
+ +
krdevui.dll
+
吉里吉里の開発用ツールが共通で使用するDLLです。このファイルをエンドユーザ向けの配布物に同梱する必要はありません。吉里吉里本体もこのファイルを使用しますが、吉里吉里本体が krdevui.dll を使うのは、最初にフォルダ/アーカイブの選択のダイアログボックスを表示するときだけです。
+ +
krflash.dll
+
吉里吉里で Flash の再生を行う場合に必要になります。Flash 再生を行わない場合はエンドユーザ向けの配布物にこれを同梱する必要はありません。→ VideoOverlayクラス
+ +
krmovie.dll
+
吉里吉里で WMV/MPG の再生を行う場合に必要になります。ビデオ再生を行わない場合はエンドユーザ向けの配布物にこれを同梱する必要はありません。→ VideoOverlayクラス
+ +
*.dll
+
吉里吉里用のプラグインの場合は、エンドユーザ向けの配布物に同梱しなければなりません。もちろん、必要のないプラグインを同梱する必要はありません。→ プラグインについて
+ +
krkr.eXe
+
吉里吉里本体です。エンドユーザ向けに配布する際にファイル名を変更してもかまいません。
+ +
*.cf と *.cfu
+
吉里吉里本体に対するオプションが記述されたファイルです。「吉里吉里設定」(krkrconf.exe)で吉里吉里本体に指示したオプション(これには-datapathオプションの指定などが含まれます)を有効にするためには、エンドユーザ向けの配布物にこれも同梱する必要があります。→ 吉里吉里設定
+ +
エンジン設定.exe
+
エンドユーザ向けの設定ツールです。エンドユーザ向けの配布物に同梱することが推奨されます。吉里吉里2 SDK 配布時は enduser-tools 内に入っていますが、エンドユーザに配布する際は、吉里吉里の実行可能ファイルと同じフォルダに配置する必要があります。→ 吉里吉里設定
+ +
ファイル破損チェックツール.exe とその .ini ファイル
+
ファイル破損チェックツールです。エンドユーザ向けに配布する際にファイル名を変更してもかまいませんが、その場合は .exe ファイルと .ini ファイルの両方の名前を同じ物にしなければなりません。吉里吉里2 SDK 配布時は enduser-tools 内に入っていますが、エンドユーザに配布する際は、通常、吉里吉里の実行可能ファイルと同じフォルダに配置する必要があります。→ ファイル破損チェックツール
+ +
startup.tjs
+
TJSスクリプトファイルです。吉里吉里は、プロジェクトフォルダ直下のこのファイルを探し、一番最初に実行します。→ 起動の仕方
+ +
*.tjs
+
TJSスクリプトファイルです。
+ +
msgmap.tjs
+
メッセージマップファイルです。作成した覚えがないならば、このファイルをエンドユーザ向けの配布物に同梱する必要はありません。→ コントローラ
+ +
*.sig
+
キー・署名ツールが出力する署名ファイルです。ファイル破損チェックツールなどが参照します。→ キー・署名ツール
+ +
*.rpf
+
Releaserのプロファイルです。Releaserの設定情報が記録されています。このファイルはエンドユーザ向けの配布物に同梱する必要はありません(Releaser ではこのファイルを自動的に除外します)。→ Releaser
+ +
krenvprf.kep
+
吉里吉里本体のデバッグ支援ウィンドウの設定内容を保持するファイルで、-datapath オプションで指定された位置に作成されます。このファイルをエンドユーザ向けの配布物に同梱する必要はありません(Releaser ではこのファイルを自動的に除外します)。
+ +
hwexcept.log
+
吉里吉里本体がクラッシュした際に、-datapath オプションで指定された位置に作成される可能性があります。クラッシュといっても様々な状況がありますが、このファイルが作成されていた場合はかなり重症のクラッシュですので、エンドユーザから回収し、必要であれば吉里吉里の作者まで送ってください。このファイルはエンドユーザ向けの配布物に同梱する必要はありません。
+ +
*.console.log
+
吉里吉里のコンソールのログファイルです。通常、吉里吉里がクラッシュした際などに、-datapath オプションで指定された位置に作成される可能性があります。このファイルが記録するログはほとんどの場合は、スクリプトの記述ミスに起因する物です。アプリケーションの開発中、あるいはエンドユーザに配布した後はエンドユーザから回収し、デバッグに役立ててください。このファイルをエンドユーザ向けの配布物に同梱する必要はありません。
+ +
*.dump.txt
+
TJSのダンプファイルです。このファイルをエンドユーザ向けの配布物に同梱する必要はありません。→ コントローラ
+ +
*.sli
+
ループチューナが出力する、ループ定義ファイルです。→ ループチューナ
+ +
*.tft
+
レンダリング済みフォントデータ作成ツールが出力する、レンダリング済みフォントデータです。→ レンダリング済みフォントデータ作成ツール
+ +
*.png *.jpeg *.jpg *.tlg *.bmp
+
画像ファイルです。→ グラフィックシステム
+ +
*.wav *.tcw *.ogg
+
音声ファイルです。→ サウンドシステム
+ +
*.wmv *.mpg
+
動画ファイルです。→ VideoOverlayクラス
+ +
*.ks
+
KAGのシナリオファイルです。
+ +
*.ksd *.kdt
+
KAGのセーブデータです。
+ +
*.asd
+
KAGのアニメーション定義ファイルです。
+ +
*.ma
+
KAGの領域アクション定義ファイルです。
+
+ + + + diff --git a/docs/kr2doc/contents/FolderSelector.png b/docs/kr2doc/contents/FolderSelector.png new file mode 100644 index 0000000000000000000000000000000000000000..03648f7a31f6b06063572c200e055cc726dc9f6e GIT binary patch literal 8012 zcmX|m3p|tm7ynSXbQwjGSh}f%L?r1El_cq+be~!!Nr=$R$E}ddqJ*fW5*4ZBQqo*E zxnD{uzQb}$Vy@5T*>nE$`~P46?Y-CbI_I

^z@y&inIT_@3R?vlSL9P$-nyHaoWN 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/FontMaker.html b/docs/kr2doc/contents/FontMaker.html new file mode 100644 index 0000000..894fa4d --- /dev/null +++ b/docs/kr2doc/contents/FontMaker.html @@ -0,0 +1,72 @@ + + + + + + + レンダリング済みフォントデータ作成ツール + + + + + + + + +

レンダリング済みフォントデータ作成ツールについて +

+ レンダリング済みフォントデータ作成ツールは、レンダリング済みフォント のデータを作成するためのツールです。Font.mapPrerenderedFont で実際のフォントに割り当てることができるものです。
+ レンダリング済みとは、つまりあらかじめフォントをレンダリング ( この場合は TrueType アウトラインフォントを展開し、ビットマップフォントに変換すること ) しておいたもの、という意味です。これを使わない場合は、吉里吉里は必要に応じて実行時にレンダリングを行います。
+ レンダリング済みフォントは、制作者側の環境で作成するため、このフォントを使えばプレーヤ側の環境に左右されることなく同じフォントを使うことができます。
+ レンダリング済みフォントのデータはビットマップフォントデータです。つまり TrueType のようにスケーラブル ( 大きさを自由に変えられる ) フォントではないため、一つのフォントファイルでは一つの固定の大きさのフォントのみを扱うことになります。
+
Note
+ レンダリング済みフォントのデータを作成しようとする元のフォントの著作者が、このような用途 ( そのフォントから作成した多数の文字のビットマップデータをゲームなどとともに配布し、そのビットマップデータを組み合わせて文字表示に用いること ) でそのフォントが使用されることを許可しているかどうかが定かでない場合は、そのフォントの著作者に確認をとることをお勧めします。
+ ちなみにこのレンダリング済みフォントのファイルは吉里吉里独自の形式のもので、他の用途に流用される可能性はほとんどありません。
+ 吉里吉里の作者は、このソフトウェアを使用して発生したいかなる問題にも関知しません。
+

+
+ このツールは OS の UNICODE サポートに強く依存しているため、Windows95 では動作しません。Windows 98/98SE/ME や Windows NT 4.0 では動作しますが一部の機能が制限されます。Windows 2000/XP ならばすべての機能を使用することができます。
+ もちろん、OS の種類による制限を受けるのはこのフォントを作成する環境でのことで、このツールで作成したレンダリング済みフォントデータを利用する側の OS の種類は関係ありません。
+
+

レンダリング済みフォントデータ作成ツールの使い方 +

+FontMaker.png
+
+ レンダリング済みフォントデータ作成ツール ( tools フォルダにある krkrfont.exe ) を実行すると、上の画面が表示されます。
+
+
+
「フォント名」
+
 レンダリング済みフォントデータを作成する元となるフォント名を指定します。縦書き用フォントを作成したい場合は先頭に @ マークのついたフォントを選択してください。
+
「すべての TrueType フォントを表示」
+
 チェックしない場合は 文字種が日本語であるフォントのみを「フォント名」に一覧表示しますが、チェックした場合はすべての TrueType フォントを表示します。
+
「サイズ(文字高さ)」
+
 作成するレンダリング済みフォントのサイズ ( 文字の高さ ) をピクセル単位で指定します。
+
「アンチエイリアス」
+
 アンチエイリアス処理を行うかどうかを指定します。アンチエイリアス処理を行うとフォントがなめらかになります。
+
「太字」
+
 太字にするかどうかを指定します。Windows NT 系の OS ( NT4, 2000, XP, Vista, 7 等 ) でのみチェックすることができます。
+
「フォント内のすべての文字を含める」
+
 フォント内に存在するすべての文字を含めるかどうかを指定します。Windows NT 系の OS ( ただし NT4 を除く ) でのみチェックすることができます。
+ チェックすると、フォント内に含まれているすべての文字を出力するようになります。
+ チェックをしないと、Shift JIS に該当する文字と半角英数/カナのみが出力されます。
+
Note
+ チェックをしなかった場合の動作は、このツールの動作するロケールによって異なります。通常、日本語版 Windows 上で動作させる場合は Shift JIS に該当する文字などのみが出力されると言うことです。( といっても作者は日本語版 Windows 以外を持ってないのでわかりませんが )
+

+
+
「外字を含める」
+
 外字を含めるかどうかを指定します。Windows NT 系の OS ( ただし NT4 を除く ) でのみ選択することができます。その他の OS では常にチェックされた状態になります。
+ 外字は Windows 付属の「外字エディタ」などで作成することができます。
+
「サンプル」
+
 選択された条件で作成されるレンダリング済みフォントのサンプルを表示します。この「サンプル」では、出力されるすべての文字を確認することができます。
+
「出力ファイル」
+
 出力するファイルを指定します。出力するファイルの拡張子は .tft になります。「参照」をクリックするとダイアログボックスでファイルを指定することができます。
+
「作成」
+
 レンダリング済みフォントファイルを作成します。
+
「閉じる」
+
 このツールを終了します。
+ + + + + diff --git a/docs/kr2doc/contents/FontMaker.png b/docs/kr2doc/contents/FontMaker.png new file mode 100644 index 0000000000000000000000000000000000000000..70918013b15d3feef8172c732758608a9b35bea4 GIT binary patch literal 4044 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 SgNu9ja28!{L$DNUP5ckxDvSvL literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/GraphicSystem.html b/docs/kr2doc/contents/GraphicSystem.html new file mode 100644 index 0000000..b78b7ab --- /dev/null +++ b/docs/kr2doc/contents/GraphicSystem.html @@ -0,0 +1,280 @@ + + + + + + + グラフィックシステム + + + + + + + + +

グラフィックシステムについて +

+ 吉里吉里は、レイヤによるグラフィックの表示機構を持っています。
+ 各レイヤはアルファブレンドによる透過重ね合わせや階層構造管理機能を持っています。また、レイヤを GUI 部品 (ウィジット) として動作させることができるように、ユーザからの入力を受け取るための機構 ( フォーカス ) を持っています。
+
+ 重ね合わされたレイヤは、描画デバイスと呼ばれる機構にて、ウィンドウに描画されます。デフォルトでは PassThroughと呼ばれる、単純にレイヤの出力をウィンドウに描画するだけのデバイスが使用されます。描画デバイスはWindow.drawDeviceプロパティを操作することで自由に差し替えられるようになっており、用途に応じた演出効果などをユーザが独自に(プラグインの形式で)定義することとができますが、吉里吉里2が内蔵しているのは前述のPassThroughデバイスのみです。
+

読み込み可能な画像形式 +

+ 標準状態の吉里吉里で、Layer.loadImages でレイヤに読み込むことのできる形式は以下の通りです。
+
+
+
BMP
+
 Windows 標準のビットマップ形式です。32 bpp の BMP はアルファチャネル付きビットマップと見なされます。
+ RLE圧縮されたビットマップは読み込むことができません。
+
PNG
+
 Portable Network Graphic 形式を読み込むことができます。アルファチャネル付きビットマップ PNG も読み込むことができます。
+
JPEG
+
 JPEG 形式を読み込むことができます。算術圧縮されたものや可逆圧縮のものは読み込むことができませんが、そもそも滅多に見かけないのでかまわないかと思います。
+
ERI
+
 L.Entis 氏の提唱する可逆圧縮フォーマットです。アルファチャネル付きのものも読み込むことができます。
+
TLG5
+
 吉里吉里独自の可逆圧縮フォーマットです。拡張子は .tlg です。アルファチャネル付きのものも読み込むことができます。圧縮率はさほど高くありませんが、高速に展開できるのが特徴です。この形式はマスク画像(_m) あるいは領域画像 (_p) に使用することはできません。アルファチャンネル無しのフルカラー画像、あるいはアルファチャンネル付きのフルカラー画像のみを扱うことができます。
+
TLG6
+
 吉里吉里独自の可逆圧縮フォーマットです。拡張子はTLG5と同じく .tlg です。TLG6は高い圧縮率が特徴です。展開速度はTLG5の2倍弱かかりますが、それでもPNGの2倍以上高速に展開でき、サイズもPNGより2〜4割小さくなります。
+
メイン/マスク分離形式
+
 メイン/マスク分離形式は、色情報の画像(メイン) とアルファチャネル(マスク) の画像が分離している形式で、マスク画像は、メイン画像のファイル名に _m が付加されたものとなります ( たとえば、abc.jpeg に対して abc_m.jpeg )。
+ メイン/マスク画像の形式が異なっていてもかまいません。

+ その他、Susie Plug-in を使って読み込み可能な画像形式を増やすことができます。Susie plug-in は Plugins.link メソッドで読み込むことができます。
+ Susie Plug-in から 32bpp のビットマップが渡された場合は、アルファチャネル付きビットマップと見なされます。
+
+
+

レイヤタイプ +

+ 吉里吉里のレイヤは様々な合成モード(レイヤタイプ)で表示することができます。
+ 以下の合成モードがあり、lt で始まるレイヤタイプ定数を Layer.type プロパティに指定することができます。
+ なお、式中の result は結果、dest は重ね合わせ先の画像の輝度、src は重ね合わせる画像の輝度、αは重ね合わせる画像のピクセルごとのアルファ値で、すべて値の範囲は 0.0 〜 1.0 とします。
+ また、ここでは説明のために以下の関数を定義します。
+
  • abs(a) : a の絶対値
  • max(a, b) : ab のどちらか大きい方
  • min(a, b) : ab のどちらか小さい方
  • blend(a, b, r) = a × (1.0 - r) + b × r

+
+
ltOpaque (ltCoverRect)
+
 ltOpaque は透過を伴わない表示です。常にレイヤの矩形全体が完全不透明な表示になります ( このレイヤタイプに限りませんが、Layer.opacity で不透明度を下げている場合はそれに従います )。
+
+式 : result = src
+
Note
+ltCoverRect でも同じ意味になりますが、2.23 beta 2 未満における古い名称です。

+
+
ltAlpha (ltTransparent)
+
 ltAlpha はアルファ合成を行います。透過を行う際のもっとも基本的なタイプです。BMP や Susie plug-in からのアルファチャネルの入力においても下記の式が使われます。
+
+式 : result = blend(dest, src, α)
+
Note
+ltTransparent でも同じ意味になりますが、2.23 beta 2 未満における古い名称です。

+
+
ltAddAlpha
+
 ltAddAlpha は加算アルファ合成を行います。
+ 画像フォーマットコンバータでこの形式に適した画像を出力できます。また、Layer.convertType メソッドで ltAlpha からこの形式に変換することができます。
+ ltAddAlphaのレイヤは、ltAlpha のレイヤの直接の子になると正常に表示できません。
+
+式 : result = min(1.0, dest × ( 1.0 - α ) + src)
+
+
ltAdditive
+
 ltAdditive は加算合成を行います。光彩の表現に適しています。Photoshopにおける「覆い焼き(リニア)」ですが、Photoshopと同じ効果を得たい場合は後述の ltPsAdditive を使用してください。ltPsAdditive と違い、ltAdditive では αは無視されます。
+ 中性色 (重ね合わせても変化のない色) は黒です。
+
+式 : result = min(1.0, dest + src)
+
+
ltSubtractive
+
 ltSubtractive は減算合成を行います。αは無視されます。
+ 中性色は白です。
+
+式 : result = max(0.0, dest + src - 1.0)
+
Note
+ result = dest - src と違うのは src が反転しないかするかの違いだけです。

+
+
ltMultiplicative
+
 ltMultiplicative は乗算合成を行います。αは無視されます。
+ 中性色は白です。
+
+式 : result = dest × src
+
ltDodge
+
 ltDodge は「覆い焼き」合成を行います。光に照らされたものの表現に適しています。αは無視されます。
+ 中性色は黒です。
+
+式 : result = min(1.0, dest ÷ ( 1.0 - src ) )
+
+
ltLighten
+
 ltLighten は「比較(明)」合成を行います。αは無視されます。
+ 中性色は黒です。
+
+式 : result = max(dest, src)
+
+
ltDarken
+
 ltDarken は「比較(暗)」合成を行います。αは無視されます。
+ 中性色は白です。
+
+式 : result = min(dest, src)
+
+
ltScreen
+
 ltLighten は「スクリーン乗算」合成を行います。αは無視されます。
+ 中性色は黒です。
+
+式 : result = 1.0 - ( 1.0 - dest ) × ( 1.0 - src )
+
+ + +
ltPsNormal
+
 ltPsNormal は ltAlpha と同じ効果を持ちます。歴史的な理由で ltAlpha とは別のルーチンや名称となっています。
+ +
ltPsAdditive
+
 ltPsAdditive はPhotoshop互換の「覆い焼き(リニア)」合成(加算合成)を行います。ltAdditive と違い、αは無視されません。
+ 中性色は黒です。
+
+式 : result = blend(dest, min(1.0, dest + src), α)
+
+
ltPsSubtractive
+
 ltPsSubtractive はPhotoshop互換の「焼き込み(リニア)」合成(減算合成)を行います。ltSubtractive と違い、αは無視されません。
+ 中性色は白です。
+
+式 : result = blend(dest, max(0.0, dest + src - 1.0), α)
+
+
ltPsMultiplicative
+
 ltPsMultiplicative はPhotoshop互換の「乗算」合成を行います。ltMultiplicative と違い、αは無視されません。
+ 中性色は白です。
+
+式 : result = blend(dest, dest × src, α)
+
+
ltPsScreen
+
 ltPsScreen はPhotoshop互換の「スクリーン」合成を行います。ltScreen と違い、αは無視されません。
+ 中性色は黒です。
+
+式 : result = blend(dest, 1.0 - (1.0 - dest) × (1.0 - src), α)
+
+ +
ltPsOverlay
+
 ltPsOverlay はPhotoshop互換の「オーバーレイ」合成を行います。
+ 中性色は50%灰色です。
+
+式 : result = blend(dest, overlay(dest, src), α)
+ここで overlay(a, b) =
+ a × b × 2.0 ( a < 0.5 のとき)
+ 1.0 - (1.0 - a) × (1.0 - b) × 2.0 (それ以外のとき)
+
+
ltPsHardLight
+
 ltPsHardLight はPhotoshop互換の「ハードライト」合成を行います。
+ 中性色は50%灰色です。
+
+式 : result = blend(dest, hardlight(dest, src), α)
+ここで hardlight(a, b) =
+ a × b × 2.0 (b < 0.5 のとき)
+ 1.0 - (1.0 - a) × (1.0 - b) × 2.0 (それ以外のとき)
+
+ +
ltPsSoftLight
+
 ltPsSoftLight はPhotoshop互換の「ソフトライト」合成を行います。
+ 中性色は50%灰色です。
+
+式 : result = blend(dest, softlight(dest, src), α)
+ここで softlight(a, b) =
+ a(0.5 ÷ b) (b < 0.5 のとき)
+ a((1.0 - b) ÷ 2) (それ以外のとき)
+
+ +
ltPsColorDodge
+
 ltPsColorDodge はPhotoshop互換の「覆い焼きカラー」合成を行います。ltDodge と違い、αは無視されません。
+ 中性色は黒です。
+
+式 : result = blend(dest, min(1.0, dest ÷ ( 1.0 - src ) ), α)
+
+
ltPsColorDodge5
+
 ltPsColorDodge はPhotoshopのバージョン 5.x 以下と互換の「覆い焼きカラー」合成を行います。ltPsColorDodge とは式が若干異なります。
+ 中性色は黒です。
+
+式 : result = min(1.0, dest ÷ ( 1.0 - src × α) )
+
+
ltPsColorBurn
+
 ltPsColorBurn はPhotoshop互換の「焼き込みカラー」合成を行います。
+ 中性色は白です。
+
+式 : result = blend(dest, max(0.0, 1.0 - (1.0 - dest) ÷ src), α)
+
+
ltPsLighten
+
 ltPsLighten はPhotoshop互換の「比較(明)」合成を行います。ltLighten と違い、αは無視されません。
+ 中性色は黒です。
+
+式 : result = blend(dest, max(dest, src), α)
+
+
ltPsDarken
+
 ltPsDarken はPhotoshop互換の「比較(暗)」合成を行います。ltDarken と違い、αは無視されません。
+ 中性色は白です。
+
+式 : result = blend(dest, min(dest, src), α)
+
+
ltPsDifference
+
 ltPsDifference はPhotoshop互換の「差の絶対値」合成を行います。
+ 中性色は黒です。
+
+式 : result = blend(dest, abs(dest - src), α)
+
+
ltPsDifference5
+
 ltPsDifference5 はPhotoshopのバージョン 5.x 以下と互換の「差の絶対値」合成を行います。ltPsDifference とは式が若干異なります。
+ 中性色は黒です。
+
+式 : result = abs(dest - src × α)
+
+
ltPsExclusion
+
 ltPsExclusion はPhotoshop互換の「除外」合成を行います。
+ 中性色は黒です。
+
+式 : result = blend(dest, dest + src - 2.0 × src × dest, α)
+
+ +
+ + + + + +

アルファ合成と加算アルファ合成 +

+ 吉里吉里は、二つのアルファ合成モードを持っています。
+
+
アルファ合成
+
Layer.type プロパティで ltAlpha を指定するとこの表示タイプになります。
+ltAlphaは多くのグラフィックソフトが採用しているアルファ合成モードです。他のグラフィックソフトで出力したデータをそのまま読み込む場合はこのモードが適しています。
+
+
加算アルファ合成
+
Layer.type プロパティで ltAddAlpha を指定するとこの表示タイプになります。
+ この形式はアルファ合成に比べて以下のメリット・デメリットがあります。
+
  • 式がアルファ合成よりも単純なため、表示が高速に行え、多くの描画メソッドでも高速な描画が可能です
  • アルファ合成と一緒に加算合成も表現できます
  • この形式に対応しているグラフィックソフトがほとんどありません

+ltAddAlphaと同じ合成モードに対応しているグラフィックソフトはそうはないと思いますので、他ソフトの出力を吉里吉里でこの形式で扱うには、画像フォーマットコンバータ でこのタイプの画像を出力するか、Layer.convertType メソッドで ltAlpha からこの形式に変換する必要があります。
+ 画像フォーマットコンバータでは、Photoshop形式で、「通常」レイヤーと「覆い焼き(リニア)」レイヤーの組み合わさった入力を、加算アルファ合成用画像の入力として受け付けることができます。
+
+ + + + + +

レイヤタイプと描画方式と演算モード +

+ 吉里吉里にはレイヤタイプ (ltで始まる定数で指定)と、描画方式 (dfで始まる定数で指定) と、演算モード (omで始まる定数で指定)があります。
+ それぞれ似たような名称を持っていますが、用途は以下のように分かれています。
+
+
レイヤタイプ
+
 レイヤタイプは Layer.type プロパティで指定する値で、レイヤがどのように表示されるかを指定します。
+
描画方式
+
 描画方式は Layer.face プロパティで指定する値で、レイヤにどのように描画するかを指定します。dfAutoを指定すると、レイヤタイプに従って適切な描画方式が決定されます。レイヤタイプに最適な描画方法とは異なる描画方式で描画することもできます。
+ Layer.copyRect メソッドのようなレイヤ間のコピーを行うメソッドでは、どの情報をコピーするかの選択にも用いられます。dfBoth (あるいは dfAlpha あるいは dfAddAlpha の場合) は、メインとマスクの両方がコピーされます。dfMain (あるいは dfOpaque) の場合はメインのみがコピーされます。dfMask の場合はマスクのみ、dfProvince の場合は領域画像のみがコピーされます。
+ 同様に、Layer.fillRect メソッドでは、どの情報を塗りつぶすかの選択に用いられます。dfBoth (あるいは dfAlpha あるいは dfAddAlpha の場合) は、メインとマスクの両方が塗りつぶされます。dfMain (あるいは dfOpaque) の場合はメインのみがコピー塗りつぶされます。dfMask の場合はマスクのみ、dfProvince の場合は領域画像のみが塗りつぶされます。
+
+
演算モード
+
 演算モードは Layer.operateRect メソッドなどの引数で指定する値で、演算元(重ね合わせるレイヤ) をどのように扱うかを指定する値です。omAuto を指定すると、演算元のレイヤタイプに従って適切なモードが決定されます。
+ +

アルファチャンネルの保護 +

+ Layer.face プロパティで指定する描画方式が dfOpaque の場合、Layer.holdAlpha プロパティで、描画先 (メソッドを実行しようとするレイヤ)のアルファチャンネルを保護するかどうかを指定できます。
+ アルファチャンネルを保護すると、アルファチャンネル (不透明度) は保護され、透明な部分は透明なままになります。
+ アルファチャンネルを保護しないと、アルファチャンネル (不透明度) は破壊されます。破壊されるとは、どのような状態になるか分からなくなると言うことです。
+ しかし、Layer.type プロパティが ltAlpha でも ltAddAlpha でも無い場合は、レイヤのアルファチャンネルは使われませんから、Layer.holdAlpha プロパティを偽にしても、通常は問題はありません。また、偽にすれば、多くのメソッドにおいて真の時よりも高速に描画できます。
+
+ + + + + diff --git a/docs/kr2doc/contents/HotKeys.html b/docs/kr2doc/contents/HotKeys.html new file mode 100644 index 0000000..d51907c --- /dev/null +++ b/docs/kr2doc/contents/HotKeys.html @@ -0,0 +1,56 @@ + + + + + + + ホットキー + + + + + + + + +

共通ホットキー +

+ 吉里吉里には共通して使用できるホットキーがいくつかあります。
+
+
+
コントローラ (Shift + F1)
+
 コントローラ を表示します。
+ +
スクリプトエディタ (Shift + F2)
+
 スクリプトエディタ を表示します。
+ +
監視式 (Shift + F3)
+
 監視式 を表示します。
+ +
コンソール (Shift + F4)
+
 コンソール を表示します。
+ +
更新矩形の表示 (Shift + F11)
+
 ウィンドウ ( Window クラス で作成したウィンドウ ) をアクティブにしてこのホットキーを押すと、そのウィンドウの表示更新領域を黄色〜白の矩形で表示することができます。ウィンドウのどの領域が更新されたかを確認することができます。
+ +
レイヤ構造のダンプ (Shift + F12)
+
 ウィンドウ ( Window クラス で作成したウィンドウ ) をアクティブにしてこのホットキーを押すと、そのウィンドウに所属するレイヤの構造がコンソールに表示されます。
+ +
環境情報のコピー (Ctrl + F11)
+
 吉里吉里が動作しているコンピュータの情報や、Debug.notice メソッド で出力したログをクリップボードにコピーします。ユーザの環境の情報を収集する際に利用することができます。
+ +
著作権情報の表示 (Ctrl + F12)
+
 吉里吉里の著作権情報を表示します。
+ +
強制終了 (Ctrl + Alt + F12)
+
 このキーを2〜3秒間押すと、起動している吉里吉里をすべて強制終了することができます。吉里吉里がアクティブでない状態でも強制終了させることができます。

+
Note
+これらのホットキーは、強制終了のホットキーを除き、コマンドラインオプションでキーを変更できます。
+

+
+ + + + + diff --git a/docs/kr2doc/contents/KeyCodes.html b/docs/kr2doc/contents/KeyCodes.html new file mode 100644 index 0000000..59a1932 --- /dev/null +++ b/docs/kr2doc/contents/KeyCodes.html @@ -0,0 +1,185 @@ + + + + + + + 仮想キーコード一覧 + + + + + + + + +

仮想キーコード一覧 +

+
+Alt キーは VK_MENU です。
+VK_PAD???? はパッド(ジョイスティック)からの入力を、あたかもキーボードからの入力であるかのようにエミュレートするための仮想キーコードです。VK_PADANYは、System.getKeyState メソッドでこのキーコードの状態を取得しようとすると、パッドのどれか一つでもキーが押されているかどうかを取得できます。
+
+ +
+ VK_LBUTTON        =0x01;
+ VK_RBUTTON        =0x02;
+ VK_CANCEL         =0x03;
+ VK_MBUTTON        =0x04;
+ VK_BACK           =0x08;
+ VK_TAB            =0x09;
+ VK_CLEAR          =0x0C;
+ VK_RETURN         =0x0D;
+ VK_SHIFT          =0x10;
+ VK_CONTROL        =0x11;
+ VK_MENU           =0x12;
+ VK_PAUSE          =0x13;
+ VK_CAPITAL        =0x14;
+ VK_KANA           =0x15;
+ VK_HANGEUL        =0x15;
+ VK_HANGUL         =0x15;
+ VK_JUNJA          =0x17;
+ VK_FINAL          =0x18;
+ VK_HANJA          =0x19;
+ VK_KANJI          =0x19;
+ VK_ESCAPE         =0x1B;
+ VK_CONVERT        =0x1C;
+ VK_NONCONVERT     =0x1D;
+ VK_ACCEPT         =0x1E;
+ VK_MODECHANGE     =0x1F;
+ VK_SPACE          =0x20;
+ VK_PRIOR          =0x21;
+ VK_NEXT           =0x22;
+ VK_END            =0x23;
+ VK_HOME           =0x24;
+ VK_LEFT           =0x25;
+ VK_UP             =0x26;
+ VK_RIGHT          =0x27;
+ VK_DOWN           =0x28;
+ VK_SELECT         =0x29;
+ VK_PRINT          =0x2A;
+ VK_EXECUTE        =0x2B;
+ VK_SNAPSHOT       =0x2C;
+ VK_INSERT         =0x2D;
+ VK_DELETE         =0x2E;
+ VK_HELP           =0x2F;
+ VK_0              =0x30;
+ VK_1              =0x31;
+ VK_2              =0x32;
+ VK_3              =0x33;
+ VK_4              =0x34;
+ VK_5              =0x35;
+ VK_6              =0x36;
+ VK_7              =0x37;
+ VK_8              =0x38;
+ VK_9              =0x39;
+ VK_A              =0x41;
+ VK_B              =0x42;
+ VK_C              =0x43;
+ VK_D              =0x44;
+ VK_E              =0x45;
+ VK_F              =0x46;
+ VK_G              =0x47;
+ VK_H              =0x48;
+ VK_I              =0x49;
+ VK_J              =0x4A;
+ VK_K              =0x4B;
+ VK_L              =0x4C;
+ VK_M              =0x4D;
+ VK_N              =0x4E;
+ VK_O              =0x4F;
+ VK_P              =0x50;
+ VK_Q              =0x51;
+ VK_R              =0x52;
+ VK_S              =0x53;
+ VK_T              =0x54;
+ VK_U              =0x55;
+ VK_V              =0x56;
+ VK_W              =0x57;
+ VK_X              =0x58;
+ VK_Y              =0x59;
+ VK_Z              =0x5A;
+ VK_LWIN           =0x5B;
+ VK_RWIN           =0x5C;
+ VK_APPS           =0x5D;
+ VK_NUMPAD0        =0x60;
+ VK_NUMPAD1        =0x61;
+ VK_NUMPAD2        =0x62;
+ VK_NUMPAD3        =0x63;
+ VK_NUMPAD4        =0x64;
+ VK_NUMPAD5        =0x65;
+ VK_NUMPAD6        =0x66;
+ VK_NUMPAD7        =0x67;
+ VK_NUMPAD8        =0x68;
+ VK_NUMPAD9        =0x69;
+ VK_MULTIPLY       =0x6A;
+ VK_ADD            =0x6B;
+ VK_SEPARATOR      =0x6C;
+ VK_SUBTRACT       =0x6D;
+ VK_DECIMAL        =0x6E;
+ VK_DIVIDE         =0x6F;
+ VK_F1             =0x70;
+ VK_F2             =0x71;
+ VK_F3             =0x72;
+ VK_F4             =0x73;
+ VK_F5             =0x74;
+ VK_F6             =0x75;
+ VK_F7             =0x76;
+ VK_F8             =0x77;
+ VK_F9             =0x78;
+ VK_F10            =0x79;
+ VK_F11            =0x7A;
+ VK_F12            =0x7B;
+ VK_F13            =0x7C;
+ VK_F14            =0x7D;
+ VK_F15            =0x7E;
+ VK_F16            =0x7F;
+ VK_F17            =0x80;
+ VK_F18            =0x81;
+ VK_F19            =0x82;
+ VK_F20            =0x83;
+ VK_F21            =0x84;
+ VK_F22            =0x85;
+ VK_F23            =0x86;
+ VK_F24            =0x87;
+ VK_NUMLOCK        =0x90;
+ VK_SCROLL         =0x91;
+ VK_LSHIFT         =0xA0;
+ VK_RSHIFT         =0xA1;
+ VK_LCONTROL       =0xA2;
+ VK_RCONTROL       =0xA3;
+ VK_LMENU          =0xA4;
+ VK_RMENU          =0xA5;
+ VK_PADLEFT        =0x1B5;
+ VK_PADUP          =0x1B6;
+ VK_PADRIGHT       =0x1B7;
+ VK_PADDOWN        =0x1B8;
+ VK_PAD1           =0x1C0;
+ VK_PAD2           =0x1C1;
+ VK_PAD3           =0x1C2;
+ VK_PAD4           =0x1C3;
+ VK_PAD5           =0x1C4;
+ VK_PAD6           =0x1C5;
+ VK_PAD7           =0x1C6;
+ VK_PAD8           =0x1C7;
+ VK_PAD9           =0x1C8;
+ VK_PAD10          =0x1C9;
+ VK_PADANY         =0x1DF;
+ VK_PROCESSKEY     =0xE5;
+ VK_ATTN           =0xF6;
+ VK_CRSEL          =0xF7;
+ VK_EXSEL          =0xF8;
+ VK_EREOF          =0xF9;
+ VK_PLAY           =0xFA;
+ VK_ZOOM           =0xFB;
+ VK_NONAME         =0xFC;
+ VK_PA1            =0xFD;
+ VK_OEM_CLEAR      =0xFE;
+
+
+ +
+ + + + diff --git a/docs/kr2doc/contents/LoopTuner.html b/docs/kr2doc/contents/LoopTuner.html new file mode 100644 index 0000000..8b06b01 --- /dev/null +++ b/docs/kr2doc/contents/LoopTuner.html @@ -0,0 +1,299 @@ + + + + + + + ループチューナ + + + + + + + + +

ループチューナについて +

+ ループチューナは、PCM形式 (.WAV や Ogg Vorbis など) のファイルに対し、
+
  • 継ぎ目のない(シームレスな)ループを設定したり、条件によるジャンプ(再生位置の変更)を行う「リンク
  • 再生が特定の位置に達したとき、吉里吉里上でイベントを発生させる「ラベル
 といった情報を生成するツールです。
+
+ 生成された情報は、PCM形式のファイル名の最後に .sli がついたファイル名 ( たとえば、se001.wav に対しては se001.wav.sli ) になり、WaveSoundBuffer クラス で PCM 形式のファイルを開くときに自動的に読み込まれるようになります。
+
+ +

シームレスなループとは +

+ ループチューナを使わなくても、WaveSoundBuffer.looping プロパティを使えば、ループ再生をすることができます。しかし、これでは、サウンドの先頭から再生し、最後まで再生すればまた先頭にもどって、といった、単純なループしか行うことができません。
+ ループチューナを使えば、下図のように、サウンドの任意の場所まで再生したら、任意の場所に戻るといったループを設定することができます。弱起の曲をループさせたり、エンジンの始動〜エンジン音のループのように、サウンドの先頭から繰り返して再生することができない場合に使うことができます。
+
+lt_seamless_loop.png
+
+ この場合、繰り返しを行うタイミングを厳密に調整しないと、ループ位置で「プチッ」「ブツッ」といったクラックノイズが発生してしまいます。ループチューナでは、このタイミングの詳細な調整を支援する機能を持っているため、容易に調整を行うことができ、シームレスな(継ぎ目のない)ループを実現することができます。
+ また、希にいくら調整を行ってもこのノイズを取り除けない場合がありますが、ループチューナでは、リンクのすぐ付近で非常に短い(50ms程の)クロスフェードを行うことにより、このノイズを軽減する機能もあります。
+
+

条件付きリンク +

+ 「曲をループ再生しているが、とある条件に達したら、ループを抜けて次の旋律に進みたい」といった場合に、この条件付きリンクを使うことができます。
+ ループチューナでは、サウンドの再生位置を変更するための情報を「リンク」と呼んでいますが、このリンクに条件を付けることができます。
+ ループチューナでは16個の「フラグ」を管理することができ、これらのフラグは 0 〜 9999 の値を持っています。これらの任意のリンクに対し、「○○番のフラグが○○である」「○○番のフラグが○○ではない」「○○番のフラグは○○以下である」などといった「条件」が合致すればリンクをたどる、といった設定を行うことができます。
+ フラグは、ループチューナ上でも値を変更してテストすることができるほか、WaveSoundBuffer.flags プロパティ を用いて、スクリプトから操作することもできます。
+
+ +

ラベル +

+ 「再生位置が特定の場所に来たら、イベントを発生したい」といった用途のために、「ラベル」を設定することができます。
+ ラベルを通過すると、WaveSoundBuffer.onLabel イベントが発生します。イベントのパラメータにはラベル名が渡されるため、どのラベルを通過したかを知ることができます。
+
+ また、ラベルに特別な「」を設定することにより、ラベル通過時にフラグの値を増減したり、値を設定したりすることができます。
+ 上記の「条件付きリンク」と組み合わせれば、特定区間を4回だけ再生、といった使い方ができます。
+
+

リンク、ラベルとバッファリング +

+ 吉里吉里の WaveSoundBuffer は、常にサウンドのバッファリングを行っています。デコード(ファイルからの読み出しや、圧縮音楽ファイルの展開) を行った後、すぐにそれを再生するのではなく、いったんバッファと呼ばれるメモリに蓄積してから再生します。
+ つまり、常に実際の再生位置に先駆けてデコードを行っており、標準の設定では最長で2秒間のズレがあります。
+ リンクの条件がテストされるのは、このデコードの時点であるため、フラグを操作しても、その効果が実際に得られるのは最長で2秒後となります。つまり、再生中に、リンクの直前、最長で2秒前までに条件を変更しても、そのリンクには影響しない可能性があり、注意が必要です。
+ 「最長で2秒」と言うのは、場合によってはこれよりも短い場合がある、ということです。CPUに余力があり、デコードを十分行えれば、おおむね2秒をキープしますが、CPUが他の処理で奪われ、デコードが遅れると2秒を切ることがあります。
+
+ また、ラベルに関しては、ラベルのイベントが発生するのは、実際の「再生位置」がその場所に達した場合ですが、これに対し、ラベルの「式」が実行されるのは、「デコード位置」がその場所に達した場合なので注意が必要です。
+
+

読み込み可能な形式 +

+ ループチューナは、現時点で以下の PCM の形式のファイルを扱うことができます。
+
  • 無圧縮 Wave ( 拡張子は .wav )
  • MS-ADPCM ( 拡張子は .wav )
  • Ogg Vorbis ( 拡張子は .ogg )

+ループチューナは、吉里吉里本体と同じプラグインを使用します。標準の配布構成では、各プラグインを自動的に検出しますので、特別な設定は必要有りません。
+
+ +

メイン画面 +

+ ループチューナ (krkrlt.exe) を起動すると、以下の画面が表示されます (以下の画面は、実際にファイルを読み込んだところ)
+lt_main_window.png
+
+
+
縮小波形表示部分
+
 ここには、サウンドの全体を縮小した波形が表示されます。赤い横線はリンク、緑の縦線はラベルを表しています。
+ クリックをすると、その付近を波形表示部分に表示することができます。ダブルクリックをすると、その位置から再生を開始することができます。
+ 縮小波形の作成には時間がかかるため、サウンドを読み込んだ直後や、ウィンドウの横幅を変更した直後は全てが表示されないかもしれません (バックグラウンドで縮小波形を作成しますので、時間が経つにつれ表示されるようになります)。
+
+ + +
タイムライン・ラベル表示部分
+
 ここには、タイムラインが表示され、波形のどの位置が、サウンドの先頭からどれほどの時間が経過した位置にあるのかを知ることができます。
+ また、ラベルの情報もここに表示されます。逆三角形のマークはラベルを表しています。
+ ラベルをクリックするとラベルを選択することができます。
+ ラベルをダブルクリックすると、ラベル名を編集することができます。
+
+ +
波形表示部分
+
 ここには、サウンドの波形が表示されます。
+ [表示|ズームイン]あるいは[表示|ズームアウト]で、波形の拡大や縮小を行うことができます。
+ 波形をクリックすると、その位置に点滅する縦棒が表示されます(これをキャレットと呼びます)。[再生|現在位置から再生] ではこの場所から再生を開始することができます。また、[表示|ズームイン]あるいは[表示|ズームアウト]では、この位置を中心にして拡大や縮小が行われます。
+ 波形上をダブルクリックすると、その位置から再生を開始することができます。
+ 波形が画面に収まりきらない場合は、下部にスクロールバーが表示されます。
+ 波形表示部分に表示される、縦の点線は、ラベルあるいはリンクの位置を表しています。この縦の点線はマウスでドラッグを行うことができ、位置の調整ができます。
+
リンク表示部分
+
 ここには、リンクの情報が表示されます。
+ リンクは矢印で表示され、矢印の元の部分に再生位置が達したときに、矢印の先の部分に移動する、という意味になります。
+ 点線のリンクは、条件付きリンクを表しています。
+ リンクをクリックすると、リンクを選択することができます。
+ リンクをダブルクリックすると、リンクの編集画面を表示することができます。
+
+ + + +
[ファイル(F)|開く(O) ...](lt_open.png) ショートカットキー: Ctrl+O
+
 操作対象となるサウンドファイルを開きます。すでに開かれているファイルに変更が加わっていた場合、変更を保存するかどうかを尋ねるダイアログボックスが表示されます。
+
[ファイル(F)|保存(S)](lt_save.png) ショートカットキー: Ctrl+S
+
 現在の内容をファイルに保存します。ファイル名は、PCM形式のファイル名の最後に .sli がついたファイル名 ( たとえば、se001.wav に対しては se001.wav.sli ) になります。
+
[ファイル(F)|終了(X)]
+
 ループチューナを終了します。すでに開かれているファイルに変更が加わっていた場合、変更を保存するかどうかを尋ねるダイアログボックスが表示されます。
+
[編集(V)|元に戻す(U)](lt_undo.png) ショートカットキー: Ctrl+Z
+
 最後の編集を取り消し、直前の状態に戻します。
+
[編集(V)|やり直し(R)](lt_redo.png)
+
 「元に戻す」で元に戻した変更を、再度適用します。
+
[編集(V)|削除(D)](lt_delete.png) ショートカットキー: Del
+
 現在選択されているアイテムを削除します。
+
[編集(V)|新規リンクを作成(J)](lt_new_link.png)
+
 新しいリンクを作成します。リンクは、前回クリックした場所をリンクの先とし、前々回クリックした場所をリンクの元として作成されます。従って、リンクを作成したい場合は、まずリンクの元となる場所をクリックし、次にリンクの先となる場所をクリックし、最後にこのメニューを選択してください。
+
+
[編集(V)|新規ラベルを作成(J)](lt_new_label.png)
+
 新しいラベルを作成します。
+
[編集(V)|リンクの編集(T) ...](lt_edit_link.png)
+
 現在選択されているリンクを調整するための画面を開きます。
+
[編集(V)|再生位置にラベルを作成(A)](lt_new_label_on_play.png) ショートカットキー: A または S
+
 現在の再生位置にラベルを作成します。ラベルをキーパンチで作成することができます。A キーだけの連打が難しい場合には S キーも使うことができますので、A キーと S キーを交互に押すと楽です。
+
[編集(V)|全てのラベルを削除(Q)](lt_clear_all_labels.png) ショートカットキー: Ctrl + Q
+
 全てのラベルを削除します。
+
[表示(V)|ズームイン(I)](lt_zoom_in.png) ショートカットキー: I
+
 波形を拡大します。
+
[表示(V)|ズームアウト(O)](lt_zoom_out.png) ショートカットキー: O
+
 波形を縮小します。
+
[表示(V)|再生位置に画面を追従(F)](lt_follow.png) ショートカットキー: F
+
 再生位置に画面を追従します。
+
[表示(V)|ツールバーの表示(T)]
+
 ツールバーの表示/非表示を切り替えます。
+
+ + +
[表示(V)|フラグの表示(G)](lt_edit_flags.png)
+
 フラグ編集バーを表示します。
+ フラグ編集バーには16個の編集欄があり、それぞれがフラグを表しています。値を変更することもできます。編集欄をダブルクリックすることにより、数値が 0 であれば 1 に、0 であれば 1 にする(トグルする)ことができます。
+ 左端の[C]ボタンをクリックすると、全てのフラグを 0 にすることができます。
+
+
[表示(V)|縮小波形の表示(E)]
+
 縮小波形の表示/非表示を切り替えます。
+
+
[表示(V)|ステータスバーの表示(S)]
+
 ステータスバーの表示/非表示を切り替えます。
+
+ + +
[再生(P)|停止(Q)](lt_stop.png) ショートカットキー: Q
+
 再生を停止します。
+
[再生(P)|初めから再生(P)](lt_play_from_first.png) ショートカットキー: P
+
 サウンドの初めから再生を開始します。
+
[再生(P)|現在位置から再生(C)](lt_play_from_current.png) ショートカットキー: Space
+
 キャレット位置からサウンドの再生を開始します。
+
[再生(P)|リンクを無視して再生(G)](lt_ignore_links.png) ショートカットキー: G
+
 この項目がチェックされている(押し込まれた表示になっている)状態では、全てのリンクを無視して再生します。再生位置がリンクの元の位置に達しても、リンクをたどりません。
+
[ヘルプ(H)|ヘルプ(H)]
+
 ヘルプを表示します。
+ +
[ヘルプ(H)|ループチューナについて(A)]
+
 ループチューナの著作権情報とバージョン情報を表示します。
+ +

リンクの編集画面 +

+[編集|リンクの編集] を選択するか、あるいはリンクをダブルクリックすることによりこの画面を表示することができます。
+この画面で有効なショートカットキーについては、波形を右クリックした際に表示されるメニューを参照してください。
+
+lt_link_tuner.png
+
+
+
リンク条件
+
 最上部は、リンクの条件を編集する部分です。
+ [条件付き] チェックボックスをチェックすることにより、このリンクを条件付きリンクとすることができます。条件は、右側の部分で指定します。
+ 条件は、以下の形式で指定することができます。
+
+ [A]番のフラグが[B][条件]
+
+ [A] には、比較対象となるフラグ番号 (0〜15) を指定します。
+ [B] には、比較対象となる数値 (0〜9999) を指定します。
+ [条件] には条件を指定します。条件は、「と同じとき」「でないとき」「より大きいとき」「以上のとき」「より小さいとき」「以下のとき」の6つです。
+
+ 比較対象となる数値は 0 〜 9999 までを使用できますが、特別な用途でない限り、0 か 1 を用いた方がよいでしょう (メイン画面の「フラグの表示」で表示されるフラグ編集欄でも、 0 や 1 はダブルクリックで簡単に入力することができます )。
+
+
波形表示部分
+
 波形表示部分では、リンクの直前の波形とリンクの直後の波形を確認することができます。左側の青い波形がリンク前の波形、右側の赤い波形がリンク後の波形です。薄く見える波形は、それぞれリンク前に対するリンク後、リンク後に対するリンク前の波形で、重ね合わせて表示されます。
+ 波形は、マウスでドラッグすることにより調整することができます。また、波形表示部分の下部に並んでいるリンク調整ボタンでも調整することができます。
+
+
リンク調整ボタン
+
 リンク調整ボタンは12個ありますが、左側の6個はリンク前の位置を調整し、右側の6個はリンク後の位置を調整します。
+
+
前のクロッシング・ポイントへ(lt_left_cross_point.png)
+
直前のクロッシング・ポイント(波形が -Inf ラインと交差する点) を探し、そこに移動します。
+ +
前へ20ステップ(lt_20_step_left.png)
+
前へ20ステップ移動します。1ステップは、波形の倍率により、倍率が1/16ならば16サンプル、倍率が1/1ならば1サンプルです。
+ +
前へ1ステップ(lt_1_step_left.png)
+
前へ1ステップ移動します。
+ +
次へ1ステップ(lt_1_step_right.png)
+
次へ1ステップ移動します。
+ +
次へ20ステップ(lt_20_step_right.png)
+
次へ20ステップ移動します。
+ +
次のクロッシング・ポイントへ(lt_right_cross_point.png)
+
直後のクロッシング・ポイント(波形が -Inf ラインと交差する点) を探し、そこに移動します。
+ +
倍率変更ボタン(lt_zoom_in.pnglt_zoom_out.png)
+
 倍率を変更します。倍率は、このボタンの横に /1 などとして表示されています。/1 は 1/1 (1ピクセルが1サンプル) を表します。/16 ならば 1/16 (1ピクセルが16サンプル) を表します。
+
+
リンクをスムーズにする(lt_smooth.png)
+
 リンクをスムーズにします。このボタンがチェックされている(押し込まれた表示になっている)状態では、ループチューナおよび吉里吉里は、リンク前の波形とリンク後の波形を、短いクロスフェード(50ms) でミックスして再生します。これにより、リンク前とリンク後の波形がうまくあわないために発生する「プチッ」「ブツッ」といったクラックノイズを軽減することができます。
+
+
再生を停止(lt_stop.png)
+
 再生を停止します。
+
+
再生(lt_play_before.png)
+
 リンク付近を再生します。0.5秒前、1秒前、2秒前、3秒前、5秒前のそれぞれから再生ができます。
+ 再生のボタンをクリックすると、そのボタンがマークされます (色が変わります)。以降、スペースキーを押すと、そのボタンをクリックするのと同じ動作となります (最後にクリックしたボタンと同じ時間、リンク前から再生されます)。
+
+
[OK] ボタン
+
 変更を確定し、ウィンドウを閉じます。
+
[キャンセル] ボタン
+
 変更を破棄し、ウィンドウを閉じます。
+
Note
+ 無条件リンクと、一つ以上の条件付きリンクのリンク元が同じ位置にあった場合は、条件つきリンクの条件のテストが優先され、いずれの条件にも合致しなかった場合は無条件リンクとなります。
+ 無条件リンクが複数あった場合はどのリンクが使用されるかは不定となります。
+ 条件リンクが複数あった場合は、テストの順番は不定となります。
+ この場合の「同じ位置」とは、厳密に全く同じ位置、という意味です。1サンプルでも位置がずれていた場合は同じ位置とは見なされません。
+

+ +
+ +

ラベルの式 +

+ ラベルは、特別な書式の「式」を設定することにより、そのラベルを通過する際に、フラグに対して特別な処理をさせることができます。
+ ラベルに「式」を記述する場合は、ラベル名の先頭を ':' (コロン) で始めなければなりません。
+ 式は、操作対象のフラグと、その対象にどのような処理を行うかを表す「演算子(オペレータ)」、演算子のパラメータとなる「オペランド」が順に並びます (一部の演算子にはオペランドがありません)。
+ 操作対象のフラグは、'[' ']' (大括弧) でフラグ番号(0〜15)を囲って指定します。オペランドは、数値の場合は数値をそのまま記述し、他のフラグを指定したい場合は、'[' ']' (大括弧) でフラグ番号(0〜15)を囲って指定します。
+ 演算子には以下の種類があります。
+
+
=
+
フラグの値にオペランドの値を代入します
+
+=
+
フラグの値にオペランドの値を加算します
+
-=
+
フラグの値からオペランドの値を減算します
+
++
+
フラグの値を1つ増やします
+
--
+
フラグの値を1つ減らします
 いずれの場合も、フラグの値の範囲は必ず 0 〜 9999 となります。 0 を下回る場合は 0に、 9999 を上回る場合は 9999 に修正されます。
+
+例:
+:[0]=1 0番のフラグの値に 1 を代入
+:[1]=[0] 1番のフラグの値に0番のフラグの値を代入
+:[1]+=3 1番のフラグの値に 3 を加算
+:[0]++ 1番のフラグの値を1つ増やす
+
Note
+ 複数のラベルが同じ位置にあった場合は、実行の順序は不定となります。

+
+ + +

ヒントとTips +

+
+
リンクの調整
+
 リンクによるPCMの継ぎ目では、調整がよくないと、クラックノイズが発生してしまいます。「リンクをスムーズにする」(スムーズリンク)の機能を用いて、このクラックノイズを軽減することはできますが、まずはスムーズリンクなしで調整を行うことをおすすめします。
+
+ 音源+シーケンサなどの電子環境で生成された音楽であれば、多くの場合、下図のように、リンクの前後でほぼ一致するポイントを見つけることができると思います。
+lt_link_tuner_wave_match.png
+
+ そのほか、ノイズが入るのは仕方がないとしても、それを目立たなくする以下のようなポイントがあります。
+
  • 継ぎ目にする位置は、スネアあるいはシンバル系のドラムの直前をループの継ぎ目にするとノイズが目立ちません。高い音、破裂音などの直前も好都合です
  • 継ぎ目にする位置は、クロッシングポイントにするとノイズが目立ちません
+ +
条件付きリンクによる曲進行の制御
+
 イントロから始まってループし、ゲームなどの進行によって、とある条件でループを抜け、別のループに入る、といった、ゲームの進行・情景を反映した曲進行の制御を、条件付きリンクとフラグの操作によって実現することができます。
+ ただし、もちろん、リンクはループチューナであらかじめ指定した位置でしか動作しません。リンクの条件を変更しても、リンクの位置に達しなければ再生位置が変わらないと言うことです。
+ もしループが長い場合など、ループの終端に達しなければループを抜けられないのが問題であるならば、ループの途中でもループを抜けられるように曲の構成を工夫しなければなりません。
+ たとえば、下図のようにします。
+
+lt_complex_loop.png
+ 再生開始時は、フラグ0 は 0 です。「イントロ」が再生され、「ループ」部分が繰り返し再生されます。
+ ここで、ゲームなどが進行し、フラグ0 が 1 になると、(1)か(2)の時点でこの「ループ」から抜けることになります。
+ もし、(1)でループを抜けると、「(1)→(3)遷移」を経て(3)まで再生され、「残りの部分」が再生されます。
+ また、もし(2)でループを抜けると、「(2)→(3)遷移」を経た後、リンクによって(3)までジャンプし、「残りの部分」が再生されます。
+
+ 様々な応用が考えられると思います。
+
+
+
+ + + + + + diff --git a/docs/kr2doc/contents/MouseCursors.html b/docs/kr2doc/contents/MouseCursors.html new file mode 100644 index 0000000..98e8f52 --- /dev/null +++ b/docs/kr2doc/contents/MouseCursors.html @@ -0,0 +1,50 @@ + + + + + + + マウスカーソル定数一覧 + + + + + + + + +

マウスカーソル定数一覧 +

+
+ cr で始まるマウスカーソル定数の一覧です。これらの中には、Windows の設定に従って実際のマウスカーソルが変わるものもあります。
+
+
crDefault : crArrow と同じ
+
crNone : 透明 ( 非表示 )
+
crArrow : crArrow.png
+
crCross : crCross.png
+
crIBeam : crIBeam.png
+
crHBeam : crHBeam.png
+
crSizeNESW : crSizeNESW.png
+
crSizeNS : crSizeNS.png
+
crSizeNWSE : crSizeNWSE.png
+
crSizeWE : crSizeWE.png
+
crUpArrow : crUpArrow.png
+
crHourGlass : crHourGlass.png
+
crDrag : crDrag.png
+
crNoDrop : crNoDrop.png
+
crHSplit : crHSplit.png
+
crVSplit : crVSplit.png
+
crMultiDrag : crMultiDrag.png
+
crSQLWait : crSQLWait.png
+
crNo : crNo.png
+
crAppStart : crAppStart.png
+
crHelp : crHelp.png
+
crHandPoint : crHandPoint.png
+
crSizeAll : crSize.png
+

+
+ + + + diff --git a/docs/kr2doc/contents/NewExprIcon.png b/docs/kr2doc/contents/NewExprIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc13ed38fcbb3860793ed95e7f2a5ec0f3b0c66 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2#=z6XF@!@lc?UNu&y1ee zPZKVjF8FIN(I8QOL9+hboS((dY{E2Wtdo{axX^u+i^rSM#U}eQ$NONA!x%hW{an^L HB{Ts53nEA| literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/PasteIcon.png b/docs/kr2doc/contents/PasteIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..864f0eef08972133684ea5452f04a16412a4caee GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2CeqWzF@$4g@(ylR9*-Vw zo;?X{%!l*X6sA9PIt)}hv$BzgnT?H&PhfF#b2GEjr3VilFbF>U|DRRq(f|L4**iG6 xxw-XSp8T(mpV0WnfldE}-U2=Lcs8EfjI&KW)fBg}yaZap;OXk;vd$@?2>`%;S9|~f literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/Plugins.html b/docs/kr2doc/contents/Plugins.html new file mode 100644 index 0000000..cd87968 --- /dev/null +++ b/docs/kr2doc/contents/Plugins.html @@ -0,0 +1,164 @@ + + + + + + + プラグインについて + + + + + + + + +

プラグインとは +

+ 吉里吉里に接続して、吉里吉里の機能を拡張するために使われます。
+ 現段階で、吉里吉里で使用可能なプラグインの種類には3つあり、
+
  • Susie Plug-in (画像読み込みとアーカイブアクセス)
  • WaveSoundBufferで再生可能な形式を拡張するためのプラグイン
  • そのほかの吉里吉里専用のプラグイン
 となっています。
+
+ プラグインを使用する場合は Plugins.link メソッドを使用して吉里吉里本体に接続する必要があります。
+
+ +

プラグインの検索 +

+ Plugins.link メソッドでは、指定されたプラグインを以下の順序で探します。
+
  1. 吉里吉里本体と同じフォルダ
  2. 吉里吉里本体以下と同じフォルダにある plugin フォルダ内
  3. 自動検索パス

+ 自動検索パスが、アーカイブ内などローカルファイルとしてアクセスできない場所にあると、吉里吉里はプラグインを吉里吉里本体と同じフォルダに展開しようとします。これが問題を起こすことがあるため、プラグインは「吉里吉里本体と同じフォルダ」か「吉里吉里本体以下と同じフォルダにある plugin フォルダ内」に置くことを強く推奨します
+ また、吉里吉里の設定ツール ( Releaser や krkrconf.exe、-userconf オプション、エンジン設定.exe ) は、プラグインごとの埋め込みオプションの情報を収集するためにプラグインを探しますが、以下の順序で探します。
+
  1. 吉里吉里本体と同じフォルダ
  2. 吉里吉里本体以下と同じフォルダにある plugin フォルダ内

+ 吉里吉里の設定ツールは自動検索パスまでは検索しないため、設定項目を含むプラグインは「吉里吉里本体と同じフォルダ」か「吉里吉里本体以下と同じフォルダにある plugin フォルダ内」に置かなければなりません。
+
+

プラグインの自動読み込み +

+ 吉里吉里はプラグインを自動的に検索して起動時に読み込む機能があります。自動的にプラグインを読み込ませたい場合は、プラグインの拡張子を dll から tpm に変更する必要があります。
+ 吉里吉里は起動時 (startup.tjsを実行する直前) に、以下のフォルダから拡張子 tpm のファイルを探し、プラグインとして自動的に読み込みます。
+
  • 吉里吉里本体と同じフォルダ
  • 吉里吉里本体以下と同じフォルダにある plugin フォルダ内

+ 吉里吉里は探したプラグインを名前で昇順に並び替え、その順序でプラグインを読み込みます。たとえば、aaa.tpm は aab.tpm よりも先に読み込まれます。これはプラグインのおいてあるフォルダには影響せず、プラグインの名前にのみ影響されます (吉里吉里本体と同じフォルダに z.tpm があっても、plugin フォルダ内に a.tpm があれば a.tpm が先に読み込まれます )。プラグインの読み込み順序を規定したい場合は、プラグインのファイル名を変える必要があります。
+
+

プラグインの作成について +

+ 吉里吉里のソース中に、吉里吉里付属のプラグインのソースがありますので参考にしてみてください。
+ 現段階では、「その他の吉里吉里専用のプラグイン」の仕様は固まっていません。将来仕様が変更されても、ソースレベルでの互換性は保たれるとおもうので、バイナリレベルでの互換性が失われた場合でも、吉里吉里本体に合わせて再構築すれば使えるようになるとは思います。
+
+

Susie Plug-in について +

+ Takechin 氏作の画像ビューア「Susie32」用のプラグインを利用することができます。
+ 00IN 形式 (画像用プラグイン) と 00AM 形式 (アーカイブ用プラグイン) を使うことができますが、以下の制限、あるいは吉里吉里独自の仕様があります。
+
+
  • 吉里吉里は拡張子で画像の形式を判断するため、本来の拡張子 ( GetPluginInfo 関数が返すもの ) と違う拡張子がついたような画像に対応できない ( アーカイブは対応形式をすべてチェックするので拡張子が異なっていても OK )
  • 32bpp のビットマップはアルファチャンネル付きのビットマップとして見なされる
  • 一部、受け付けられないビットマップ形式がある (RLE 圧縮された物や BITFIELDS が指定されているものなど )
  • Susie プラグイン経由での画像読み込みやアーカイブアクセスは、吉里吉里がネイティブに扱う画像形式や xp3 アーカイブに比べてパフォーマンスがかなり低くなる
  • アーカイブ中のファイルはメモリ上に展開されるため、大きなファイルを扱うには不向き
  • アーカイブ内アーカイブには未対応
  • Mac binary には未対応

+ また、Susie plug-in の規格に完全に対応していないプラグインの中には、吉里吉里と相性の悪いプラグインも存在します。
+
+

吉里吉里付属のプラグインについて +

+ 吉里吉里に標準で添付されているプラグインの説明です。
+
+
+
wuvorbis.dll
+
 OggVorbis を吉里吉里で再生可能にするためのプラグインです。
+
wumsadp.dll
+
 Microsoft ADPCM 形式の .wav ファイルを吉里吉里で再生可能にするためのプラグインです。
+
wutcwf.dll
+
 TCWF 形式のファイルを吉里吉里で再生可能にするためのプラグインです。
+
extrans.dll
+
 吉里吉里本体のトランジションの種類を拡張するためのプラグインで、吉里吉里本体に接続するといくつかのトランジションが使用可能になります。
+ このプラグインの使い方については トランジションについて を参照してください。
+
dirlist.dll
+
 指定されたディレクトリ内にあるファイルのリストを得るためのプラグインです。
+ このプラグインを接続すると getDirList という関数が使用可能になります。
+getDirList(ディレクトリ)
+ の形式で指定すると、そのディレクトリ内にあるすべてのファイルのリストを +配列で返してきます。このリストにはディレクトリも含まれ、ディレクトリの場合は +要素の文字列の最後に '/' がついています。
+ また、このリストには通常、 './' と '../' の2つの要素が含まれます。
+ この関数は指定されたディレクトリ直下のファイルのリストを得るだけで、再帰的に +それよりも下層のディレクトリのファイルを得ることはありません。
+
fftgraph.dll
+
 WaveSoundBuffer と同期して、簡易的なスペクトラムアナライザー(スペアナ)を表示させるための +プラグインです。
+ このプラグインを接続すると drawFFTGraph という関数が使用可能になります。
+ 使い方は吉里吉里ソースに含まれる fftgraph のソースおよび KAG 用のスペアナプラグインを +参照してください。
+
win32ole.dll
+
 ActiveX コントロール吉里吉里のウィンドウに貼り付けたり、OLE オートメーション可能なオブジェクトを吉里吉里から操作するためのプラグインです。
+ これを使用すると、たとえば吉里吉里のウィンドウに Web ブラウザ (Internet Explorer) や メディアプレーヤを貼り付けたり、Excel を吉里吉里から操作したりすることができます。
+ 使用方法については 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/win32ole/manual.tjs および kirikiri2/trunk/kirikiri2/tests/win32ole ディレクトリを参照してください。
+
+
wsh.dll (experimental)
+
 吉里吉里で JScript、VBScript、PerlScript を使用可能にするプラグインです (RubyScript の動作については調整中です)。
+ このプラグインを接続すると、Scripts.execScripts.execStorage が拡張されます。
+ Scripts.exec は第2引数に 拡張子、あるいは ProgId 、あるいは CLSID を受け付けるようになります。Scripts.execStorage も Scripts.exec 同様に第2引数に拡張子、あるいは ProgId 、あるいは CLSID を受け付けるようになりますが、第2引数が省略された場合は第1引数の拡張子から言語が決定されます。
+ 拡張子は js, vbs, pl, rb のいずれかで、ProgId は、それぞれ JScript, VBScript, PerlScript, RubyScript となります。CLSID を指定する場合は、スクリプトエンジンのクラスIDを指定します。これら以外の拡張子が渡された場合は TJS スクリプトとして実行します。
+ 使用方法については 吉里吉里ソースの kirikiri2/trunk/kirikiri2/tests/wsh ディレクトリを参照してください。
+
+ +
agg.dll (experimental)
+
 吉里吉里で AGG (Anti-Grain Geometry) を利用して図形描画を行うプラグインです。
+ 簡易的な SVG 読み込み/描画機能を利用することができます。
+ SVG を描画するには、たとえば +
+例:
var svg  = new AGGPrimitive(layer, "SVG", "tiger.svg");
+var svg1 = new AGGPrimitive(layer, "SVG", "tiger.svg");
+
+
+ +とします (もとの AGG の SVG 読み込みサポートの制限により、読み込めない SVG が多いです)。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/layerExAgg ディレクトリを参照してください。
+
+ + +
csvParser.dll (experimental)
+
 吉里吉里で CSV (Comma Separated Values) ファイルを読み込むためのプラグインです。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/csvParser ディレクトリを参照してください。
+
+ + +
expat.dll (experimental)
+
 吉里吉里で Expat を通じて XML ァイルを読み込むためのプラグインです。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/expat ディレクトリを参照してください。
+
+ + +
json.dll (experimental)
+
 吉里吉里で JSON を読み込むためのプラグインです。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/json ディレクトリを参照してください。
+
+ +
layerExImage.dll (experimental)
+
 レイヤに対し、明度とコントラストの調整、色相と彩度の調整、ノイズ追加を読み込むためのプラグインです。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/layerExImage ディレクトリを参照してください。
+
+ +
perspective.dll (experimental)
+
 レイヤのパースペクティブ変形を行うプラグインです。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/layerPerspective ディレクトリを参照してください。
+
+ + +
saveStruct.dll
+
Array/Dictionary の saveStruct の処理を、Unicode (UTF-16)ではなく、現在のコードページまたは UTF-8 で出力可能にする物です。
+ 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/saveStruct ディレクトリを参照してください。
+
+ + +
fstat.dll
+
Storages クラスに、ファイルのサイズや更新日時などの情報を取得したり、ファイルをストレージシステム内から取り出すメソッドを追加します。 + 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/fstat ディレクトリを参照してください。
+
+ +
clipboardEx.dll(experimental)
+
Clipboard クラスに、画像やTJS式をクリップボードを介してやりとりする機能や、クリップボードの更新を自動検知するハンドラを登録する機能を追加します。 + 詳しくは 吉里吉里ソースの kirikiri2/trunk/kirikiri2/src/plugins/win32/clipboardEx ディレクトリを参照してください。
+
+ + + +

+
+ + + + diff --git a/docs/kr2doc/contents/Releaser.html b/docs/kr2doc/contents/Releaser.html new file mode 100644 index 0000000..31dd6e4 --- /dev/null +++ b/docs/kr2doc/contents/Releaser.html @@ -0,0 +1,113 @@ + + + + + + + Releaser + + + + + + + + +

Releaserについて +

+ Releaser は、フォルダをアーカイブファイルにまとめるためのツールです。
+ また、吉里吉里のプロジェクトフォルダを指定し、そのプロジェクトフォルダを内部に持った単一の実行可能ファイルを作成することができます。
+
+

Releaser の使い方 +

+ReleaserSelect.png
+
+ Releaser ( tools フォルダにある krkrrel.exe ) を実行すると、最初にフォルダを指定するように求められますのでフォルダを指定してください。
+ ここで指定したフォルダの中にあるファイルを対象にします。
+
+
Note
+ Releaser は、最終的なアーカイブを作成する過程で内容が全く同一のファイルを見つけると、たとえファイル名が異なっていても一つにまとめて、一つ分のファイルの容量しか使用しないという機能があります。

+
Note
+ Releaser は、CVS メタ情報ディレクトリ("CVS"という名前で、中に"Repository"という名前のファイルが存在するディレクトリ)を自動的に無視します。また、名前の先頭が . (ドット)で始まるファイルやディレクトリ(UNIX風の隠しファイルや Subversion メタ情報ディレクトリなど)を無視します。

+
Note
+ Releaser は、アーカイブを作成すると、アーカイブを作成したディレクトリに default.rpf というファイルを作成します。この中にはアーカイブを作成する際のオプションが記述されており、次回アーカイブを作成するときに同じ設定で簡単に作成することができます。

+
+

Releaser の設定画面 +

+ フォルダを選択した後は設定画面になります。
+
+
「フォルダ選択に戻る」ボタン
+
 フォルダ選択をやり直す事ができます。
+
「プロファイル : 保存」ボタン
+
 現在の設定をファイルに保存します。
+
「プロファイル : 読み込み」ボタン
+
 設定をファイルから読み込みます。
+
「作成」ボタン
+
 現在の設定に基づき、アーカイブファイルや EXE 形式の実行可能ファイルを出力します。
+
「キャンセル」(または終了) ボタン
+
 Releaser を終了します。
+
「出力」タブ
+
ReleaserOutput.png
+
+
+
「出力形式」
+
 「.XP3 アーカイブ」を選ぶと、xp3 形式 ( 吉里吉里標準のアーカイブ形式 ) のファイルを出力します。「.EXE 形式実行可能ファイル」を選ぶと、実行可能ファイルを出力します。「.EXE 形式実行可能ファイル」を選んだ場合は、Releaser ( krkrrel.exe ) と同じフォルダか、その親のフォルダにおいてある krkr.eXe が使用されます。
+
「出力ファイル」
+
 出力するファイルを指定してください。「参照」ボタンをクリックするとファイルをダイアログボックスで指定することができます。
+
「ファイル」タブ
+
ReleaserFiles.png
+
+ 拡張子ごとに、「圧縮するもの」「アーカイブには含めるが圧縮しないもの」「アーカイブには含めないもの」を選ぶ事ができます。通常、デフォルトの分類のままでかまいません。
+ 「圧縮するもの」にファイルを分類すると圧縮が行われるため、ファイルサイズが小さくなります。また、テキストエディタやバイナリエディタで中を覗いても簡単には解読できない状態になります。しかし、圧縮を行うと展開時に時間がかかるというデメリットもあります。PNG や JPEG や ERI などは既に圧縮されていて、「圧縮する」に分類しても効果が薄い上に、展開に余計に時間がかかるようになるので、圧縮することはお勧めできません。
+
「オプション」タブ
+
ReleaserSettings.png
+
+
+
「大きなファイルを圧縮しない」
+
 もし該当するファイルが「圧縮するもの」に分類されていても、指定されたサイズ以上であれば圧縮を行わない、という設定です。吉里吉里の構造上、圧縮されたファイルはメモリ上に展開しなければならないため、大きなファイルを圧縮するのは実行時のコストが高くなります。
+
「展開プロテクト」
+
 チェックすると、アーカイブ内部のインデックス ( 格納されているファイルのリスト ) に「展開プロテクト」の属性を付加します。これによりアーカイブ展開ツールに対し「著作者はファイルが展開されることを望んでいない」という意思表示をすることができます。
+
「OggVorbisコードブック共有化」
+
 チェックすると、OggVorbis ファイル ( .ogg ファイル ) のベクトル量子化用コードブックを共有させます。OggVorbisファイルは複数のファイル間で共通のコードブックをファイルごとに持っている場合が多いので、それらを一つにまとめてサイズの節約を行うことができます。
+
「インデックスを圧縮する」
+
 チェックすると、アーカイブ内部のインデックス ( 格納されているファイルのリスト ) を圧縮し、サイズの節約をすることができます。

Note
+「オプション」タブの「展開プロテクト」をチェックしても実際に展開ができないように暗号化をしたりする訳ではありません。意思表示を行うことができるだけです。また、アーカイブ展開ツールを作成される方は ( もしいるとして ) この展開プロテクトフラグの存在を考慮してください ( このフラグがたっていれば展開を拒否したり、展開する前に警告をするなど )。
+

+
+
「実行可能ファイル設定」タブ
+
 出力形式に実行可能ファイルを指定した場合にのみ表示されます。
+ ここの設定画面は 吉里吉里設定 と同じです。
+
+ReleaserExeSettings.png
+
+
+
「オプション」
+
 実行可能ファイルに対するデフォルトのオプションを設定できます。
+
「アイコン」
+
 実行可能ファイルのアイコンを指定することができます。
+

コマンドラインオプション +

+Releaser は以下のコマンドラインオプションを受け付けます。 +
+
フォルダ名
+
ターゲットのフォルダを指定します。
+
-go
+
すぐにアーカイブを作成し、そのまま終了します。バッチ処理などで用いてください。オプションなどはあらかじめ、ターゲットのフォルダに default.rpf という名前で保存しておいてください (これなくても -nowriterpf -out オプションと組み合わせてアーカイブを作ることは可能です )。
+
-nowriterpf
+
終了時に default.rpf を書き出しません。
+
-out ファイル名
+
出力ファイル名を指定します。
+
-rpf ファイル名
+
読み込むプロファイルを指定します。

+たとえば、以下のように指定します。
+ +
+krkrrel project -out ..\release\data.xp3 -nowriterpf -go +
+ +
+ + + + diff --git a/docs/kr2doc/contents/ReleaserExeSettings.png b/docs/kr2doc/contents/ReleaserExeSettings.png new file mode 100644 index 0000000000000000000000000000000000000000..abfeac12989265060b81e0b78e5ec5a9afc6008c GIT binary patch literal 20302 zcmZ^~Wl&sE(=|FkAi)9zhhV|oU4v(^;LhOgG6Z)B4DP|*b#NO9!8N!CcXx-&^So8J z?)QFm_peh^d+&4loZj85d#wrot|)_!LWBYU0MNh5N~!<=@L&J{uK5G}+b=Rg!nXi` z67Dz2uWCOQkMzA_KlggPdYXeBPOrq2VioyNCVxB0h-x zA&{})bBe63l-9grjR{?X7{yi� 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ReleaserFiles.png b/docs/kr2doc/contents/ReleaserFiles.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd4b118c3894611c4ee9fe1b3149bb82120e241 GIT binary patch literal 4761 zcmaJ_2|QKX+g@iR({Kk}^}*oWeflDan{nC-Yq9N(dR_ z(#27h-rmk?TR@}H+W^1-czSv=9k_<2x$GbvhGCb`beGVK-*%AsTWHp;9c14MVIt?| z4svgXvk-#M6x0;e4mIt3Rw1wU)9OCtlYr%OlUw6WLVY--rGp%+}5@$F@)N81$U z4U(sZ)_!bn&-X;_^GA!?mx^xE^*{F~M22ed5VZ}dL6*z2nRy3f9g9eh!Dof~Z~Va0 z0jxY6#96I=dAPMSQo}LO7r8Y!SlR2FTs(SjVE*2ga5?$RYIZ*(WzZsW%e|eEP+VKN zdcTR0RO-h$P+L3X*ECaWwOV^&A6WU;G1U7pg#!k*2ch|oTPuv~LZ@mlbQQFCTa?A; z(GQ+x@W<+{g{cNU`r2WCet3E#Wc9Se$X?FFTT=N*w~t>cmn*UKS6KQHM7T@x`r69= zTqG$KY^=|XR8?|8Tc#Y8ZNkAGlyP4vAqSDe#Q`71MqiXdb`gc3mY=*6 z&?uk%Cp$j{?{3oVvnRvl@7JLrJEr^xq*N?w6uz#5^6KZi ziE8}_7y3kJ=ixgu`0T#@o8mgjek-6vSeo%Z@cC<`kHdFJyh{|=Z(h0$pSfds?p$Z5 zlZ@jY=o$L9j$5k8`%_RYR=C|z2n-&ePr1{x=U0bU>;36BBGfEdOEsUyOTE`8ES7U= z2>&)3KRK$pwbE^7!E#M{#ut>7%3ax^?``^`(49>*Sn|52$$@&niXw8L=nX^RiT7(9%eBCuJd~gJR`Jdy&?W6WpYvz=x(|*~ zRW)W%S{UrXgX)gVsj6{PS$o~>4LYpG#-r8^PbQGs?zbV>PELC~bAFuIh8OQwxFw60 z^1jm4fq)fzVww{%mY(C{HN_s1frlbuKCf}1GCoOh6UROAs0=e&-21mmfK(s`@pGgu zfBo()_q=}*CXAblgmLTzMmR_uLN$-Pqorw2YBVrzi=LKdr`WNR@XP5vAlxSB((6iP z3tFB=g#RTGtoDGFbmlId;d%^c)D@3qw9MEcAb#%Hkd?bq@2x*@JbLKD4=Yq;>aON# zsJ4&wYyduqFoL!yTepv?p5f6G2Rdo^ne02mWb%IEOLNYjzXc7ZptR#RmgSVb9E9~Y zctgEoOuiZUTgDsLc77Uu$QGTyYwUt(W=JlY-YY?sgZ?aSGNivD@U34zd92yx0OX=6 zhRK1FhdSLoawSKL^#EJV?a-BwgC`qxjY~9*XpxmNMQqVOm-RH2D2E@g-MFsH?PL(Q zKv|uRRke7effJ7o$J?4EH(0kQI&-BT4NSVH5N&6F1}jyIKemT>dy!;X{Xl53q*^w~ z)z(=?`ixj>@9S7cDOk5$$rhX0u`l<+KDu_<=B<6EYS-cg40Sf0hc;qCObY9i@pekP zm1^LHx)PScg6JIQ!zD$*gS^|jPG=b-qeYh);`0r07E$)e_y^w@VN^^xGoILdpw0X7k#bSYE_qR{3@w4B4_-X#MH=x~x zV>s+CiB`Gx?_#;1D3f+h>LLfB+LV_)V)Ya&^drdRH# zo;+C;BMix__a6t3=umz_BO6%SSi&ury_^lYcm7LY35ABgEn3T?s4rSouk8+D24$e5 zMBG{O2@#F3gv{I`gt+a5G*rQ3k`ZGVZol%KACQWyWz1*gSSY(ie%`fLf}CVj8xQwA znNv4=e%k+n=y{fs@^Q;}ji}@`%?iX!$3C{+*37SARZpYt`$}&=GGp*)i)*}S!=UV^L8CaGnI4vyV7b@;}&2D%ly?AQW z`r5$kqY%M8`Yum-yXb_v%*xm%OUtR%MAbPKkuUM(%k1;dx+3oXG*q4Y`jk+`TS!0t zA-(Le@yb{{)?~a|6t2e}YaZd+@8NLq(R)N8j?ydi;no)S8^c&?RG?jr`p3AmdR$+z zC^OVC-q0VUeR{ILrxyz}8Q14WdG1ABbm5J_HZNl#fTg$ z*hoWX1#%^qvX!bvI`!s!;xV>O!!~}ph65oEvkj$MaQz)tV-G{?i3DoN7w!D)_ey?o zlGlqk35DbuweOtz68syt3LhVuyGYy6JQthZZG#df34}aq8Qb4a6b|UG-zYu41EKLNiF{v4!on3D9*$iOjz>bji>AbZW0a98J~ltLI99Csol? zDs}17+ymFXX_3?V2H$y(*aj21gAI`hz**)K?xt-C6~SB_q5%nKohpmKUK41L?@8{CRL zLaB^U(t4>n{2EodTKC6S><|y6yax^OVO{|!#FRd=9)Lu2=}Sic&OPE&`wE%+;~Kk- zHM09{ajE)5!AT6M{k#pgW;$vykNn5R?LF zByoB~f>JFHD{lkwnJj04dS@Nl^wBLtPRIsh#8Y3TLJ6EBy{9ZVrqR~??!FDg;v!_|OrRtS`FLr5Y((t8kpcwBz0RQ=p} z_-e9lmoe;LT>pKe)ErjKagtX3LOq-OquKh;Qp@dy1(5quF{T4$dm??&hjR~%#pe{Q zan~yf8ef>hfpHi5WySs|JS%(*v~n$9+E4sZT2bNeoksTX5YSn9AX&Sa^gvtq!BY;f z^Il>TGdROLuqDCWSGKC}^TAH7o-%#8K~_P@##zpvN*?=e!CUybvVly?56|w6R-E!h zv2`;>U(78<7biN7dk)FhbP1KeVuc!jlP}?ILufYR#+kmg=E!DL*HbWPLet&aBkXup zdd6S4fL=GFX*r~5_LN*_CakkUty&ysE1RKJ6j zK+BgI(h+b)#PtwUB9KJp)EKj>m~k-$mEBV7dk~_l-^|QsOk{%slFkYuLe)O2`n@pk zWQFn&tS~RTl{7PHoorF(Tls5hCfTekM>wuCDcaA&Enit(!w;z}Pjm_E@vvI{DPUod zUAOuT2ac#hm-5fCqUf7~>_cvuwjeEMX zga}Z6h_tg|W0q)0%Up;RrV#O=f}w(}@MO^c)f2Is0Vt;ficjqZN0guf92!bKK>Uf= zp_rffJv$ux{mt}Wd@r#4GQzg9zZSx;>wjq*ibd`82lYb#Z1T(LKP@};w7Os3fBF5F z)Bk4x|2dd{wf*Jsp94@_(z23~^o>ZE-3v#}-=FE@+f#k<0DZ39n!R=8t>ah?2h_Z# zHM@O)E+=ZZ=D<$5;>>@*)d;;~z5EUrluWtC0gVOgeiX8&1|dhX$f^Dc9s4V)9fv$` z7R>B3P%XIj77d+9LLC<_=%C?gnUq_~nQX4a<@OVu9YoX zTHw`)V9Qy@CWK2RpjS-=aU$_c!pVD+B9#b4@G4O`y7k^cEPnMl7T+>(@a%3da$Qt; z(nreIy5RSeq54r2klWW}#>)WzV1MKpd8x^u;kV+xxjQGb_@jbf1Y{xURf~rom!!Y& z>NlkmI0Ap%a`*AF5!Xvn24EzTTqmn3t{@E6vHw29<(|?n=fl}SK+pviwZg5P#52TF z28C4~zSrkDf6}i#*J^LQGnwU>JT-)n^Fbou{4+>ba?m*KCMocTQlueK=7h7w&D<%B zUMv2>&1eqTSuQY0kb1_}Th560`5=NyHT)b0;+}LPpc5I;>H7RgWUlT)^wiS9|1 zG`45RfmfA++8$k7EZjt%THQ3x_|n zhRf6~h!r5asyDxQbnJ&q_P%Ac1jby^Djj?#yRhqEG=)0;tc#xFK zTiB&610!}@Sw;qp;r`yP?xqgzZl#ud`3^v5aK!u1+i5Az>Ve;~U=;NgIL0$#jwq0Cw` z`m<0;DBtlCJ+Fuh+3Z>GoVlPz&?;!4-$BF9japf?o&gf7dmOpG2FiXZd|5{T9SH4` zi5U*K#N|T@!|+fCi}q@Qb@l6(6y&sNk%?O1ve{EEQ=o7t(A_i6VNR-2geCmoRb89z zGnt_En@PCod($}f%E}g3L`>o~9Xbn+jX82dSyqB;R&f;r2jS1j=UR8&3TN4N)Gn_P zkHoggO2o%2A#%{f!}n5lQM#v3dn(%(k3%o8bxYX{r>}IB^&Di literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ReleaserOutput.png b/docs/kr2doc/contents/ReleaserOutput.png new file mode 100644 index 0000000000000000000000000000000000000000..24951de5fc67405f74da74396239cb336c58e084 GIT binary patch literal 3827 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ReleaserSelect.png b/docs/kr2doc/contents/ReleaserSelect.png new file mode 100644 index 0000000000000000000000000000000000000000..9c891d39cb2ad555eaa384e26b00d5c37de7df9a GIT binary patch literal 3231 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 RDFy%l002ovPDHLkV1iTFIh+6h literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ReleaserSettings.png b/docs/kr2doc/contents/ReleaserSettings.png new file mode 100644 index 0000000000000000000000000000000000000000..c37fc444beddb10203f4b1907ee870563eaea4a0 GIT binary patch literal 4087 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 WMaR#%%$qX`MKmziuQ+%t>VE)(-1}bu literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/SaveIcon.png b/docs/kr2doc/contents/SaveIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac85866e12acef296fa4a646f5c9b822dd6661b8 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2#?I5lF@$4g@(ylR9&w2S z4bvYw9j;e+z;0yLAW=FlD9J0z7GIz}Se?qA|aoV9dj0}2V W4jax$zj_2TiNVv=&t;ucLK6U>NK8)v literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ScriptEditor.html b/docs/kr2doc/contents/ScriptEditor.html new file mode 100644 index 0000000..fefbb3e --- /dev/null +++ b/docs/kr2doc/contents/ScriptEditor.html @@ -0,0 +1,53 @@ + + + + + + + スクリプトエディタ + + + + + + + + +

スクリプトエディタについて +

+ スクリプトエディタは、実行中に Shift + F2 を押すことにより表示することができます。
+ スクリプトエディタでは簡単な TJS スクリプトの編集とその実行をすることができます。
+ このエディタは簡易的なものであり、本格的なスクリプトの編集は意図していません。
+
+ 例外が発生したとき、その例外の発生位置を指し示すために「スクリプトエディタ (例外通知)」というスクリプトエディタのウィンドウが開く場合があります。この場合はそのスクリプトエディタは内容が変更禁止の状態になります。
+
+

画面の説明 +

+ScriptEditor.png
+
+右クリックメニューの説明です。
+
+
CutIcon.png 切り取り
+
 選択範囲を切り取ります。切り取られた選択範囲はクリップボードに保持されます。
+
CopyIcon.png コピー
+
 選択範囲をクリップボードにコピーします。
+
PasteIcon.png 貼り付け
+
 クリップボードから文字を貼り付けます。
+
UndoIcon.png 元に戻す
+
 直前の操作を元に戻します。
+
ExecIcon.png 実行
+
 スクリプトエディタに入力された内容を TJS2 スクリプトとして実行します。
+
SaveIcon.png 保存
+
 内容をファイルに保存します。
+
ControllerIcon.png コントローラ
+
 コントローラ を表示します。
+
ExprWatchIcon.png 監視式
+
 監視式 を表示します。
+
ConsoleIcon.png コンソール
+
 コンソール を表示します。

+
+ + + + diff --git a/docs/kr2doc/contents/ScriptEditor.png b/docs/kr2doc/contents/ScriptEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..44d441eb93454f82fc4a3150ac8adf93b546262b GIT binary patch literal 4508 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 St*Z>S*Q_n<&F|ySQT_`XT1WK& literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/ScriptEditorIcon.png b/docs/kr2doc/contents/ScriptEditorIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..13e6e52de593aa9026dd7fa8346f265a46a37d65 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2#>>;iF@!^w_25QM216c} z4Y%c;#Eh5xefF(j`SeTQZkfGpzr02K_7`ULy$PQy6|OfJ@E_u7nR&cTa*jcN?z)4S jcKx}RyDu-3zx|E9&7yd!S>;C?ps5U=u6{1-oD!M<$Uax! literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/SignTool.html b/docs/kr2doc/contents/SignTool.html new file mode 100644 index 0000000..17eb560 --- /dev/null +++ b/docs/kr2doc/contents/SignTool.html @@ -0,0 +1,130 @@ + + + + + + + キー・署名ツール + + + + + + + + +

キー・署名ツールについて +

+ キー・署名ツールは、配布するデータに対し、簡単な電子署名を行うためのツールです。
+ 電子署名を使えば、ファイルが正当な制作者によって作成された物であることのチェック、ファイルの改ざんチェック、破損チェックを行うことができます。
+ 現在では、ファイル破損チェックツールがこの署名を利用します。
+
+ +

公開鍵・秘密鍵について +

+ キー・署名ツールを使うためには、このツールを使って「公開鍵」(public key)と「秘密鍵」(private key)という2つの対になる(ペアになる)キー(キーペア)を作成する必要があります。
+ 鍵といっても、実体は以下のような形式の文字列です。
+ +
+-----BEGIN PUBLIC KEY-----
+MIGJAoGBAJYfPysW57qE3J2ddGWEG+RzXUzFkWa0ct3p7qJfuWDB+52DbfS9qSpw
+iTHQ54vl7K35x+WDQdn29cfgJxp9UD3fzY4h6E2ReE9vj4h0FCMK8dpCFnQkOD/M
+hDSiXfXz7KmfMXppM0CjofvH+IL7BJ3/GcLFcuEw3hEnzoajIm1TAgMBAAE=
+-----END PUBLIC KEY-----
+
+
+ + 公開鍵は公開してもかまわないキー、秘密鍵は公開してはならないキーです。
+ 署名を行うときには秘密鍵を用います。電子署名は、その秘密鍵を使って生成します。
+ その署名を確認するときには公開鍵を用います。秘密鍵と公開鍵は常に対になり、該当する秘密鍵を使って行った署名のみが、その秘密鍵と対になる公開鍵で正常に確認できます。
+ 秘密鍵を知らない者が他の秘密鍵で署名しても、正当な公開鍵では署名を確認できないことになります。公開鍵から秘密鍵を推測することは不可能ですので、秘密鍵を持っている人しか正当な署名ができないことになります。
+
Note
+本来は、その「公開鍵」が公開される際に、その「公開鍵」が正当な物かどうかを確認させる必要があります。公開鍵がそもそも正当なものかどうかが分からなければ、電子署名の意味は薄くなります。しかし、吉里吉里のキー・署名ツールではそこまでの考慮は行っていません。

+
Note
+吉里吉里のキー・署名ツールが用いる暗号方式は2.25beta7でECC(楕円曲線暗号)からRSAに変更になりました。
+吉里吉里のキー・署名ツールが生成するRSAキーの長さは1024ビットです。また、秘密鍵はパスフレーズでの保護は行われません。
+吉里吉里のキー・署名ツールが生成するRSA公開鍵・秘密鍵は他のソフトウェアのPEM形式のキーと互換性がありますが、キー・署名ツール以外で生成したキーを使った場合、あるいはキー・署名ツールで生成したキーを他のソフトウェアで使用した場合の動作はサポート外です。
+

+
+

キー生成のしかた +

+
+ キー・署名ツール(tools フォルダにある krkrsign.exe)を起動すると最初に表示されるのはキー生成の画面です。
+sign0.png
+
+
+
+
「生成する」ボタン
+
 クリックするとキーペアの生成が始まります。最初に「エントロピーを収集中」というウィンドウが現れ、マウスをでたらめに動かすことを要求されるので、指示に従ってください(他人に推測されないキーを生成する為に必要です)。
+ ウィンドウが閉じると、下の「生成された公開鍵」と「生成された秘密鍵」の欄に、生成されたキーペアが表示されます。
+
+
生成された公開鍵
+
 生成された公開鍵が表示されます。横の「コピー」ボタンを押すと、鍵をクリップボードにコピーすることができます。
+
生成された秘密鍵
+
 生成された秘密鍵が表示されます。横の「コピー」ボタンを押すと、鍵をクリップボードにコピーすることができます。
+ セキュリティの都合上、このウィンドウを閉じるときにクリップボードの内容はクリアされるので注意してください。
+
+ +

署名のしかた +

+
+ 「署名」タブをクリックすると、署名の画面が表示されます。
+sign1.png
+
+
+
+
秘密鍵
+
 秘密鍵を指定してください。
+
対象ファイル
+
 署名の対象となるファイルを指定することができます。
+ 「参照」ボタンを押すと、ファイル参照ダイアログボックスが開くので、対象とするファイルを指定してください。
+ このウィンドウに対象とするファイルをドロップすることでも、対象ファイルを指定することができます(現バージョンでは複数ファイルを一度に署名することはできません)。
+
+
「署名する」ボタン
+
 対象となるファイルを署名します。
+ 署名ファイルは、対象ファイルのファイル名に、拡張子 .sig が付加されたファイル名になりますが、例外的に吉里吉里本体の場合は、本体に署名が埋め込まれます。
+
+

署名確認のしかた +

+
+ 「署名確認」タブをクリックすると、署名の画面が表示されます。
+sign2.png
+
+
+
+
公開鍵
+
 公開鍵を指定してください。
+
対象ファイル
+
 署名確認の対象となるファイルを指定することができます。
+ 「参照」ボタンを押すと、ファイル参照ダイアログボックスが開くので、対象とするファイルを指定してください。
+ このウィンドウに対象とするファイルをドロップすることでも、対象ファイルを指定することができます(現バージョンでは、このツールで複数ファイルの署名を一度に確認することはできません)。
+
+
「チェック」ボタン
+
 対象ファイルの署名を確認します。
+ 結果はメッセージボックスで通知されます。
+ +

コマンドラインからの使用法 +

+ コマンドラインからキー・署名ツールを使用することにより、ファイルに署名を行うことができます。これはmakeなどのツールと組み合わせて使うときに便利です。
+ 以下の書式で指定します。
+ +
+krkrsign -sign "対象ファイル名" "秘密鍵ファイル名" +
+ +秘密鍵ファイル名には、秘密鍵をテキストとして保存したファイルを指定してください。
+たとえば、game.eXe に署名する場合は
+ +
+krkrsign -sign "game.eXe" "key.priv" +
+ + と指定します。一回の呼び出しでは一個のファイルしか署名できません。
+ + + + + + + diff --git a/docs/kr2doc/contents/SoundSystem.html b/docs/kr2doc/contents/SoundSystem.html new file mode 100644 index 0000000..a45abb1 --- /dev/null +++ b/docs/kr2doc/contents/SoundSystem.html @@ -0,0 +1,48 @@ + + + + + + + サウンドシステム + + + + + + + + +

サウンドシステムについて +

+ 吉里吉里のサウンドシステムは MIDI、CD-DA、Wave (PCM) を再生できます。
+ MIDI 再生はシーケンサを内蔵しており、再生チャンネルが重ならなければ同時再生できます。
+ CD-DA 再生は再生ドライブが重ならなければ同時再生でき、CD-ROM ドライブそれ自体に対して音量を制御することもできます。
+ Wave 再生は複数を同時再生でき、ストリーミング再生 (長いサウンドを少しずつ読み込みながら再生) をすることができるほか、サウンドループ情報ファイル (.sli ファイル) を用いて、つぎめを感じさせないシームレスなループ再生を実現できます (サウンドループ情報ファイルはループチューナで作成します)。
+
+ +

WaveSoundBuffer で再生可能な形式 +

+ WaveSoundBuffer では、標準で無圧縮の RIFF Wave 形式 ( 拡張は .wav で、Windows 標準形式 ) を再生することができます。受け付けられる形式は以下の通りです。
+
+
  • WAVE_FORMAT_PCM 形式で、8bit 以上 32bit 以下の整数 PCM、かつチャンネル数が 1(モノラル)、2(ステレオ), 4(quadraphonic)、6(5.1ch) のもの
  • WAVE_FORMAT_IEEE_FLOAT 形式で、32bit の浮動小数点数 PCM、かつチャンネル数が 1(モノラル)、2(ステレオ), 4(quadraphonic)、6(5.1ch) のもの
  • WAVE_FORMAT_EXTENSIBLE 形式で、サブタイプが KSDATAFORMAT_SUBTYPE_PCM 形式で8bit 以上 32bit 以下の整数 PCM
  • WAVE_FORMAT_EXTENSIBLE 形式で、サブタイプが KSDATAFORMAT_SUBTYPE_IEEE_FLOAT 形式の 32bit 浮動小数点数 PCM

+ 16bit を越える整数 PCM (24bit PCM など) や 浮動小数点数 PCM、ステレオを越えるチャンネル数のサウンド ( 4chサウンドや5.1chサウンドなど ) の再生は、WDM 系のサウンドドライバを使用しているシステム ( Windows2000, XP 以降、 Windows 98/98SE/ME で WDM ドライバ使用のシステム ) でのみのサポートとなります。
+
+ また、WaveSoundBuffer で再生可能な形式は、プラグインによって拡張することができます。
+
+

WaveSoundBuffer での 4ch および 6ch の扱い +

+ WAVE_FORMAT_EXTENSIBLE は、データ内に「どのチャンネルがどのスピーカーに割り当てられているか」の情報を持っていますが、WAVE_FORMAT_PCM や WAVE_FORMAT_IEEE_FLOAT の場合はその情報を持っていません。吉里吉里が WAVE_FORMAT_PCM や WAVE_FORMAT_IEEE_FLOAT で 4ch や 6ch のデータを扱うときは次のように解釈します。
+
+
+
4chのとき
+
チャンネルの先頭から、それぞれ、前左、前右、後左、後右のスピーカー用データであると見なされます
+
6chのとき
+
チャンネルの先頭から、それぞれ、前左、前中央、前右、後左、後右、低周波のスピーカー用データであると見なされます

+また、OggVorbis で 4ch や 6ch のサウンドを再生するときにもこれと同じルールが適用されます。
+
+ + + + diff --git a/docs/kr2doc/contents/Startup.html b/docs/kr2doc/contents/Startup.html new file mode 100644 index 0000000..e756190 --- /dev/null +++ b/docs/kr2doc/contents/Startup.html @@ -0,0 +1,75 @@ + + + + + + + 起動の仕方 + + + + + + + + +

吉里吉里の起動について +

+ 吉里吉里を起動し、スクリプトを指定するためには通常、プロジェクトフォルダ を決定する必要があります ( ストレージシステム 参照 )。
+ プロジェクトフォルダを決定する方法はいくつかありますが、下記に挙げた順に優先されます ( 上のほうに書いたものが適用できれば適用される )。
+ 起動時に吉里吉里に渡すオプションについては コマンドラインオプション を参照してください。
+
+

プロジェクトフォルダの決定順序 +

+
+
コマンドラインに指定されたフォルダやアーカイブ
+
 コマンドラインの引数としてフォルダが指定された場合、それをプロジェクトフォルダと見なし、実行します。
+ コマンドラインの引数として XP3 アーカイブが指定された場合、その中にプロジェクトフォルダが入っていると見なし、実行します。
+ コマンドラインの引数として ファイルやフォルダを指定するのはコマンドプロンプトからもできますが、一番簡単なのは、エクスプローラや「開く」で、吉里吉里の実行可能ファイルのアイコンの上にプロジェクトフォルダやファイルをドロップすることです。
+ また、吉里吉里の実行可能ファイルへの引数として特定のプロジェクトフォルダを書いたショートカットをデスクトップなどにおいておくと便利でしょう。
+
実行可能ファイルと同じ場所の content-data フォルダ
+
 実行可能ファイルと同じ場所に "content-data" という名のフォルダがある場合はそれをプロジェクトフォルダと見なし、実行します。
+
実行可能ファイルと同じ場所の "data.xp3" ファイル
+
 実行可能ファイルと同じ場所に data.xp3 という名のアーカイブファイルがある場合は、それを XP3 アーカイブ形式としてその中にプロジェクトフォルダが入っていると見なし、実行します。
+
実行可能ファイルと同じ場所の "data.exe" ファイル
+
 実行可能ファイルと同じ場所に data.exe という名のファイルがある場合は、それを XP3 アーカイブ形式としてその中にプロジェクトフォルダが入っていると見なし、実行します。
+( XP3 アーカイブは実行可能ファイルと結合できるためこのようなプロジェクトフォルダの決定方法があります )
+
自分自身に XP3 アーカイブが結合されているとき
+
 XP3 形式アーカイブは実行可能ファイルと結合することができますが、自分自身が XP3 アーカイブと結合されていた場合、自分自身にプロジェクトフォルダが入っていると見なし、実行します。
+
実行可能ファイルと同じ場所の data フォルダ
+
 実行可能ファイルと同じ場所に "data" という名のフォルダがある場合はそれをプロジェクトフォルダと見なし、実行します。

+ いずれの方法でも決定できなかった場合は、フォルダ/アーカイブ選択の画面が出ます。
+ ただし、リリースオプションで 「XP3アーカイブのみから実行」が指定されていた場合は、data.xp3ファイル、data.exeファイル、「自分自身に XP3 アーカイブが結合されているとき」の場合の動作しかしません ( 吉里吉里設定 参照 )。
+
+

フォルダ/アーカイブ選択 +

+ フォルダ/アーカイブ選択の画面は以下のようになります。
+FolderSelector.png
+
+ 現在フォルダを選択しているのか、ファイルを選択しているのかは下側の選択中のファイル名の右に (フォルダ)(ファイル) として出ています。
+
+
+
「選択しない」ボタン
+
 このボタンをクリックすると、プロジェクトフォルダを選択しません。コントローラ が開きます。プロジェクトフォルダが指定されていない状態ですが、コンソールやスクリプトエディタを使って簡単なスクリプトのテストなどをすることができます。
+
「OK」ボタン
+
 現在選択中のフォルダやファイルの実行を開始します。
+
「キャンセル」ボタン
+
 何もせずに吉里吉里を終了します。
+

最初に実行されるファイル +

+ プロジェクトフォルダ決定後、最初に実行されるのは、プロジェクトフォルダ内の startup.tjs です。これがない場合はエラーになります。
+
+

メッセージマップファイル +

+ 吉里吉里は、起動直後に吉里吉里と同じフォルダに msgmap.tjs があるかどうかを調べ、それが存在すれば実行します。ただしリリースオプションでこれを読み込まないように指定されていた場合を除きます ( 吉里吉里設定 参照 )。msgmap.tjs では System.assignMessage を使用してメッセージの割り当てを変更することができます。msgmap.tjs は コントローラ でも作成することができます。
+
+

設定ファイル +

+ 吉里吉里は、吉里吉里設定 で作成した設定ファイル (.cf ファイルや .cfu ファイル) を読み込み、そこに記述してある設定にしたがって動作します。
+ ファイル名やファイルの作成される場所については 吉里吉里設定 を参照してください。
+
+ + + + diff --git a/docs/kr2doc/contents/StorageSystem.html b/docs/kr2doc/contents/StorageSystem.html new file mode 100644 index 0000000..1e32dec --- /dev/null +++ b/docs/kr2doc/contents/StorageSystem.html @@ -0,0 +1,69 @@ + + + + + + + ストレージシステム + + + + + + + + +

ストレージシステムについて +

+ 吉里吉里ではファイルやアーカイブ内のファイル、その他のリソースについて、ファイルではなくてあえて「ストレージ」と呼んでいます。
+
+ +

統一ストレージ名 +

+ 統一ストレージ名とは、吉里吉里内のみで用いられるストレージを表す名前で、URI に似た方法でストレージを表します。
+ 表記は、
+
+メディア://ドメイン/パス
+
+ の形式で行われます。パスの区切り文字は / (スラッシュ) を用います。
+
+

ローカルストレージ +

+ ローカルストレージ ( ローカルファイル ) を表す統一ストレージ名は、メディアに file 、ドメインに . (ドット) を用います。また、Windows の場合はパスの先頭はドライブ文字になります。
+
+ たとえば、C:\Program Files\Game\game.exe は、
+file://./c/program files/game/game.exe
+ となります。
+
+ Storages.getFullPath メソッドは、OS の使うファイル名から統一ストレージ名への変換を行うことができます。この過程で、ファイル名中の大文字はすべて小文字に変換されます ( ローカルストレージについては大文字と小文字は区別されません )。また、パス区切りに \ が用いられている場合は / に変換されます。
+ Storages.getLocalName メソッドは、統一ストレージ名から OS の使うファイル名への変換を行うことができます。吉里吉里以外のアプリケーションにストレージ名を渡す場合などはこのメソッドを使用する必要があります。
+
+

アーカイブストレージ +

+ アーカイブ内のストレージを指定する場合は、 > で区切り、> より前をアーカイブストレージのストレージ名、> より後をアーカイブ内でのパスに指定します。
+
+ たとえば、file://./c/program files/game/game.xp3 内の image/base.jpg というストレージならば、
+file://./c/program files/game/game.xp3>image/base.jpg
+ となります。
+ 2.19 beta 14 よりアーカイブの区切り文字が '#' から '>' に変わりました。
+
+ 吉里吉里は標準で XP3 という吉里吉里独自形式のアーカイブストレージを扱うことができます ( XPK の第3世代の形式なので XP3 )。XP3 形式のアーカイブの作成方法については Releaser を参照してください。
+ XP3 アーカイブは実行可能ファイルと結合することができます。この場合は吉里吉里は実行可能ファイルを一つのアーカイブファイルとして見なすことができます ( Releaser は 吉里吉里本体との結合しかサポートしていません )。
+
+

プロジェクトフォルダ +

+ 吉里吉里でゲームやツールなどを作る場合、必要なファイルはすべて「プロジェクトフォルダ」にまとめて開発を行うのが一般的です。吉里吉里は、起動時にプロジェクトフォルダを現在のカレントフォルダに設定します。
+ プロジェクトフォルダ内の相対パスですべてを指定しておけば、Releaser で単一の実行可能ファイルなどにしてもパス指定を変える必要はありません。
+
+

データ保存場所 +

+ データ保存場所は コマンドラインオプション の -datapath オプションで指定されたフォルダです。System.dataPath プロパティで取得することができます。
+ 吉里吉里が出力する各種ログやユーザごとの設定ファイルはここに出力されます。
+ また、ユーザがゲームやツールなどを作る場合は、データはここに保存することが推奨されます。
+
+ + + + + diff --git a/docs/kr2doc/contents/TJSDumpIcon.png b/docs/kr2doc/contents/TJSDumpIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d412f0faf10934a138076dc4c5af1d370a2e3f GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k=LkOc((!fKvCalVouzhJNcj9_p*aOVV2Cc)FiF{I*F@{Ze#Y~_;g zzWx7SeC$7ahvDar(}D(%`|t0!ms2=4@#p9J@{GoH|NfM->^>p$|9k#{uJdy&nXla| zK5~>b=Yiz(na1f%lI49rfX2(8VBl_WIl!baQ9B@=fuZ_HoPkD>k0j7822WQ%mvv4F FO#qNCW9$F` literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/TPC.html b/docs/kr2doc/contents/TPC.html new file mode 100644 index 0000000..8ff083b --- /dev/null +++ b/docs/kr2doc/contents/TPC.html @@ -0,0 +1,253 @@ + + + + + + + 画像フォーマットコンバータ + + + + + + + + +

画像フォーマットコンバータについて +

+ 画像フォーマットコンバータ ( tools フォルダにある krkrtpc.exe ) は、吉里吉里の画像の相互変換を行うためのツールです。
+ 様々な画像の用意に使えます。
+
+ 入力ファイルフォーマットとしては BMP, PNG, JPEG, PSD、出力ファイルフォーマットとしては BMP, PNG, TLG5, TLG6, JPEG のいずれかを選択できます。
+ 吉里吉里が用いるようなメイン/マスク分離形式の透過画像を読み込んだり、出力する事もできます。ここで用いている「マスク」という用語はアルファチャネルと同義です。
+
+ 基本的には画像フォーマットを変換するだけなので、これで出力した画像は、他のソフトやツールにも使えると思います。
+
+ なお、このツールに限ったことではありませんが、バックアップはお忘れなく!
+
+

入力画像フォーマット +

+ 入力ファイルフォーマットとしては、以下の形式を用いることができます。
+
+
+
BMP
+
 Windows 標準ビットマップ形式です。32 bit (bpp) 形式の BMP はアルファチャンネル付き BMP であると見なされます。
+ その他の形式の BMP は、不透明な画像(透過情報を持たない画像)であると見なされます (後述のメイン/マスク分離形式に用いた場合を除く)。
+
PNG
+
 Portable Network Graphic 形式です。透明部分のある(アルファチャネルや透過情報を持った) PNG も読み込むことができます。
+
PSD
+
 Adobe Photoshop 3 以降で用いられる形式です。ただし、このツールで読み込める PSD には大きな以下の制限があります。
+
+
  • カラーモードが RGB のもの以外を読み込めない
  • 16bit/チャンネルのものを読み込めない
  • 無圧縮とRLE圧縮のみ対応 ( Photoshop3.0 形式の場合は RLE圧縮のみ対応 )

+ この形式はメイン/マスク分離形式としては読み込むことができません。 + 大体のデータは読み込めますが、読み込めないデータもあります。
+ カラーモードに RGB 以外(CMYKなど)を使用している場合は RGB に変換してください。16bit/チャンネルを使用している場合は 8bit/チャンネルに変換してください。
+ 「通常」以外のブレンドモードのレイヤーを含む場合は、このツールに入力する前に「表示部分の統合」を行っておけば大丈夫です。
+
+ PSD ファイルの読み込み機能は、出力形式にて「ltAddAlpha形式で出力する」が選択されるか、しないかによって大きく変わります。
+
+ 「ltAddAlpha形式で出力する」が選択されている場合は、「通常」「覆い焼き(リニア)」「焼き込み(リニア)」「乗算」「スクリーン」「オーバーレイ」「ハードライト」「ソフトライト」「覆い焼きカラー」「焼き込みカラー」「比較(明)」「比較(暗)」「差の絶対値」「除外」のレイヤーが含まれた PSD ファイルを読み込むことができます。また、「通常」のみで構成された画像であれば、複数枚のレイヤーが重なっていても対応できます (他のモードでは、複数枚のレイヤーが重なっていると対応できません)。
+
+ 「ltAddAlpha形式で出力する」が選択されている場合は、「通常」のレイヤーと「覆い焼き(リニア)」のレイヤーにのみ対応できます。この場合は、レイヤーが下から(奥から)順に、「任意の数の『通常』レイヤー」「任意の数の『覆い焼き(リニア)』レイヤー」の順になっていなければなりません。「任意の数」とは、0枚、つまりレイヤーが全くないか、あるいは1枚以上のレイヤーです。
+
+
「ltAddAlpha形式で出力する」が選択されている場合に読み込み可能な例
+
  • 「通常」レイヤー1枚の上に「覆い焼き(リニア)」レイヤー1枚
  • 「通常」レイヤーがなくて、「覆い焼き(リニア)」レイヤーが1枚だけ
  • 「通常」レイヤー1枚のみ
  • 「通常」レイヤー3枚の上に「覆い焼き(リニア)」レイヤー2枚
+
「ltAddAlpha形式で出力する」が選択されている場合に読み込めない例
+
  • 「通常」レイヤー1枚の上に「覆い焼き(リニア)」レイヤー1枚、その上にさらに「通常」レイヤー1枚
    +(覆い焼きリニアのレイヤーは通常レイヤーの間に挟むことはできません)
  • 「覆い焼き(リニア)」レイヤー1枚の上に「通常」レイヤー1枚、さらにその上に「覆い焼き(リニア)」レイヤー1枚
    +(通常のレイヤーは覆い焼きリニアのレイヤーの間に挟むことはできません)
  • 「覆い焼き」レイヤー1枚のみ
    +(覆い焼きは覆い焼きでも、扱えるのは「覆い焼きリニア」のレイヤーだけです)
Photoshopの「通常」は吉里吉里のアルファ合成、「覆い焼き(リニア)」は吉里吉里の加算合成に相当します。ltAdditiveAlpha(加算アルファ合成)ではアルファ合成と加算合成の両方を同時に表現できるため、このようなレイヤー構成のPhotoshopデータを読み込むことができます。
+
+ +
+
JPEG
+
 フルカラーとグレイスケールの一般的な JPEG 形式を読み込めます。後述のメイン/マスク分離形式の入力として使うこともできます。
+
メイン/マスク分離形式
+
 メイン/マスク分離形式は、メイン(色情報)の画像とマスク(透過情報)の画像が別々のファイルになっているものです。
+ マスク画像は、メイン画像のファイル名の最後に _m のついたファイル名になります ( たとえば test.jpg に対して test_m.jpg )。
+ メイン/マスク分離形式として有効な入力画像フォーマットは、それぞれ BMP, JPEG, PNG です。メインとマスクのフォーマットが異なっていてもかまいません。

Note
+ TLG5 や TLG6 形式は入力として用いることができません。ERI 形式は現時点では未対応です。

+
+

出力画像フォーマット +

+ 出力画像フォーマットとしては以下の形式を用いることができます。
+
+
+
24bit/32bit BMP
+
 24bit BMP はアルファチャンネルを持たない BMP です。
+ 32bit BMP はアルファチャネルを持った BMP で、一つのファイル内に メインとマスクを持っている BMP です。
+
PNG
+
 フルカラーの PNG、あるいはアルファチャンネル付きの PNG です。
+
+
TLG5
+
 フルカラーの TLG5、あるいはアルファチャンネル付きの TLG5 です。
+
Note
+ TLG5 形式は圧縮に結構時間がかかります。プログラムが止まってしまったように見えるかも知れません。

+
+
TLG6
+
 フルカラーの TLG6、あるいはアルファチャンネル付きの TLG6 です。
+
Note
+ TLG6 形式は TLG5 形式と同じく、圧縮に結構時間がかかります。プログラムが止まってしまったように見えるかも知れません。

+TLG6画像についてはTLG5画像と同じく、タグ情報を書き出します。
+
+
メイン/マスク分離形式
+
 透明部分のある画像において、メイン/マスクを別々のファイルに記録する方式です。それぞれ、BMP, JPEG, PNG を選択できます。
+ マスク画像は、メイン画像のファイル名の最後に _m のついたファイル名になります ( たとえば test.jpg に対して test_m.jpg )。
+ メインとマスクを別々の画像形式にすることができますが、BMP と BMP 、PNG と PNG の組み合わせはほとんど意味がないので、上記の 32bit BMP か アルファチャネル付き PNG を選択した方が良いでしょう。
+ どちらか、あるいは両方に JPEG を用いればファイルサイズは節約できますが、画質は悪くなります。
+ メイン/マスク分離形式に TLG5 や TLG6 形式を指定することはできません。
+

タグ情報 +

+画像フォーマットコンバータは、TLG画像やPNG画像に「タグ情報」を書き出します。「タグ情報」は、画像どのように表示されるべきかなどを含む情報です。このタグ情報はLayer.loadImagesメソッドの戻り値として得ることができます。
+
+以下のタグ情報が書き出されます。
+
+
mode (TLGのみ)
+
画像の表示モードです。「不透明な画像」の場合はmode=opaqueで、出力形式がltAddAlphaならばmode=addalphaという情報を書き出します。
+「透明部分のある画像」で出力形式がltAddAlphaでない場合は、PSD ファイル以外や、「通常」のレイヤーのみを含む PSD ファイルを読み込んだ場合は mode=alpha になります。PSD ファイルで、「通常」以外のレイヤーを読み込んだ場合は、それぞれのブレンドモードに対応する情報が書き出されます。
+KAGの場合、これはimageタグのmode属性にそのまま対応し、imageタグでmode属性を省略したときの初期値になります。つまり、KAGではmode属性を指定しなくても、自動的にその画像に適したmode属性が設定されると言うことになります。
+
+ 吉里吉里は、TJSのグローバルオブジェクトに imageTagLayerType という辞書配列を持ち、TLG画像の持つタグ情報の mode とレイヤのタイプがどう対応づけられるかを表しており、以下のように定義されています。
+ +
+global.imageTagLayerType = %[
+    opaque      :%[type:ltOpaque            ],
+    rect        :%[type:ltOpaque            ],
+    alpha       :%[type:ltAlpha             ],
+    transparent :%[type:ltAlpha             ],
+    addalpha    :%[type:ltAddAlpha          ],
+    add         :%[type:ltAdditive          ],
+    sub         :%[type:ltSubtractive       ],
+    mul         :%[type:ltMultiplicative    ],
+    dodge       :%[type:ltDodge             ],
+    darken      :%[type:ltDarken            ],
+    lighten     :%[type:ltLighten           ],
+    screen      :%[type:ltScreen            ],
+    psnormal    :%[type:ltPsNormal          ],
+    psadd       :%[type:ltPsAdditive        ],
+    pssub       :%[type:ltPsSubtractive     ],
+    psmul       :%[type:ltPsMultiplicative  ],
+    psscreen    :%[type:ltPsScreen          ],
+    psoverlay   :%[type:ltPsOverlay         ],
+    pshlight    :%[type:ltPsHardLight       ],
+    psslight    :%[type:ltPsSoftLight       ],
+    psdodge     :%[type:ltPsColorDodge      ],
+    psdodge5    :%[type:ltPsColorDodge5     ],
+    psburn      :%[type:ltPsColorBurn       ],
+    pslighten   :%[type:ltPsLighten         ],
+    psdarken    :%[type:ltPsDarken          ],
+    psdiff      :%[type:ltPsDifference      ],
+    psdiff5     :%[type:ltPsDifference5     ],
+    psexcl      :%[type:ltPsExclusion       ],
+]
+
+
+ + それぞれのレイヤのタイプについては グラフィックシステム を参照してください。
+
offs_x offs_y offs_unit (TLG, PNG)
+
 これらは、変換元がPNGで、そのPNGがその画像の左上隅からのオフセット(oFFsチャンク)の情報を含んでいる場合のみに出力されます。
+ offs_x は横位置の左端からの距離、offs_y は縦位置の上端からの距離です。offs_unit は pixelmicrometer のどちらかになり、距離の単位を示します。
+
+
vpag_w vpag_h vpag_unit (TLG, PNG)
+
 これらは、変換元がPNGで、そのPNGが Virtual PAGe、つまり画像全体のサイズ(vpAgチャンク)の情報を含んでいる場合のみに出力されます。
+ この情報を PNG に出力するソフトウェアとして ImageMagickユーティリティがありますが、この ImageMagick で trim (トリム)を行った際に、トリム前の画像サイズとしてこの情報が出力されます。
+ vpag_w は画像全体の横のサイズ、vpag_h は画像全体の縦のサイズ、offs_unit は pixelmicrometer のどちらかになり、サイズの単位を示します。
+
+
reso_x reso_y reso_unit (TLG, PNG)
+
 これらは、変換元がPNGで、そのPNGがその画像の解像度(pHYsチャンク)の情報を含んでいる場合のみに出力されます。
+ reso_x は横方向の解像度、reso_y は縦方向の解像度です。reso_unit は meter になり、解像度の単位を示します。
+
+

画像フォーマットコンバータの使い方 +

+
+ 変換は、変換したいファイルを画像フォーマットコンバータのウィンドウの上にドロップすることで行うことができます。複数のファイルをドロップする事もできます。
+
+ 不透明な画像、透明部分を持った画像にそれぞれ別の形式を指定することができます。
+
+ ここで言う「不透明な画像」とは、画像全域が完全に不透明な画像(たとえば、KAGで使うような背景画像)を言います。「透明部分を持った画像」とは、透明になる部分がある画像(たとえばKAGで使うような前景画像)を言います。
+ なお、画像形式として等価情報を持っている形式でも、結果的に画像のすべてのピクセルが完全不透明であれば、「不透明な画像」として扱われます。
+
+ 変換終了後、各ファイルの変換が成功したか、エラーになったかを確認できるログが表示されますので確認してください。
+
+ 以下は、画面の説明です。
+
+TPC.png
+
+ 実行すると、上の画面が表示されます。
+
+
+
「オプションを表示」
+
 チェックされている状態では、下の設定部分が表示されます。チェックをはずすと、ウィンドウは上部部分だけとなり、横に細長くなります。オプション設定が必要ない場合にウィンドウをコンパクトにすることができます。
+
「不透明な画像 - 24bit BMP」
+
 不透明な画像の出力形式として 24bit BMP を選択します。
+
「不透明な画像 - PNG」
+
 不透明な画像の出力形式として PNG を選択します。
+
「不透明な画像 - TLG5」
+
 不透明な画像の出力形式として TLG5 を選択します。
+
「不透明な画像 - TLG6」
+
 不透明な画像の出力形式として TLG6 を選択します。
+
「不透明な画像 - JPEG」
+
 不透明な画像の出力形式として JPEG を選択します。
+
「不透明な画像 - JPEG オプション...」
+
 不透明な画像の出力形式として JPEG を選択した場合の、JPEG の圧縮クオリティを選択します。
+ +
「透明部分のある画像 - 32bit BMP (メイン+マスク)」
+
 透過情報を持った画像の出力形式として 32bit BMP を選択します。
+
「透明部分のある画像 - αチャネル付き PNG (メイン+マスク)」
+
 透過情報を持った画像の出力形式として アルファチャネル付き PNG を選択します。
+
「透明部分のある画像 - αチャネル付き TLG5 (メイン+マスク)」
+
 透過情報を持った画像の出力形式として アルファチャネル付き TLG5 を選択します。
+
「透明部分のある画像 - αチャネル付き TLG6 (メイン+マスク)」
+
 透過情報を持った画像の出力形式として アルファチャネル付き TLG6 を選択します。
+
「透明部分のある画像 - メイン/マスク分離形式」
+
 透過情報を持った画像の出力形式としてメイン/マスク分離形式を指定します。メイン/マスクに何を用いるかを下で選択します。また、JPEG の場合、「JPEG オプション」ボタンをクリックすることによって、JPEG の圧縮クオリティを選択することができます。
+
「透明部分のある画像 - 入力画像をltAddAlpha形式であるとみなす」
+
 このオプションがチェックされていると、入力画像をltAddAlpha形式、つまり吉里吉里のLayer.typeプロパティでltAddAlphaを指定して表示するに適した、加算アルファ合成形式であると見なします。このオプションに影響される入力画像形式はBMP、PNG、メイン/マスク分離形式で、PSD形式は影響されません。
+ このオプションがチェックされていないと、入力画像はltAlpha形式であると見なされます。ほとんどのグラフィックソフトの出力形式やPNGの仕様はltAlpha形式である為、通常はこのオプションはチェックしないでください。
+ このオプションのチェックされていない状態で、かつ後述の「ltAddAlpha形式で出力する」がチェックされていると、画像フォーマットコンバータはltAlpha形式からltAddAlpha形式への変換を行います。
+ このオプションをチェックすると、「ltAddAlpha形式で出力する」のオプションは自動的にチェックされます。また、「完全透明部分の色情報」のオプションは使用不可になります(アルファ情報も色情報も画像フォーマットコンバータでは加工されなくなります)。
+
+ +
「透明部分のある画像 - ltAddAlpha形式で出力する」
+
 このオプションがチェックされていると、出力画像をltAddAlpha形式で出力します。
+ このオプションがチェックされていないと、出力画像の形式はltAlpha形式、あるいは PSD ファイルからの入力の場合はそのファイルに含まれているレイヤーのブレンドモードに対応した形式になります。
+ 様々なグラフィックソフトや、PNGの仕様ではltAlpha形式の画像のみを受け付けますので、出力画像を吉里吉里に使用する訳ではない場合は、通常はチェックしないでください。
+ このオプションがチェックされていると、「完全透明部分の色情報」のオプションは使用不可になります(アルファ情報も色情報も画像フォーマットコンバータでは加工されなくなります)。
+
+ +
「透明部分のある画像 - 完全透明部分の色情報」
+
 画像の完全に透明な部分の処理を指定します。
+ 通常、ltAlpha 形式の画像の場合、完全に透明な部分でも色の情報を持っています。その部分は完全に透明なので表示するときは単に無視されるのですが、画像の加工 ( JPEG等による圧縮も含む ) を行うときは無視されません。
+ この完全に透明な部分の処理の方式を指定します。
+
+
+
除去
+
 除去を指定すると、完全に透明な部分の色情報は除去されます ( 正確には真っ黒で塗りつぶされる )。
+ 通常はこの指定でOKです。
+
そのまま
+
 処理を行いません。元の画像そのままになります。
+ 完全透明部分にゴミがある場合、そのゴミまで圧縮することになるので圧縮率が悪くなります。
+
合成
+
 完全透明部分の色を、その周りにある不透明な部分の色から推測し、合成します。
+ 合成の強度を 1, 2, 3, 5, 8 pixel から選べます。ここでピクセル単位で指定された距離内にある不透明な部分のピクセルの色から、完全透明部分の色を合成します。値が大きいほど処理に時間がかかります。ここで指定した距離外にある完全透明な部分の色は除去されます。
+ たとえば JPEG でメイン画像を圧縮する場合、JPEG の特性上、急激な色の変化がある場所ではモスキートノイズが発生します。これは前景画像の場合、もし「合成」処理をおこなわず、完全不透明部分と不透明部分の境界で急激な色の変化がある場合、その部分に発生しやすくなります。「合成」処理を行うと、完全透明部分の色を不透明部分の色から合成するため、色の変化の差を抑え、モスキートノイズの発生を抑えることができます。また、一般的な JPEG では 色の情報が隣のピクセルと混ざりますが、これも「合成」処理を行うことで、(合成しなかった場合の) 意図しない完全透明部分の色と不透明部分の色が混ざる事を抑えることができます。
+ 通常は「除去」を選んでください。完全に透明な部分には色の情報は必要ありません。また除去を行えば画像の圧縮後のファイルサイズも小さくすることができます。
 「ltAddAlpha形式で出力する」がチェックされている場合はこのオプションは使用不可になります。ltAddAlpha形式での「完全透明」は、不透明度0、色は真っ黒以外にあり得ないからです。
+
+
「出力フォルダ - 入力ファイルと同じフォルダ」
+
 出力するファイルを、入力ファイルとおなじフォルダに出力するようにします。
+
「出力フォルダ - 指定フォルダ」
+
 出力ファイルを、下の入力欄に指定したフォルダに出力します。
+ 「参照 ...」ボタンをクリックすると、出力フォルダを選択するダイアログボックスを表示することができます。
+ 入力欄に相対フォルダを指定した場合は、入力ファイルのあるフォルダからの相対位置で指定することができます。
+
「出力フォルダ - 同名のファイルがあった場合に上書きする」
+
 このチェックボックスをチェックすると、同名のファイルがあった場合、上書きします。
+
「エラーが発生しなかった場合はログを表示しない」
+
 このチェックボックスをチェックすると、変換が終わって、変換中にエラーが発生しなかった場合は、ログを確認するためのウィンドウを表示しません。
+
「閉じる」
+
 このツールを終了します。
+ + + + + diff --git a/docs/kr2doc/contents/TPC.png b/docs/kr2doc/contents/TPC.png new file mode 100644 index 0000000000000000000000000000000000000000..27a772dd32abd606180251d480e717b23d2f4ebb GIT binary patch literal 14805 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 + + + + + + トランジションについて + + + + + + + + +

トランジションとは +

+ トランジションは、時間をかけて画面の入れ替えを行う物です。吉里吉里2のトランジションは、レイヤ単体に対して行うことも、レイヤツリーに対して行うこともできます。
+ レイヤに切り替わり元を指定した場合は、二つのレイヤが入れ替わることになります。
+ 前者の場合は該当するレイヤが、後者の場合はレイヤのツリー構造がそのままそっくり入れ替わります。
+ Layer.beginTransition メソッドを参照してください。
+
+ 吉里吉里2はトランジションを「トランジションハンドラ」と呼ばれる物で管理しています。これらは Layer.beginTransition メソッドの name 引数で指定する物で、現バージョンでは吉里吉里本体内に3つ持っています。プラグインにより拡張することもできます。
+
+ 以下、吉里吉里本体に内蔵しているトランジションハンドラと、拡張トランジションプラグイン ( extrans.dll ) で使用可能になるトランジションハンドラを説明します。
+
+

オプションの指定 +

+
+
+
TJS2 から利用する場合
+
 Layer.beginTransition メソッドの options 引数に、辞書配列の形で指定します。たとえば、"universal" トランジションを、vague=100 time=2000 rule=rule1.png で指定する場合は、options 引数に以下のように指定します。
+
+%[vague:100, time:2000, rule:"rule1.png"]
+
KAG から利用する場合
+
 KAG の場合、trans タグにオプションを、属性としてそのまま記述します。ただし、オプション以外にも指定する属性 ( layer, children, method 属性 ) があります。これらの属性と一緒にオプションを指定することになります。
+ たとえば、背景レイヤに、子レイヤも含めて、vague=100 time=2000 rule=rule1.png の "universal" トランジションを行うには以下のようにします。
+
+@trans layer=base children=true method=universal vague=100 time=2000 rule=rule1.png
+
+ また、たとえば "wave" トランジションを maxomega=0.1 maxh=20 で使いたい場合は以下のようにします。
+
+@trans layer=base children=true method=wave maxomega=0.1 maxh=20
+

内蔵トランジションハンドラ +

+ 吉里吉里は本体内に以下の3つのトランジションハンドラを持っています。
+
+
+
crossfade
+
 "crossfade" トランジション (クロスフェードトランジション) は、最も単純なトランジションで、単純なクロスフェードを行います。
+ オプションは以下の通りです。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
universal
+
 "universal" トランジション (ユニバーサルトランジション) は、ルール画像と呼ばれる、グレースケールの画像に従ってトランジションを行う物です。ルール画像は rule オプションで指定し、この画像のより暗いところからより早く切り替わり元 ( KAG における裏画面 ) に切り替わります。
+ ルール画像が、トランジションを行おうとした画面より小さい場合はタイル状に敷き詰められ、トランジションを行おうとした画面よりも大きい場合は左上の部分のみが使われます。
+ KAG のリファレンスに詳しい説明があります。
+ オプションは以下の通りです。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
rule (必須)
+
 ルール画像ファイル名を指定します。ルール画像は 256 階調グレースケールの画像である必要があります。それ以外の画像を指定した場合は強制的にグレースケールに変換されます。
+
vague
+
「あいまい領域値」を指定します。小さい値 ( 0 とか ) を指定すると、画面の切り替わり前の部分と切り替わり後の部分の境界がはっきりします。大きい値 ( 128 とか ) を指定すると、この境界はぼやけ、なめらかになります。ルール画像によって最適な値があります。省略すると 64 が指定されたと見なされます。
+
scroll
+
 "scroll" トランジション (スクロールトランジション) は、切り替わり元か切り替わり先のどちらかあるいは両方をスライドさせ、スクロール効果を出すことのできるトランジションです。
+ オプションは以下の通りです。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
from
+
 切り替わり元 ( KAG における裏ページ ) のレイヤがどちらの方向から現れてくるかを指定します。
+ TJS で指定する場合、sttLeft を指定すると左から(デフォルト)、sttTop を指定すると上から、sttRight を指定すると右から、sttBottom を指定すると下から現れてきます。
+ KAG の trans タグで指定する場合、"left" を指定すると左から(デフォルト)、"top" を指定すると上から、"right" を指定すると右から、"bottom" を指定すると下から現れてきます。
+
stay
+
 切り替わり元および切り替わり先の画像がどのように動くかを指定します。
+ TJS で指定する場合、ststNoStay を指定すると、切り替わり先の画像が切り替わりもとの画像に押されるようにして出ていきます (デフォルト)。2画面をつなげてスクロールさせている効果を出すことができます。ststStaySrc を指定すると、切り替わり先の画像が移動して出ていき、その背後から切り替わり元の画像が現れます。ststStayDest を指定すると、切り替わり先の画像は静止して、そこに切り替わり元の画像が入ってきます。
+ KAG で指定する場合、"nostay" が ststNoStay、"stayback" が ststStaySrc、"stayfore" が ststStayDest を表します。
+ +

拡張トランジションプラグイン +

+ 拡張トランジションプラグイン ( extrans.dll ) は 吉里吉里2用のプラグインで、本体に内蔵されていないようなトランジションをいくつか使用可能にする物です。
+ 使用可能にするには、他のプラグインと同じく、Plugins.link メソッドで接続する必要があります ( KAG の場合は loadplugin タグ )。接続されるだけで以下のトランジションハンドラが使用可能になります。
+
+
+
wave
+
"wave" (波) トランジションは、ラスタスクロールによる波を表現し、切り替えるトランジションです。
+
+wave_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
wavetype
+
 波の動きを指定します。0 を指定するとトランジションの最初と最後で波が細かく、中程で波がおおらかになります。1 を指定すると最初に波が細かく、だんだんおおらかになります。2 を指定すると最初は波がおおらかで、徐々に細かくなります。デフォルトは 0 です。
+
maxh
+
 波の横幅の最大値をピクセル単位で指定します。値を大きくすると波の刻みが深くなります。デフォルトは 50 です。
+
maxomega
+
 波の角速度 ( rad/pixel ) の最大値を指定します。値を大きくすると波が細かくなります。小さくすると波がおおらかになります。デフォルトは 0.2 です。
+
bgcolor1
+
 初期背景色を 0xRRGGBB 形式で指定します。
+
bgcolor2
+
 最終背景色を 0xRRGGBB 形式で指定します。背景色は、初期背景色から始まり、徐々に最終背景色に変わっていきます。
+ +
mosaic
+
"mosaic" (モザイク) トランジションは、矩形のモザイクがかかったような表現をするトランジションです。
+
+mosaic_trans.png
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
maxsize
+
 モザイクの矩形の大きさの最大値を指定します。デフォルトは 30 です。値を大きくするとモザイクが荒くなります。
+ +
turn
+
"turn" トランジションは、小さなカードがいくつもくるりとひっくり返るような表現をするトランジションです。
+
+turn_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
bgcolor
+
 背景色を 0xRRGGBB 形式で指定します。
+ +
rotatezoom
+
"rotatezoom" トランジションは、トランジション元 ( KAG における裏画面 ) を回転させながらズームインあるいはズームアウトさせるトランジションです。
+
+rotatezoom_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
factor
+
 初期拡大率を指定します。0 を指定すると最初は見えません。中央から回転しながらズームインします。2 を指定すると2倍の拡大率から徐々に等倍まで回転しながらズームアウトします。3 以上の数や実数も指定できます。デフォルトは 1 (等倍) になっています。
+
accel
+
 拡大縮小の動作を、加速度的に行うかどうかを指定します。-2 以下の負の数を指定すると、最初が早く、徐々に遅くなります。2 以上の正の数を指定すると、最初は遅く、徐々に早くなります。0 を指定すると直線的な動きになります。しかし視覚効果で直線的には見えないかも知れません。デフォルトは 0 です。
+
twist
+
 どちらの方向にどれだけ回転するかを指定します。正の数を指定すると、反時計回りに回転します。負の数を指定すると時計回りに回転します。指定する値は回転数です。デフォルトは 2 です。
+
twistaccel
+
 回転の動作を、加速度的に行うかどうかを指定します。-2 以下の負の数を指定すると、最初が早く、徐々に遅くなります。2 以上の正の数を指定すると、最初は遅く、徐々に早くなります。0 を指定すると直線的な動きになります。デフォルトは -2 です。
+ +
rotatevanish
+
"rotatevanish" トランジションは、トランジション先 ( KAG における表画面 ) を回転させながらズームアウトさせるトランジションです。
+
+rotatevanish_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
accel
+
 拡大縮小の動作を、加速度的に行うかどうかを指定します。-2 以下の負の数を指定すると、最初が早く、徐々に遅くなります。2 以上の正の数を指定すると、最初は遅く、徐々に早くなります。0 を指定すると直線的な動きになります。しかし視覚効果で直線的には見えないかも知れません。デフォルトは 2 です。
+
twist
+
 どちらの方向にどれだけ回転するかを指定します。正の数を指定すると、反時計回りに回転します。負の数を指定すると時計回りに回転します。指定する値は回転数です。デフォルトは 2 です。
+
twistaccel
+
 回転の動作を、加速度的に行うかどうかを指定します。-2 以下の負の数を指定すると、最初が早く、徐々に遅くなります。2 以上の正の数を指定すると、最初は遅く、徐々に早くなります。0 を指定すると直線的な動きになります。デフォルトは 2 です。
+ +
rotateswap
+
"rotateswap" トランジションは、トランジション先とトランジション元を回転させながら入れ替えるトランジションです。トランジション先 ( KAG における表画面 ) は回転しながら奥に行き、そのかわりトランジション元 ( KAG における裏画面 ) が回転しながら手前に来ます。
+
+rotateswap_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
twist
+
 どちらの方向にどれだけ回転するかを指定します。正の数を指定すると、反時計回りに回転します。負の数を指定すると時計回りに回転します。指定する値は回転数です。デフォルトは 1 です。
+
bgcolor
+
 背景色を 0xRRGGBB 形式で指定します。
+ +
ripple
+
"ripple" トランジションは、波紋が広がっていくような表現を行いながら入れ替えるトランジションです。
+
+ripple_trans.jpg
+
+ 以下のオプションがあります。
+
+
+
time (必須)
+
 トランジションを行っている時間をミリ秒単位で指定します。
+
centerx
+
 波紋の中心 X 座標を指定します。省略すると画像の中央になります。
+
centery
+
 波紋の中心 Y 座標を指定します。省略すると画像の中央になります。
+
rwidth
+
 波紋の細かさを指定します。16, 32, 64, 128 のいずれかを指定することができ、数値が小さければ小さいほど細かい波紋になります。省略すると 128 が指定されたと見なされます。
+
roundness
+
 波紋が縦に長い楕円になるか、真円になるか、横に長い楕円になるかを指定します。0.0 〜 1.0 (ただし 0.0 は含まず) の範囲の数値を指定すると ( たとえば 0.5 など )、縦に長い楕円になります。1.0 を指定すると真円になります。1.0 よりも大きい数値を指定すると (たとえば 2 など )、横に長い楕円になります。省略すると 1.0 が指定されたと見なされます。
+
speed
+
 波の広がる速度を指定します。省略すると 6.0 が指定されたと見なされます。
+
maxdrift
+
 波の激しさを指定します。省略すると 24 が指定されたと見なされます。

+
Note
+ ripple トランジションは、初めて実行するときに、かなり大きなメモリを割り当てて ( 0.5〜4MB ほどでオプションによって異なります ) 、 +なめらかにトランジションを実行するための数値計算をあらかじめ完了させ、そのメモリに格納しておきます。 +これには少し時間 ( 0.01秒〜0.5秒ほど ) がかかる場合があります。
+ トランジションを行う画像のサイズ、centerx, centery, rwidth, roundness, maxdrift の各条件がすべて同じならば、前回の +数値計算の情報を再利用します。過去4つまでの条件に対する数値計算の結果が保持されています ( キャッシュされています )。 +それ以上の新たな条件に対する数値計算が要求された場合は、一番古い情報から削除されていきます。
+ これらをふまえ、このトランジションを良く使う場合は、実行前にダミーで一回トランジションを実行しておくと、以降の +数値計算を避けることができます。
+

+

+ +
+ + + + diff --git a/docs/kr2doc/contents/UndoIcon.png b/docs/kr2doc/contents/UndoIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..78ad386549e62c3c0b54b038d7d3fcbe2315f59f GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k>$Q-g#gP=v1}$S?RmGGK5$aOVV2#@y4zF@$4g@(ylR9u^55oxKii z?_=9{m)kb*Ow)GQsO`|!tUsZUQRNVmFe7KB!`Ax`R5OgYm>G^uOkU~saSjX62nJ7A KKbLh*2~7Z#{X!N1 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/UpdateIcon.png b/docs/kr2doc/contents/UpdateIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9383d9a9e30c34efc83546a4cfc79ccfdc8bcde0 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=0;*+yJH;fV_r=0|yQ? zG&KANivMT$52k>$Q-g#gP=v1}$S?RmGGK5$aOVV2#@y4zF@!^w^`Idmg8>iALhn9Z2Ie0>(~=**O0wMuG=jm? L)z4*}Q$iB}1#L!i literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/about.html b/docs/kr2doc/contents/about.html new file mode 100644 index 0000000..7df7c2c --- /dev/null +++ b/docs/kr2doc/contents/about.html @@ -0,0 +1,36 @@ + + + + + + + 吉里吉里2 について + + + + + + + + +

吉里吉里2 について +

+ 吉里吉里2は、JavaとJavaScriptににたスクリプト言語であるTJS2を用いていろいろな事をやるためのソフトです。
+ TJS2 の文法については TJS2 ヘルプ をご覧ください。
+ ここでは吉里吉里のクラスを中心に説明を行います。
+
+ +

作者連絡先など +

+作者 : W.Dee <dee@kikyou.info>
+一般的なご質問や不具合報告などは下記の吉里吉里ダウンロードページの掲示板をご利用ください。
+
+サポートやダウンロードはこちらから
+吉里吉里ダウンロードページ : http://kikyou.info/tvp/
+
+ + + + + diff --git a/docs/kr2doc/contents/browser.css b/docs/kr2doc/contents/browser.css new file mode 100644 index 0000000..e31c12e --- /dev/null +++ b/docs/kr2doc/contents/browser.css @@ -0,0 +1,2 @@ +@charset "shift_jis"; +@import url("browser2.css"); diff --git a/docs/kr2doc/contents/browser2.css b/docs/kr2doc/contents/browser2.css new file mode 100644 index 0000000..b24b709 --- /dev/null +++ b/docs/kr2doc/contents/browser2.css @@ -0,0 +1,299 @@ +@charset "shift_jis"; + +body{ + padding: 0px; + background-color: white; + background-attachment: fixed; + color: black; + line-height: 127%; +} + +h1:before{ + content: "◆ "; +} + +h1{ + background-color: #001591; + color: white; + background-image: url("./grad.png"); + background-position: left; + background-repeat: repeat-y; + margin: 0em 0em 1em 0em; + padding: 0.1em; + border-top: 1px solid #70a0e0; + border-left: 1px solid #70a0e0; + border-bottom: 1px solid #002040; + border-right: 1px solid #002040; + font-size: 1.04em; + letter-spacing: 0.05em; +} + + +img{ + border: 0; + vertical-align: middle; +} + +div.para { + margin: 0px; + border: 0px; + padding: 0em 0em 4em 0em; +} + +dt { + display: list-item; + list-style: disc; +} + +dl dt{ + margin-left: 2em; + margin-top: 1em; + font-weight: bold; +} + +dl dd{ + margin-left: 3em; +} + +dl{ + margin-bottom: 1em; +} + +div.taggenre{ + text-align: right; +} + +span.b{ + font-weight: bold; +} + +span.i{ + font-style: italic; +} + +span.comlink{ + font-size: 0.85em; +} + +code.inlinecode{ + padding-left: 0.5em; + padding-right: 0.5em; + font-family: monospace; + white-space: pre; +} + +code em { + font-style: normal; + font-weight: bold; +} + +div.descimg{ + background-color: transparent; + color: #303030; + text-align: center; +} + +span.weak{ + background-color: transparent; + color: gray; +} + +span.comment{ + background-color: transparent; + color: #0000a0; +} + +span.linenumber{ + background-color: transparent; + color: gray; +} + +span.arg{ + background-color: transparent; + color:blue; +} + +span.defarg{ + background-color: transparent; + color:gray; +} + +span.defargval{ + background-color: transparent; + color:red; +} + + +span.tagrequiredattrib{ + background-color: transparent; + color:red; +} + + +code.bq{ + display: block; + overflow: auto; + padding: 0.3em; + border: 2px solid #808080; + margin-top: 0em; + margin-bottom: 0em; + font-family: monospace; + white-space: nowrap; +} + +dfn{ + font-style: normal; +} + +div a.jump{ + background-color: transparent; + color: #2d903c; + text-decoration: underline; + border: 0px; + padding: 1px 2px 1px 2px; +} + +div a.jump:visited{ + background-color: transparent; + color: #2d608c; +} + +div a.jump:hover{ + background : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + + + +table.keywords a{ + background-color: transparent; + color: #2d903c; + text-decoration: none; + border: 0px; + padding: 1px 2px 1px 2px; +} + +table.keywords a:visited{ + background-color: transparent; + color: #2d608c; +} + +table.keywords a:hover{ + background-color : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + +ol > li{ + list-style-type: decimal; +} + +div.note{ + margin-left: 4em; + margin-right: 4em; + margin-top: 0em; + margin-bottom: 0em; + border-left: 0.1em solid #808080; + padding-left: 1em; + font-size: 0.8em; + line-height: 110%; +} + +div.note div.notehead{ + margin: 0em; + border: 0em; + padding: 0em 0em 1em 0em; +} + +div.note div.notehead span.noteheadspan { + margin: 0em; + border-top: 0em; + border-left: 0em; + border-right: 0em; + border-bottom: 1px solid black; + padding: 0em 1em 0em 1em; +} + +table.keywords{ + font-size: 0.9em; + line-height: 1em; + margin: 1em 0em 1em 0em; + border: 0px; + padding: 0px; +} + +table.keywords td{ + white-space: nowrap; + margin: 0px; + border: 0px; + padding: 0px; +} + +table.keywords a span{ + background-color: transparent; + color: black; +} + +table.tagparams { + width: 100%; + margin-bottom: 1em; +} + +table.tagparams td{ + border-top: 1px solid black; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.5em; + padding-right: 0.5em; +} + +table.tagparams td.tagattribname{ + background-color: transparent; + color: blue; +} + +div.tagremarks { + margin-bottom: 1em; +} + +span.toindexanchor:before { + content: "△ "; +} + +span.toindexanchor:after { + content: " △"; +} + +div.toindex{ + margin-top: 1em; + text-align: center; +} + +div.toindex a{ + text-decoration: none; +} + +div.taggenrehead { + font-weight: bold; + background-color: transparent; + color: #000080; + margin-top: 1em; +} + +span.taglistlink { + font-weight: bold; +} + +table.taglist td.taglistodd{ + background-color: #f0f0ff; + color: black; +} +table.taglist td.taglisteven{ + background-color: #f0fff0; + color: black; +} diff --git a/docs/kr2doc/contents/crAppStart.png b/docs/kr2doc/contents/crAppStart.png new file mode 100644 index 0000000000000000000000000000000000000000..7e12aefc7a540187d0e3670d9dae238b2efa2edd GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkeBG`;uunKEBOadL4Di*h>rIPk3QG4RkyAG|MsoqzQ&0AufJb6uDQ>z z^zJ>I(EH_#o$u2dy6Wv&h1eU{gTe~DWM4fI@wJ( literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crArrow.png b/docs/kr2doc/contents/crArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..17f291280b6ec5e4d426dae1d1a5112c709b6a1b GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08Ukmuy-;uunKYwoFyf((KZtckMPjtf?BPhG$wX`I&=@Z;RSMkbZ`O|Ml> z`euAM#D3VRfrV8~r=zCDZ$;Q&w`0X87G&3b{Z}>b#j{NyXE1oW`njxgN@xNA@f0>w literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crCross.png b/docs/kr2doc/contents/crCross.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c1efcef9ed5118cf65d13c01d0b730ceffa085 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkSFKq;uunKEBOadL4DhQi_ZEZg8wBXI>P__xBtk(ptirZXhJDl0#GG` Mr>mdKI;Vst0PY7T-v9sr literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crDrag.png b/docs/kr2doc/contents/crDrag.png new file mode 100644 index 0000000000000000000000000000000000000000..4d972e687529036a72bafc898b1cedfecbda924e GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkQeCb;uunKtMuGP&IShomy2(22$^lraMpF$;UX}x*n7tX7s>b18XRi+ zKZScdC%trTk_ P4QKFl^>bP0l+XkKe49KM literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crHBeam.png b/docs/kr2doc/contents/crHBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..e61cdadd6cd13022aecc937d6e9e110ec455fdac GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08Ukf-43;uunKEBOadL4DhQ6~Xua@4Ktn8Qe(jn3$)*$HZ_hxn{DebkriC OS_V&7KbLh*2~7Yi9Vepz literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crHSplit.png b/docs/kr2doc/contents/crHSplit.png new file mode 100644 index 0000000000000000000000000000000000000000..98bc66d2b26ca917e6206e03d1ee75211ea2debc GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkZ0iO;uunKEBOadL4Di*BLW|19Qhuh@X?0NL#BUa`j7h(3H+&zM-Obe gu|+WV>Hq%>4?>GYELG$99`mUC!Db5SK9VJ{RfBAzN^fg z@4w#vZ~TW%u>OB@=lB1T{~SAhI~@I*kYqpM2EV%0o5UlHRU)SiIT@4>7G|9FZL$Fx O&fw|l=d#Wzp$Py(BSDG) literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crHelp.png b/docs/kr2doc/contents/crHelp.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa3c1c753850981d96e49d69ad87f2fa60a8707 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkQd|W;uunKEBOadL4Di*iq86kMRG20>J!d?c>m9^vaSC8@1K(YYS{(% zJ07`Tx8TP9dWW0;O~3N|uZv(1z5kC<9Qo%Ss{ a>S1v7)aP4N=ntH*_brZRZC`njxg HN@xNATckYj literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crIBeam.png b/docs/kr2doc/contents/crIBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3a779a9669832d7f40812832497348ca617240 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08Ukf-43;uunKEBOadL4Di*8y(7D9UgtJ&k{&jToBdL&%j{aP=H$wT@0SCelF{r5}E*p;z9oa literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crNo.png b/docs/kr2doc/contents/crNo.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb05dccc251a21924218428fb8b2a2c90ab9c2d GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkQeOf;uunKEBOadL4Di*8y)=L93C;)Psqq;7y8uy-}ukt{~RiJ>i?zx znEZ#?qvj8@N?k*Ty{W^a`MeWWOlQzq`JP4S8~egr3TzF%OwwJKy?mG$mf96mghp>% Q2sEC-)78&qol`;+0M4^OumAu6 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crNoDrop.png b/docs/kr2doc/contents/crNoDrop.png new file mode 100644 index 0000000000000000000000000000000000000000..12d75277b091a2d8c04056facbeb2c5db19faba3 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkQe6Z;uunKEBOadL4DhQi%$Db4v#(;D}3~m^0-sOt+H)Dv(W2&#?C)$ zzw-QlT-@k#Cssjlx44JPb*9b@_Z^bn>Mxjd_kP2Xx0@Xv^_rg1*s$=&+g3pa;TeUB U-vWc(fi^IBy85}Sb4q9e0PTQ9g#Z8m literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crSQLWait.png b/docs/kr2doc/contents/crSQLWait.png new file mode 100644 index 0000000000000000000000000000000000000000..8675a8d5a18819d44f4bfa2de6a29ac847ddec95 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8x$P6T7qbf>)6kC8#h%1o(|NsBeoAd7iSxhBC ze!>44o^Chr0`jUnT^vIyZYBQ!D)`UO^Pk_~#Nm^{tDiBSWas(j@aboL$)}rH0zWO+ z$a(yWVZQYHxmw4ca2}=qo0~mLS)`Tt0zZG|@Ay;0zvTPRstq$Aav0BVyLI?&>kh`7 zp#tUG%$tw&>N+m56}ri%X7B9bxTWQ1@_*70`d!D&xqJS9$$vNh z{y6`ky>X%3A*OD}l>Y~NnO?KbW-@y(zsmK9AjA3ek_U^XO8Wy1WbkzLb6Mw<&;$T9 C@;mJS literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crSizeNESW.png b/docs/kr2doc/contents/crSizeNESW.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4be9e1a4bde43ade6b313ad5c07e0845e40f79 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08UkZ11c;uunKEBOadL4DhQ7vVPwi)3A7*ac5Jx>!#5!9M9Pw^ChmN0Gon mex)alEcP7<>L-;n7#S|LR$SU;r|Jnbg2B_(&t;ucLK6TAf-gh> literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/crSizeNS.png b/docs/kr2doc/contents/crSizeNS.png new file mode 100644 index 0000000000000000000000000000000000000000..afcfeeeb540d8cd4c3717dfef001b30483fffe13 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!Hle|NocXoPQU{Vk!yp z3;xgWbi08Ukf-hG;uunKEBOadL4Di*8y))<9lTWlu$IL@!~Z^PlE-wscaNmy|_L2*h$ iX~WkhU&oBYDhy(sC2u`{h|UA*X7F_Nb6Mw<&;$S%B{S6k literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/documentid.js b/docs/kr2doc/contents/documentid.js new file mode 100644 index 0000000..e8e96a8 --- /dev/null +++ b/docs/kr2doc/contents/documentid.js @@ -0,0 +1,2 @@ +// document id +var doc_id = "kr2doc"; diff --git a/docs/kr2doc/contents/f_AsyncTrigger.html b/docs/kr2doc/contents/f_AsyncTrigger.html new file mode 100644 index 0000000..62ab623 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger.html @@ -0,0 +1,46 @@ + + + + + + + AsyncTrigger + + + + + + + + +

AsyncTrigger

+ AsyncTrigger クラスは、いったん吉里吉里に制御が戻った直後のイベント配信のタイミングにイベントを発生させるためのクラスです。この機能を非同期トリガ ( asynchronous trigger ) と呼びます。
+ 吉里吉里のようにイベント駆動型のプログラミングモデルをとるスクリプトにおいて、イベントハンドラ内では実行できないような処理 ( たとえばイベントの発生元のオブジェクトをそのイベントハンドラ内で無効化しようとするなど ) を、そのイベントハンドラ外で行いたい時に便利です。
+
+

メンバ

+
+
コンストラクタ
+
+AsyncTrigger
+
+
メソッド
+
+cancel ( トリガのキャンセル )
+trigger ( トリガを引く )
+
+
プロパティ
+
+cached ( イベントをキャッシュするかどうか )
+mode ( モード )
+
+
イベント
+
+onFire ( 発砲するとき )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_AsyncTrigger.html b/docs/kr2doc/contents/f_AsyncTrigger_AsyncTrigger.html new file mode 100644 index 0000000..18122ed --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_AsyncTrigger.html @@ -0,0 +1,57 @@ + + + + + + + AsyncTrigger - AsyncTriger オブジェクトの構築 + + + + + + + + + +

AsyncTrigger.AsyncTrigger

+
+
機能/意味
+
+AsyncTriger オブジェクトの構築
+
タイプ
+
+AsyncTriggerクラスのコンストラクタ
+
+
構文
+
+AsyncTrigger(owner, actionname="action")
+
+
引数
+
+ + + + + +
owner  イベントの発生先を指定します。
+
actionname  owner で指定したイベントの発生先オブジェクトで、イベントを受け取るメソッド名を + 指定します。空文字列を指定すると owner はメソッドとみなされ、イベントの発生ごとに + owner が直接呼ばれます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  AsyncTrigger クラスのオブジェクトを構築します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_cached.html b/docs/kr2doc/contents/f_AsyncTrigger_cached.html new file mode 100644 index 0000000..543f0d8 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_cached.html @@ -0,0 +1,39 @@ + + + + + + + cached - イベントをキャッシュするかどうか + + + + + + + + + +

AsyncTrigger.cached

+
+
機能/意味
+
+イベントをキャッシュするかどうか
+
タイプ
+
+AsyncTriggerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  イベントをキャッシュするかどうかを表します。値を設定することもできます。
+  真を指定すると、発砲までに何度 AsyncTrigger.trigger メソッドを呼んでも + 発砲は1回だけとなります。
+  偽を指定すると、発砲までに呼んだ回数分、発砲されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_cancel.html b/docs/kr2doc/contents/f_AsyncTrigger_cancel.html new file mode 100644 index 0000000..74e7565 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_cancel.html @@ -0,0 +1,49 @@ + + + + + + + cancel - トリガのキャンセル + + + + + + + + + +

AsyncTrigger.cancel

+
+
機能/意味
+
+トリガのキャンセル
+
タイプ
+
+AsyncTriggerクラスのメソッド
+
+
構文
+
+cancel()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  AsyncTrigger.trigger メソッドで引いたトリガをキャンセルします。
+  発砲前であればいつでもキャンセルできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_mode.html b/docs/kr2doc/contents/f_AsyncTrigger_mode.html new file mode 100644 index 0000000..91b84d2 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_mode.html @@ -0,0 +1,46 @@ + + + + + + + mode - モード + + + + + + + + + +

AsyncTrigger.mode

+
+
機能/意味
+
+モード
+
タイプ
+
+AsyncTriggerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  動作のモードを表します。値を設定することもできます。
+  以下の値のいずれかを指定します。
+ atmNormal : 通常のイベント配信の段階で発砲されます。
+ atmExclusive : 他の非同期イベントよりも優先されて発砲されます
+ atmAtIdle : アイドル状態 ( 他に配信するイベントが無くなったとき ) に発砲されます。
+  同時にトリガを引いたときに発砲される順序は atmExclusive, atmNormal, atmIdle の順になります。
+  同じモードのトリガが複数引かれている場合は、トリガが引かれた順に発砲します。
+
+
参照
+
+Timer.mode
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_onFire.html b/docs/kr2doc/contents/f_AsyncTrigger_onFire.html new file mode 100644 index 0000000..72b34e3 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_onFire.html @@ -0,0 +1,44 @@ + + + + + + + onFire - 発砲するとき + + + + + + + + + +

AsyncTrigger.onFire

+
+
機能/意味
+
+発砲するとき
+
タイプ
+
+AsyncTriggerクラスのイベント
+
+
構文
+
+onFire()
+
+
引数
+
+なし
+
+
説明
+
+  AsyncTrigger.trigger メソッドでトリガを引いた後に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_AsyncTrigger_trigger.html b/docs/kr2doc/contents/f_AsyncTrigger_trigger.html new file mode 100644 index 0000000..9f1caf9 --- /dev/null +++ b/docs/kr2doc/contents/f_AsyncTrigger_trigger.html @@ -0,0 +1,50 @@ + + + + + + + trigger - トリガを引く + + + + + + + + + +

AsyncTrigger.trigger

+
+
機能/意味
+
+トリガを引く
+
タイプ
+
+AsyncTriggerクラスのメソッド
+
+
構文
+
+trigger()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  イベントを発生させます。
+  このメソッドを呼んだ後、吉里吉里本体に制御が戻り、吉里吉里本体がたまった非同期イベントを配信する + 段階になると AsyncTrigger.onFire イベントが発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer.html b/docs/kr2doc/contents/f_CDDASoundBuffer.html new file mode 100644 index 0000000..dd43bb6 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer.html @@ -0,0 +1,54 @@ + + + + + + + CDDASoundBuffer + + + + + + + + +

CDDASoundBuffer

+ CDDASoundBuffer クラスは、CD-DAの再生を管理するクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+CDDASoundBuffer
+
+
メソッド
+
+fade ( フェードを開始する )
+open ( メディアを開く )
+play ( メディアを再生する )
+stop ( メディアを停止する )
+stopFade ( フェードを停止する )
+
+
プロパティ
+
+looping ( ループ再生を行うかどうか )
+paused ( 一時停止状態かどうか )
+position ( 再生位置 )
+status ( ステータス )
+totalTime ( メディアの再生時間 )
+volume ( 音量 )
+volume2 ( 第2音量 )
+
+
イベント
+
+onFadeCompleted ( フェードが終了した )
+onStatusChanged ( ステータスが変更された )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_CDDASoundBuffer.html b/docs/kr2doc/contents/f_CDDASoundBuffer_CDDASoundBuffer.html new file mode 100644 index 0000000..818e83d --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_CDDASoundBuffer.html @@ -0,0 +1,53 @@ + + + + + + + CDDASoundBuffer - CDDASoundBuffer オブジェクトの構築 + + + + + + + + + +

CDDASoundBuffer.CDDASoundBuffer

+
+
機能/意味
+
+CDDASoundBuffer オブジェクトの構築
+
タイプ
+
+CDDASoundBufferクラスのコンストラクタ
+
+
構文
+
+CDDASoundBuffer(owner)
+
+
引数
+
+ + + +
owner  イベントの発生先を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  CDDASoundBuffer クラスのオブジェクトを構築します。
+  イベントが発生すると owner で指定したオブジェクトの action メソッドを呼び出します。owner に null を指定すると action メソッドは呼ばれません。通常は Window クラスのオブジェクトを owner に指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_fade.html b/docs/kr2doc/contents/f_CDDASoundBuffer_fade.html new file mode 100644 index 0000000..ae6271f --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_fade.html @@ -0,0 +1,60 @@ + + + + + + + fade - フェードを開始する + + + + + + + + + +

CDDASoundBuffer.fade

+
+
機能/意味
+
+フェードを開始する
+
タイプ
+
+CDDASoundBufferクラスのメソッド
+
+
構文
+
+fade(to, time, delay=0)
+
+
引数
+
+ + + + + + + +
to  到達させる音量を指定します。
+  音量の指定については CDDASoundBuffer.volume プロパティを参照して + ください。
+
time  フェードにかける時間を ms 単位で指定します。
+
delay  フェード開始までの待ち時間を ms 単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  フェード ( 連続的な音量の変化 ) を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_looping.html b/docs/kr2doc/contents/f_CDDASoundBuffer_looping.html new file mode 100644 index 0000000..f8bec37 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_looping.html @@ -0,0 +1,38 @@ + + + + + + + looping - ループ再生を行うかどうか + + + + + + + + + +

CDDASoundBuffer.looping

+
+
機能/意味
+
+ループ再生を行うかどうか
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ループ再生を行うかどうかを表します。値を設定することもできます。
+  真を指定するとループ再生がされます。
+ +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_onFadeCompleted.html b/docs/kr2doc/contents/f_CDDASoundBuffer_onFadeCompleted.html new file mode 100644 index 0000000..75f7654 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_onFadeCompleted.html @@ -0,0 +1,44 @@ + + + + + + + onFadeCompleted - フェードが終了した + + + + + + + + + +

CDDASoundBuffer.onFadeCompleted

+
+
機能/意味
+
+フェードが終了した
+
タイプ
+
+CDDASoundBufferクラスのイベント
+
+
構文
+
+onFadeCompleted()
+
+
引数
+
+なし
+
+
説明
+
+  CDDASoundBuffer.fade メソッドで開始したフェードが終了したときに発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_onStatusChanged.html b/docs/kr2doc/contents/f_CDDASoundBuffer_onStatusChanged.html new file mode 100644 index 0000000..ced023d --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_onStatusChanged.html @@ -0,0 +1,49 @@ + + + + + + + onStatusChanged - ステータスが変更された + + + + + + + + + +

CDDASoundBuffer.onStatusChanged

+
+
機能/意味
+
+ステータスが変更された
+
タイプ
+
+CDDASoundBufferクラスのイベント
+
+
構文
+
+onStatusChanged(status)
+
+
引数
+
+ + + +
status  新しいステータスです。
+  CDDASoundBuffer.status プロパティを参照してください。
+
+
+
説明
+
+  再生のステータス ( 状態 ) が変わった時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_open.html b/docs/kr2doc/contents/f_CDDASoundBuffer_open.html new file mode 100644 index 0000000..246b633 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_open.html @@ -0,0 +1,56 @@ + + + + + + + open - メディアを開く + + + + + + + + + +

CDDASoundBuffer.open

+
+
機能/意味
+
+メディアを開く
+
タイプ
+
+CDDASoundBufferクラスのメソッド
+
+
構文
+
+open(storage)
+
+
引数
+
+ + + +
storage + +  再生したいトラックを指定します。 + 数値を指定するとそのトラックを再生することになります。"ドライブ文字:トラック番号" の + 形式の文字列を指定するとそのドライブの指定されたトラック番号が再生されます ( 例 : "e:5" )。
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたメディアを開きます。このメソッドは再生を開始しません。
+ +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_paused.html b/docs/kr2doc/contents/f_CDDASoundBuffer_paused.html new file mode 100644 index 0000000..a8c544d --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_paused.html @@ -0,0 +1,39 @@ + + + + + + + paused - 一時停止状態かどうか + + + + + + + + + +

CDDASoundBuffer.paused

+
+
機能/意味
+
+一時停止状態かどうか
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  一時停止状態かどうかを表します。値を設定することもできます。
+  真の場合は一時停止状態です。
+ +  現バージョンでは実装されていません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_play.html b/docs/kr2doc/contents/f_CDDASoundBuffer_play.html new file mode 100644 index 0000000..c93448b --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_play.html @@ -0,0 +1,48 @@ + + + + + + + play - メディアを再生する + + + + + + + + + +

CDDASoundBuffer.play

+
+
機能/意味
+
+メディアを再生する
+
タイプ
+
+CDDASoundBufferクラスのメソッド
+
+
構文
+
+play()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_position.html b/docs/kr2doc/contents/f_CDDASoundBuffer_position.html new file mode 100644 index 0000000..3895f91 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_position.html @@ -0,0 +1,38 @@ + + + + + + + position - 再生位置 + + + + + + + + + +

CDDASoundBuffer.position

+
+
機能/意味
+
+再生位置
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生位置を ms 単位で表します。値を設定するとその位置に移動します。
+ +  現バージョンでは実装されていません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_status.html b/docs/kr2doc/contents/f_CDDASoundBuffer_status.html new file mode 100644 index 0000000..b52e69c --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_status.html @@ -0,0 +1,40 @@ + + + + + + + status - ステータス + + + + + + + + + +

CDDASoundBuffer.status

+
+
機能/意味
+
+ステータス
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在の状態を表します。
+  状態は文字列で表され、以下の値をとります。
+ "unload" : メディアが開かれてない
+ "play" : メディアは再生中である
+ "stop" : メディアは停止中である
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_stop.html b/docs/kr2doc/contents/f_CDDASoundBuffer_stop.html new file mode 100644 index 0000000..94f7dd7 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_stop.html @@ -0,0 +1,48 @@ + + + + + + + stop - メディアを停止する + + + + + + + + + +

CDDASoundBuffer.stop

+
+
機能/意味
+
+メディアを停止する
+
タイプ
+
+CDDASoundBufferクラスのメソッド
+
+
構文
+
+stop()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_stopFade.html b/docs/kr2doc/contents/f_CDDASoundBuffer_stopFade.html new file mode 100644 index 0000000..d9aba34 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_stopFade.html @@ -0,0 +1,49 @@ + + + + + + + stopFade - フェードを停止する + + + + + + + + + +

CDDASoundBuffer.stopFade

+
+
機能/意味
+
+フェードを停止する
+
タイプ
+
+CDDASoundBufferクラスのメソッド
+
+
構文
+
+stopFade()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  CDDASoundBuffer.fade メソッドで開始したフェードを強制的に停止します。
+  音量は停止させた時点のままになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_totalTime.html b/docs/kr2doc/contents/f_CDDASoundBuffer_totalTime.html new file mode 100644 index 0000000..7561fd8 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_totalTime.html @@ -0,0 +1,38 @@ + + + + + + + totalTime - メディアの再生時間 + + + + + + + + + +

CDDASoundBuffer.totalTime

+
+
機能/意味
+
+メディアの再生時間
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メディアの総再生時間を ms 単位で表します。
+ +  現バージョンでは実装されていません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_volume.html b/docs/kr2doc/contents/f_CDDASoundBuffer_volume.html new file mode 100644 index 0000000..7703c64 --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_volume.html @@ -0,0 +1,37 @@ + + + + + + + volume - 音量 + + + + + + + + + +

CDDASoundBuffer.volume

+
+
機能/意味
+
+音量
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することもできます。
+ 0 〜 100000 の数値で指定し、 0 が完全ミュート、100000 が 100% の音量となります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_CDDASoundBuffer_volume2.html b/docs/kr2doc/contents/f_CDDASoundBuffer_volume2.html new file mode 100644 index 0000000..c1c66cd --- /dev/null +++ b/docs/kr2doc/contents/f_CDDASoundBuffer_volume2.html @@ -0,0 +1,42 @@ + + + + + + + volume2 - 第2音量 + + + + + + + + + +

CDDASoundBuffer.volume2

+
+
機能/意味
+
+第2音量
+
タイプ
+
+CDDASoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することができます。
+  CDDASoundBuffer.volume プロパティと違うのは、このプロパティは + CDDASoundBuffer.fade メソッドでも変化しないということです。
+  最終的な音量は、volume プロパティとこのプロパティの積で決定されます。volume プロパティが + 100000 ( 100% ) で volume2 プロパティも 100000 ( 100% ) ならば 100% × 100% = 100% で + 100% の音量で再生されます。volume プロパティが 50000 ( 50% ) で volume2 プロパティが 75000 ( 75% ) ならば + 50% × 75% = 37.5% で 37.5 % の音量で再生されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Clipboard.html b/docs/kr2doc/contents/f_Clipboard.html new file mode 100644 index 0000000..dd751f7 --- /dev/null +++ b/docs/kr2doc/contents/f_Clipboard.html @@ -0,0 +1,43 @@ + + + + + + + Clipboard + + + + + + + + +

Clipboard

+ Clipboard クラスは OSのクリップボードにアクセスする機能を提供するクラスです。このクラスからオブジェクトを作成することはできません。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+hasFormat ( 指定されたフォーマットがクリップボード内に存在するか )
+
+
プロパティ
+
+asText ( テキスト形式 )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Clipboard_asText.html b/docs/kr2doc/contents/f_Clipboard_asText.html new file mode 100644 index 0000000..fc5e7ba --- /dev/null +++ b/docs/kr2doc/contents/f_Clipboard_asText.html @@ -0,0 +1,38 @@ + + + + + + + asText - テキスト形式 + + + + + + + + + +

Clipboard.asText

+
+
機能/意味
+
+テキスト形式
+
タイプ
+
+Clipboardクラスのプロパティ (読み書き可能)
+
+
説明
+
+  クリップボードに現在あるテキスト形式のデータを表します。値を書き込むこともできます。
+  値を読み出すと、現在クリップボードにあるテキスト形式のデータを得ることができます。クリップボードにテキスト形式のデータがない場合は、void が得られます。
+  値を書き込むと、クリップボードにテキスト形式のデータを格納することができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Clipboard_hasFormat.html b/docs/kr2doc/contents/f_Clipboard_hasFormat.html new file mode 100644 index 0000000..8b73893 --- /dev/null +++ b/docs/kr2doc/contents/f_Clipboard_hasFormat.html @@ -0,0 +1,53 @@ + + + + + + + hasFormat - 指定されたフォーマットがクリップボード内に存在するか + + + + + + + + + +

Clipboard.hasFormat

+
+
機能/意味
+
+指定されたフォーマットがクリップボード内に存在するか
+
タイプ
+
+Clipboardクラスのメソッド
+
+
構文
+
+hasFormat(format)
+
+
引数
+
+ + + +
format  存在を確認したいフォーマットを指定します。
+  現バージョンでは cbfText のみが指定可能で、これを指定すると、クリップボード内にテキスト形式のデータが存在するかどうかを調べることができます。
+
+
+
戻り値
+
+指定されたフォーマットがクリップボード内に存在すれば真、存在しなければ偽
+
説明
+
+  指定されたフォーマットがクリップボード内に存在するかどうかを調べることができます。
+  OS の提供するクリップボードは、同時に複数のフォーマットを持つことができるため、その中に特定のフォーマットがあるかどうかをこのメソッドで調べることができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Console.html b/docs/kr2doc/contents/f_Console.html new file mode 100644 index 0000000..0762635 --- /dev/null +++ b/docs/kr2doc/contents/f_Console.html @@ -0,0 +1,43 @@ + + + + + + + Console + + + + + + + + +

Console

+ Console クラスは、コンソールに関する管理を行うクラスです。このクラスからオブジェクトを作成することはできません ( このクラスにはアクセスできません )。このクラスのオブジェクトには Debug.console でアクセスできます。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+なし +
+
プロパティ
+
+visible ( 表示されているかどうか )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Console_visible.html b/docs/kr2doc/contents/f_Console_visible.html new file mode 100644 index 0000000..c2167b2 --- /dev/null +++ b/docs/kr2doc/contents/f_Console_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 表示されているかどうか + + + + + + + + + +

Console.visible

+
+
機能/意味
+
+表示されているかどうか
+
タイプ
+
+Consoleクラスのプロパティ (読み書き可能)
+
+
説明
+
+  コンソールが表示されているかどうかを表します。値を設定することもできます。
+  真を指定すると表示されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Controller.html b/docs/kr2doc/contents/f_Controller.html new file mode 100644 index 0000000..f03df5a --- /dev/null +++ b/docs/kr2doc/contents/f_Controller.html @@ -0,0 +1,43 @@ + + + + + + + Controller + + + + + + + + +

Controller

+ Controller クラスは、コントローラに関する管理を行うクラスです。このクラスからオブジェクトを作成することはできません ( このクラスにはアクセスできません )。このクラスのオブジェクトには Debug.controller でアクセスできます。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+なし +
+
プロパティ
+
+visible ( 表示されているかどうか )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Controller_visible.html b/docs/kr2doc/contents/f_Controller_visible.html new file mode 100644 index 0000000..5f8fa8f --- /dev/null +++ b/docs/kr2doc/contents/f_Controller_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 表示されているかどうか + + + + + + + + + +

Controller.visible

+
+
機能/意味
+
+表示されているかどうか
+
タイプ
+
+Controllerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  コントロールが表示されているかどうかを表します。値を設定することもできます。
+  真を指定すると表示されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug.html b/docs/kr2doc/contents/f_Debug.html new file mode 100644 index 0000000..9b694e5 --- /dev/null +++ b/docs/kr2doc/contents/f_Debug.html @@ -0,0 +1,53 @@ + + + + + + + Debug + + + + + + + + +

Debug

+ Debug クラスは 吉里吉里のデバッグに関する機能を提供するクラスです。このクラスからオブジェクトを作成することはできません。
+ 吉里吉里のコンソールのログの名前は krkr.console.log になります。また、ハードウェア例外が発生したときに作成されるファイルは hwexcept.log となります。
+ これらのログファイルは、デフォルトではプロジェクトディレクトリになります。ただし、プロジェクトディレクトリがアーカイブなど、書き込みができないディレクトリの場合は出力されません。
+ ログファイルの出力先は logLocation プロパティで変更することができます (KAGの場合は栞データの保存先に設定されます)。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+logAsError ( エラー時と同じようにログをファイルに出力開始する )
+message ( コンソールへメッセージを出力 )
+notice ( コンソールへ重要なメッセージを出力 )
+startLogToFile ( コンソールのログの出力開始 )
+
+
プロパティ
+
+clearLogFileOnError ( エラー発生時にコンソールのログファイルをクリアするかどうか )
+console ( コンソールオブジェクト )
+controller ( コントローラオブジェクト )
+logLocation ( ログファイルの出力先 )
+logToFileOnError ( エラー発生時にコンソールのログをファイルに出力するか )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_clearLogFileOnError.html b/docs/kr2doc/contents/f_Debug_clearLogFileOnError.html new file mode 100644 index 0000000..21cd649 --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_clearLogFileOnError.html @@ -0,0 +1,42 @@ + + + + + + + clearLogFileOnError - エラー発生時にコンソールのログファイルをクリアするかどうか + + + + + + + + + +

Debug.clearLogFileOnError

+
+
機能/意味
+
+エラー発生時にコンソールのログファイルをクリアするかどうか
+
タイプ
+
+Debugクラスのプロパティ (読み書き可能)
+
+
説明
+
+  真の場合、エラーが発生したときにコンソールのログを自動的にクリアするようになります。
+  偽の場合はクリアはされず、既存のログファイルに追加されます。
+
+
参照
+
+Debug.startLogToFile
+Debug.logToFileOnError
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_console.html b/docs/kr2doc/contents/f_Debug_console.html new file mode 100644 index 0000000..492adbf --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_console.html @@ -0,0 +1,40 @@ + + + + + + + console - コンソールオブジェクト + + + + + + + + + +

Debug.console

+
+
機能/意味
+
+コンソールオブジェクト
+
タイプ
+
+Debugクラスのプロパティ (読み出し専用)
+
+
説明
+
+  コンソールオブジェクトを表す読み出し専用のプロパティです。 +
+
参照
+
+Console
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_controller.html b/docs/kr2doc/contents/f_Debug_controller.html new file mode 100644 index 0000000..2d52a69 --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_controller.html @@ -0,0 +1,40 @@ + + + + + + + controller - コントローラオブジェクト + + + + + + + + + +

Debug.controller

+
+
機能/意味
+
+コントローラオブジェクト
+
タイプ
+
+Debugクラスのプロパティ (読み出し専用)
+
+
説明
+
+  コントローラオブジェクトを表す読み出し専用のプロパティです。 +
+
参照
+
+Controller
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_logAsError.html b/docs/kr2doc/contents/f_Debug_logAsError.html new file mode 100644 index 0000000..ae188ec --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_logAsError.html @@ -0,0 +1,60 @@ + + + + + + + logAsError - エラー時と同じようにログをファイルに出力開始する + + + + + + + + + +

Debug.logAsError

+
+
機能/意味
+
+エラー時と同じようにログをファイルに出力開始する
+
タイプ
+
+Debugクラスのメソッド
+
+
構文
+
+logAsError()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  エラーログファイルに関し、吉里吉里がエラーが発生したときと同じ動作をさせます。 + つまり、 + Debug.logToFileOnError が真ならばファイルにコンソールのログの出力を + 開始します。その際、Debug.clearLogFileOnError が真ならばファイルを + クリアします。
+  これに対し、Debug.startLogToFile は無条件でコンソールのログの + ファイルへの出力を開始します。
+
+
参照
+
+Debug.startLogToFile
+Debug.logToFileOnError
+Debug.clearLogFileOnError
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_logLocation.html b/docs/kr2doc/contents/f_Debug_logLocation.html new file mode 100644 index 0000000..ec6d7cf --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_logLocation.html @@ -0,0 +1,38 @@ + + + + + + + logLocation - ログファイルの出力先 + + + + + + + + + +

Debug.logLocation

+
+
機能/意味
+
+ログファイルの出力先
+
タイプ
+
+Debugクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ログファイルの出力先ディレクトリを表します。値を書き込むこともできます。
+  デフォルトではデータ保存場所 (コマンドラインオプションの -datapath) に設定されています。
+  この値を変更すると、以降のログはそのディレクトリ下の *.console.log として出力されるようになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_logToFileOnError.html b/docs/kr2doc/contents/f_Debug_logToFileOnError.html new file mode 100644 index 0000000..2cd3f44 --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_logToFileOnError.html @@ -0,0 +1,43 @@ + + + + + + + logToFileOnError - エラー発生時にコンソールのログをファイルに出力するか + + + + + + + + + +

Debug.logToFileOnError

+
+
機能/意味
+
+エラー発生時にコンソールのログをファイルに出力するか
+
タイプ
+
+Debugクラスのプロパティ (読み書き可能)
+
+
説明
+
+  真の場合、エラーが発生したときにコンソールのログのファイルへの出力を開始するように + なります。
+  偽の場合はエラーが発生してもログのファイルへの出力は開始されません。
+
+
参照
+
+Debug.startLogToFile
+Debug.clearLogFileOnError
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_message.html b/docs/kr2doc/contents/f_Debug_message.html new file mode 100644 index 0000000..30575dd --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_message.html @@ -0,0 +1,52 @@ + + + + + + + message - コンソールへメッセージを出力 + + + + + + + + + +

Debug.message

+
+
機能/意味
+
+コンソールへメッセージを出力
+
タイプ
+
+Debugクラスのメソッド
+
+
構文
+
+message(message)
+
+
引数
+
+ + + +
message  出力するメッセージを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  コンソールへメッセージを出力します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_notice.html b/docs/kr2doc/contents/f_Debug_notice.html new file mode 100644 index 0000000..cf0805d --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_notice.html @@ -0,0 +1,55 @@ + + + + + + + notice - コンソールへ重要なメッセージを出力 + + + + + + + + + +

Debug.notice

+
+
機能/意味
+
+コンソールへ重要なメッセージを出力
+
タイプ
+
+Debugクラスのメソッド
+
+
構文
+
+notice(message)
+
+
引数
+
+ + + +
message  出力するメッセージを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  コンソールへメッセージを出力します。
+ Debug.message と違い、ここで出力したメッセージは ログファイルへの書き出しを途中から開始したとしても、 + 必ずログファイルに書き出されます ( Debug.message で出力したメッセージは、ある程度さかのぼってまでしか + 書き込まれません )。ログファイルを回収したときに有用になるような重要な情報を出力するために使います。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Debug_startLogToFile.html b/docs/kr2doc/contents/f_Debug_startLogToFile.html new file mode 100644 index 0000000..e797541 --- /dev/null +++ b/docs/kr2doc/contents/f_Debug_startLogToFile.html @@ -0,0 +1,58 @@ + + + + + + + startLogToFile - コンソールのログの出力開始 + + + + + + + + + +

Debug.startLogToFile

+
+
機能/意味
+
+コンソールのログの出力開始
+
タイプ
+
+Debugクラスのメソッド
+
+
構文
+
+startLogToFile(clear=false)
+
+
引数
+
+ + + +
clear  真を指定するとログファイルはクリアされます。
+  偽を指定すると既存のファイルに追加されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  コンソールのログのファイルへの出力を開始します。
+
+
参照
+
+Debug.logToFileOnError
+Debug.clearLogFileOnError
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font.html b/docs/kr2doc/contents/f_Font.html new file mode 100644 index 0000000..9898d1e --- /dev/null +++ b/docs/kr2doc/contents/f_Font.html @@ -0,0 +1,61 @@ + + + + + + + Font + + + + + + + + +

Font

+ Font クラスは、フォントを管理するためのクラスです。
+ Layer クラスの Layer.font プロパティで得られるのがこのクラスのオブジェクトですが、 +ユーザがこのクラスからオブジェクトを作成することはできません ( Font というメンバ自体、ユーザが +アクセスすることができません )。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+doUserSelect ( フォント選択ダイアログボックスの表示 )
+getEscHeightX ( 文字の縦方向への X 座標の移動量 )
+getEscHeightY ( 文字の縦方向への Y 座標の移動量 )
+getEscWidthX ( 文字の横方向への X 座標の移動量 )
+getEscWidthY ( 文字の横方向への Y 座標の移動量 )
+getList ( フォント名の列挙 )
+getTextHeight ( 文字列の縦幅を得る )
+getTextWidth ( 文字列の横幅を得る )
+mapPrerenderedFont ( レンダリング済みフォントの割り当て )
+unmapPrerenderedFont ( レンダリング済みフォントの割り当て解除 )
+
+
プロパティ
+
+angle ( 文字描画角度 )
+bold ( ボールド )
+face ( フォント名 )
+height ( フォント高さ )
+italic ( イタリック )
+strikeout ( 取消線 )
+underline ( アンダーライン )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_angle.html b/docs/kr2doc/contents/f_Font_angle.html new file mode 100644 index 0000000..65fe5a0 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_angle.html @@ -0,0 +1,39 @@ + + + + + + + angle - 文字描画角度 + + + + + + + + + +

Font.angle

+
+
機能/意味
+
+文字描画角度
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  文字描画角度を表します。値を設定することもできます。
+  単位は角度 ( degree ) の 10 倍の値です。0 〜 3600 の値をとります。
+  縦書きを行う場合はフォント名に縦書き用のフォント名を指定した上で、このプロパティ + に 2700 を指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_bold.html b/docs/kr2doc/contents/f_Font_bold.html new file mode 100644 index 0000000..428a8c0 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_bold.html @@ -0,0 +1,37 @@ + + + + + + + bold - ボールド + + + + + + + + + +

Font.bold

+
+
機能/意味
+
+ボールド
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ボールド ( 太字 ) であるかどうかを表します。値を設定することもできます。
+  真を指定するとボールドになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_doUserSelect.html b/docs/kr2doc/contents/f_Font_doUserSelect.html new file mode 100644 index 0000000..744f5f8 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_doUserSelect.html @@ -0,0 +1,71 @@ + + + + + + + doUserSelect - フォント選択ダイアログボックスの表示 + + + + + + + + + +

Font.doUserSelect

+
+
機能/意味
+
+フォント選択ダイアログボックスの表示
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+doUserSelect(flags, caption, prompt, sample)
+
+
引数
+
+ + + + + + + + + +
flags  フォント選択ダイアログボックスのオプションを指定します。
+  次の値のビット論理和による組み合わせ指定します。
+ fsfFixedPitch : 固定ピッチフォントのみ表示します
+ fsfSameCharSet : 同じキャラクタセットのフォントのみ表示します
+ fsfNoVertical : 縦書き用フォントを表示しません
+ fsfTrueTypeOnly : TrueType フォントのみ表示します
+ fsfUseFontFace : 選択リストボックスをそれぞれのフォントで表示します
+  fsfSameCharSet を指定した場合は、現在選択されているフォントと同じキャラクタセットの + フォントが表示されます。
+
caption  ダイアログボックスのキャプション ( タイトルバー ) に表示する + 文字列を指定します。
+
prompt  ダイアログボックス内に表示する文字列を指定します。
+  通常はユーザに入力を促すためのメッセージを指定します。
+
sample  ダイアログボックス内の「サンプル」の部分に表示する文字列を指定します。
+  ユーザは、ここに表示されるサンプルで実際のフォントを確かめることができます。
+
+
+
戻り値
+
+ユーザが OK ボタンを選択した場合は true、それ以外の場合は false が戻ります
+
説明
+
+  ユーザにフォントを選択させるためのダイアログボックスを開きます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_face.html b/docs/kr2doc/contents/f_Font_face.html new file mode 100644 index 0000000..2685cd6 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_face.html @@ -0,0 +1,38 @@ + + + + + + + face - フォント名 + + + + + + + + + +

Font.face

+
+
機能/意味
+
+フォント名
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォント名を表します。値を設定することもできます。
+  カンマで区切って複数の候補を指定することができます。この場合は、実際に存在するフォントが使用され、先頭に書いたものほど優先されます。実際に存在するフォントかどうかは OS のフォントのリストを参照することにより行われます。どの候補にも合致しなかった場合は、デフォルトのフォントが使用されます (現バージョンでは "MS Pゴシック" 固定)。
+  先頭をカンマにし、直後にフォント名を書くと、実際にそのフォントをOSが列挙しなくても、OSにそのフォントを指定しようとします (たとえば ",My Original Font" )。これにより AddFontResource Win32 API 等で登録した列挙不可能なフォントを使用することができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getEscHeightX.html b/docs/kr2doc/contents/f_Font_getEscHeightX.html new file mode 100644 index 0000000..46b8409 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getEscHeightX.html @@ -0,0 +1,60 @@ + + + + + + + getEscHeightX - 文字の縦方向への X 座標の移動量 + + + + + + + + + +

Font.getEscHeightX

+
+
機能/意味
+
+文字の縦方向への X 座標の移動量
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getEscHeightX(text)
+
+
引数
+
+ + + +
text  文字の縦方向への X 座標の移動量を得たい文字列を指定します。
+
+
+
戻り値
+
+文字の縦方向への X 座標の移動量がピクセル単位で戻ります
+
説明
+
+  現在のフォントの設定で指定された文字を描画したときに必要な文字描画位置の移動量を + 得ることができます。
+  このメソッドでは、文字の描画方向に対して縦 ( 下 ) に進んだときの X 座標上での移動量を + 得ることができます。
+
+
参照
+
+Font.getEscWidthX
+Font.getEscWidthY
+Font.getEscHeightY
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getEscHeightY.html b/docs/kr2doc/contents/f_Font_getEscHeightY.html new file mode 100644 index 0000000..cc9f8f3 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getEscHeightY.html @@ -0,0 +1,60 @@ + + + + + + + getEscHeightY - 文字の縦方向への Y 座標の移動量 + + + + + + + + + +

Font.getEscHeightY

+
+
機能/意味
+
+文字の縦方向への Y 座標の移動量
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getEscHeightY(text)
+
+
引数
+
+ + + +
text  文字の縦方向への Y 座標の移動量を得たい文字列を指定します。
+
+
+
戻り値
+
+文字の縦方向への Y 座標の移動量がピクセル単位で戻ります
+
説明
+
+  現在のフォントの設定で指定された文字を描画したときに必要な文字描画位置の移動量を + 得ることができます。
+  このメソッドでは、文字の描画方向に対して縦 ( 下 ) に進んだときの Y 座標上での移動量を + 得ることができます。
+
+
参照
+
+Font.getEscWidthX
+Font.getEscWidthY
+Font.getEscHeightX
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getEscWidthX.html b/docs/kr2doc/contents/f_Font_getEscWidthX.html new file mode 100644 index 0000000..91814be --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getEscWidthX.html @@ -0,0 +1,60 @@ + + + + + + + getEscWidthX - 文字の横方向への X 座標の移動量 + + + + + + + + + +

Font.getEscWidthX

+
+
機能/意味
+
+文字の横方向への X 座標の移動量
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getEscWidthX(text)
+
+
引数
+
+ + + +
text  文字の横方向への X 座標の移動量を得たい文字列を指定します。
+
+
+
戻り値
+
+文字の横方向への X 座標の移動量がピクセル単位で戻ります
+
説明
+
+  現在のフォントの設定で指定された文字を描画したときに必要な文字描画位置の移動量を + 得ることができます。
+  このメソッドでは、文字の描画方向に対して横 ( 左 ) に進んだときの X 座標上での移動量を + 得ることができます。
+
+
参照
+
+Font.getEscWidthY
+Font.getEscHeightX
+Font.getEscHeightY
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getEscWidthY.html b/docs/kr2doc/contents/f_Font_getEscWidthY.html new file mode 100644 index 0000000..f18d97b --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getEscWidthY.html @@ -0,0 +1,60 @@ + + + + + + + getEscWidthY - 文字の横方向への Y 座標の移動量 + + + + + + + + + +

Font.getEscWidthY

+
+
機能/意味
+
+文字の横方向への Y 座標の移動量
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getEscWidthY(text)
+
+
引数
+
+ + + +
text  文字の横方向への Y 座標の移動量を得たい文字列を指定します。
+
+
+
戻り値
+
+文字の横方向への Y 座標の移動量がピクセル単位で戻ります
+
説明
+
+  現在のフォントの設定で指定された文字を描画したときに必要な文字描画位置の移動量を + 得ることができます。
+  このメソッドでは、文字の描画方向に対して横 ( 左 ) に進んだときの Y 座標上での移動量を + 得ることができます。
+
+
参照
+
+Font.getEscWidthX
+Font.getEscHeightX
+Font.getEscHeightY
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getList.html b/docs/kr2doc/contents/f_Font_getList.html new file mode 100644 index 0000000..677959a --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getList.html @@ -0,0 +1,53 @@ + + + + + + + getList - フォント名の列挙 + + + + + + + + + +

Font.getList

+
+
機能/意味
+
+フォント名の列挙
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getList(flags)
+
+
引数
+
+ + + +
flags  フォントをどのように列挙するかを指定します。Font.doUserSelectで + 指定するものと同一です (ただしこのメソッドには + fsfUseFontFaceは指定しても無視されます)
+
+
+
戻り値
+
+フォント名(文字列)が各要素として格納されている配列
+
説明
+
+ フォント名を列挙し、配列として返します。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getTextHeight.html b/docs/kr2doc/contents/f_Font_getTextHeight.html new file mode 100644 index 0000000..b7223a6 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getTextHeight.html @@ -0,0 +1,55 @@ + + + + + + + getTextHeight - 文字列の縦幅を得る + + + + + + + + + +

Font.getTextHeight

+
+
機能/意味
+
+文字列の縦幅を得る
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getTextHeight(text)
+
+
引数
+
+ + + +
text  縦幅を得たい文字列を指定します。
+
+
+
戻り値
+
+指定された文字列の縦幅がピクセル単位で戻ります
+
説明
+
+  このメソッドでは、このフォントで指定の文字列を描画したときに必要な縦幅を得ることができます。
+
+
参照
+
+Font.getTextWidth
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_getTextWidth.html b/docs/kr2doc/contents/f_Font_getTextWidth.html new file mode 100644 index 0000000..6ba07d6 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_getTextWidth.html @@ -0,0 +1,56 @@ + + + + + + + getTextWidth - 文字列の横幅を得る + + + + + + + + + +

Font.getTextWidth

+
+
機能/意味
+
+文字列の横幅を得る
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+getTextWidth(text)
+
+
引数
+
+ + + +
text  横幅を得たい文字列を指定します。
+
+
+
戻り値
+
+指定された文字列の横幅がピクセル単位で戻ります
+
説明
+
+  このメソッドでは、現在のフォントの設定で指定の文字列を描画したときに必要な + 横幅を得ることができます。
+
+
参照
+
+Font.getTextHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_height.html b/docs/kr2doc/contents/f_Font_height.html new file mode 100644 index 0000000..98fb762 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_height.html @@ -0,0 +1,36 @@ + + + + + + + height - フォント高さ + + + + + + + + + +

Font.height

+
+
機能/意味
+
+フォント高さ
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画される文字の高さをピクセル単位で表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_italic.html b/docs/kr2doc/contents/f_Font_italic.html new file mode 100644 index 0000000..e3c263a --- /dev/null +++ b/docs/kr2doc/contents/f_Font_italic.html @@ -0,0 +1,37 @@ + + + + + + + italic - イタリック + + + + + + + + + +

Font.italic

+
+
機能/意味
+
+イタリック
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  イタリック ( 斜体 ) であるかどうかを表します。値を設定することもできます。
+  真を指定するとイタリックになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_mapPrerenderedFont.html b/docs/kr2doc/contents/f_Font_mapPrerenderedFont.html new file mode 100644 index 0000000..f4e51a8 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_mapPrerenderedFont.html @@ -0,0 +1,58 @@ + + + + + + + mapPrerenderedFont - レンダリング済みフォントの割り当て + + + + + + + + + +

Font.mapPrerenderedFont

+
+
機能/意味
+
+レンダリング済みフォントの割り当て
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+mapPrerenderedFont(fontstorage)
+
+
引数
+
+ + + +
fontstorage  レンダリング済みフォントストレージを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  現在選択されているフォント名に対してレンダリング済みフォントの割り当てを行います。
+  以降、同じ設定のフォントに対しては指定されたレンダリング済みフォントが代わりに使われます。
+  すべてのレイヤに対して設定が有効になります。
+
+
参照
+
+Font.unmapPrerenderedFont
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_strikeout.html b/docs/kr2doc/contents/f_Font_strikeout.html new file mode 100644 index 0000000..10c0c95 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_strikeout.html @@ -0,0 +1,38 @@ + + + + + + + strikeout - 取消線 + + + + + + + + + +

Font.strikeout

+
+
機能/意味
+
+取消線
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  取消線を描画するかどうか表します。値を設定することもできます。
+  真を指定すると文字の上に取消線を描画します。
+  現バージョンの吉里吉里ではこのプロパティは意味を持ちません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_underline.html b/docs/kr2doc/contents/f_Font_underline.html new file mode 100644 index 0000000..ee9bb7a --- /dev/null +++ b/docs/kr2doc/contents/f_Font_underline.html @@ -0,0 +1,38 @@ + + + + + + + underline - アンダーライン + + + + + + + + + +

Font.underline

+
+
機能/意味
+
+アンダーライン
+
タイプ
+
+Fontクラスのプロパティ (読み書き可能)
+
+
説明
+
+  アンダーライン ( 下線または傍線 ) を描画するかどうか表します。値を設定することもできます。
+  真を指定するとアンダーラインを描画します。
+  現バージョンの吉里吉里ではこのプロパティは意味を持ちません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Font_unmapPrerenderedFont.html b/docs/kr2doc/contents/f_Font_unmapPrerenderedFont.html new file mode 100644 index 0000000..43e5502 --- /dev/null +++ b/docs/kr2doc/contents/f_Font_unmapPrerenderedFont.html @@ -0,0 +1,52 @@ + + + + + + + unmapPrerenderedFont - レンダリング済みフォントの割り当て解除 + + + + + + + + + +

Font.unmapPrerenderedFont

+
+
機能/意味
+
+レンダリング済みフォントの割り当て解除
+
タイプ
+
+Fontクラスのメソッド
+
+
構文
+
+unmapPrerenderedFont()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  現在選択されているフォント名に対するレンダリング済みフォントの割り当てを解除します。
+
+
参照
+
+Font.mapPrerenderedFont
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser.html b/docs/kr2doc/contents/f_KAGParser.html new file mode 100644 index 0000000..3e83174 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser.html @@ -0,0 +1,70 @@ + + + + + + + KAGParser + + + + + + + + +

KAGParser

+ KAGParser クラスは、KAG のシナリオを解析するためのクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+KAGParser
+
+
メソッド
+
+assign ( KAGParser オブジェクトのコピー )
+callLabel ( 現在位置をスタックに積んでの、指定ラベルへの移動 )
+clear ( オブジェクトのクリア )
+clearCallStack ( call タグ呼び出しスタックのクリア )
+getNextTag ( 次のタグを得る )
+goToLabel ( 指定ラベルへの移動 )
+interrupt ( interrupted 状態にする )
+loadScenario ( シナリオの読み込み )
+resetInterrupt ( interrupted 状態の解除 )
+restore ( 辞書配列からオブジェクトの状態を復元する )
+store ( オブジェクトの状態を辞書配列に書き出す )
+
+
プロパティ
+
+callStackDepth ( call タグ呼び出しスタックの深さ )
+curLabel ( 現在のラベル )
+curLine ( 現在行の行数 )
+curLineStr ( 現在行の文字列 )
+curPos ( 現在行における文字の位置 )
+curStorage ( 現在のストレージ )
+debugLevel ( デバッグレベル )
+ignoreCR ( 改行を無視するかどうか )
+macroParams ( 現在実行されているマクロの引数 )
+macros ( マクロの入った辞書配列 )
+processSpecialTags ( 特殊タグを処理するかどうか )
+
+
イベント
+
+onAfterReturn ( return タグで復帰した )
+onCall ( call タグが呼ばれた )
+onJump ( jump タグが呼ばれた )
+onLabel ( ラベルを通過した )
+onReturn ( return タグが呼ばれた )
+onScenarioLoad ( シナリオ読み込みが開始した )
+onScenarioLoaded ( シナリオ読み込みが終了した )
+onScript ( iscript ブロックを通過した )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_KAGParser.html b/docs/kr2doc/contents/f_KAGParser_KAGParser.html new file mode 100644 index 0000000..68fff9a --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_KAGParser.html @@ -0,0 +1,48 @@ + + + + + + + KAGParser - KAGParser オブジェクトの構築 + + + + + + + + + +

KAGParser.KAGParser

+
+
機能/意味
+
+KAGParser オブジェクトの構築
+
タイプ
+
+KAGParserクラスのコンストラクタ
+
+
構文
+
+KAGParser()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  KAGParser クラスのオブジェクトを構築します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_assign.html b/docs/kr2doc/contents/f_KAGParser_assign.html new file mode 100644 index 0000000..6337b6e --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_assign.html @@ -0,0 +1,52 @@ + + + + + + + assign - KAGParser オブジェクトのコピー + + + + + + + + + +

KAGParser.assign

+
+
機能/意味
+
+KAGParser オブジェクトのコピー
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+assign(src)
+
+
引数
+
+ + + +
src  コピー元の KAGParser オブジェクトを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  src で指定した KAGParser オブジェクトの内容をコピーします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_callLabel.html b/docs/kr2doc/contents/f_KAGParser_callLabel.html new file mode 100644 index 0000000..48bdbbc --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_callLabel.html @@ -0,0 +1,53 @@ + + + + + + + callLabel - 現在位置をスタックに積んでの、指定ラベルへの移動 + + + + + + + + + +

KAGParser.callLabel

+
+
機能/意味
+
+現在位置をスタックに積んでの、指定ラベルへの移動
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+callLabel(label)
+
+
引数
+
+ + + +
label  移動先のラベル名を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたラベルへ移動します。 + その際、現在のシナリオストレージ読み込み位置をスタックに積みます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_callStackDepth.html b/docs/kr2doc/contents/f_KAGParser_callStackDepth.html new file mode 100644 index 0000000..6aaea54 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_callStackDepth.html @@ -0,0 +1,36 @@ + + + + + + + callStackDepth - call タグ呼び出しスタックの深さ + + + + + + + + + +

KAGParser.callStackDepth

+
+
機能/意味
+
+call タグ呼び出しスタックの深さ
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  call タグ呼び出しスタックの深さを表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_clear.html b/docs/kr2doc/contents/f_KAGParser_clear.html new file mode 100644 index 0000000..e501022 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_clear.html @@ -0,0 +1,48 @@ + + + + + + + clear - オブジェクトのクリア + + + + + + + + + +

KAGParser.clear

+
+
機能/意味
+
+オブジェクトのクリア
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+clear()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  オブジェクトの状態をクリアします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_clearCallStack.html b/docs/kr2doc/contents/f_KAGParser_clearCallStack.html new file mode 100644 index 0000000..73233dd --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_clearCallStack.html @@ -0,0 +1,48 @@ + + + + + + + clearCallStack - call タグ呼び出しスタックのクリア + + + + + + + + + +

KAGParser.clearCallStack

+
+
機能/意味
+
+call タグ呼び出しスタックのクリア
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+clearCallStack()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  call タグ呼び出しのスタックをクリアします。マクロ引数もクリアされます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_curLabel.html b/docs/kr2doc/contents/f_KAGParser_curLabel.html new file mode 100644 index 0000000..d37e130 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_curLabel.html @@ -0,0 +1,36 @@ + + + + + + + curLabel - 現在のラベル + + + + + + + + + +

KAGParser.curLabel

+
+
機能/意味
+
+現在のラベル
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在のラベルを表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_curLine.html b/docs/kr2doc/contents/f_KAGParser_curLine.html new file mode 100644 index 0000000..2feaae5 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_curLine.html @@ -0,0 +1,36 @@ + + + + + + + curLine - 現在行の行数 + + + + + + + + + +

KAGParser.curLine

+
+
機能/意味
+
+現在行の行数
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在行がストレージ中で何行目かを表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_curLineStr.html b/docs/kr2doc/contents/f_KAGParser_curLineStr.html new file mode 100644 index 0000000..148aae1 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_curLineStr.html @@ -0,0 +1,36 @@ + + + + + + + curLineStr - 現在行の文字列 + + + + + + + + + +

KAGParser.curLineStr

+
+
機能/意味
+
+現在行の文字列
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在行の文字列を表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_curPos.html b/docs/kr2doc/contents/f_KAGParser_curPos.html new file mode 100644 index 0000000..652b922 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_curPos.html @@ -0,0 +1,36 @@ + + + + + + + curPos - 現在行における文字の位置 + + + + + + + + + +

KAGParser.curPos

+
+
機能/意味
+
+現在行における文字の位置
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在行の中で、今何文字目にあるかを表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_curStorage.html b/docs/kr2doc/contents/f_KAGParser_curStorage.html new file mode 100644 index 0000000..6173807 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_curStorage.html @@ -0,0 +1,37 @@ + + + + + + + curStorage - 現在のストレージ + + + + + + + + + +

KAGParser.curStorage

+
+
機能/意味
+
+現在のストレージ
+
タイプ
+
+KAGParserクラスのプロパティ (読み書き可能)
+
+
説明
+
+  現在のストレージを表わします。
+  値を設定することもできます。その場合は、指定されたストレージを読み込みます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_debugLevel.html b/docs/kr2doc/contents/f_KAGParser_debugLevel.html new file mode 100644 index 0000000..72a70c0 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_debugLevel.html @@ -0,0 +1,41 @@ + + + + + + + debugLevel - デバッグレベル + + + + + + + + + +

KAGParser.debugLevel

+
+
機能/意味
+
+デバッグレベル
+
タイプ
+
+KAGParserクラスのプロパティ (読み書き可能)
+
+
説明
+
+  デバッグレベルを表わします。
+  設定可能な値は以下の通りです。
+  tkdlNone < tkdlSimple < tkdlVerbose の順に、表示されるデバッグメッセージの量が多くなります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_getNextTag.html b/docs/kr2doc/contents/f_KAGParser_getNextTag.html new file mode 100644 index 0000000..362d948 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_getNextTag.html @@ -0,0 +1,59 @@ + + + + + + + getNextTag - 次のタグを得る + + + + + + + + + +

KAGParser.getNextTag

+
+
機能/意味
+
+次のタグを得る
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+getNextTag()
+
+
引数
+
+なし
+
+
戻り値
+
+タグ情報の辞書配列
+
説明
+
+  次のタグを辞書配列で返します。(タグ内部にない)通常の文字は、ch タグと解釈されます。
+  interrupted 状態では、interrupt タグを返し、interrupted 状態を解除します。
+  ストレージの末尾では、void を返します。
+  タグの名前は、戻り値の辞書配列の tagname 要素に格納されています。
+  if, ignore, endif, endignore, emb, macro, endmacro, erasemacro, + jump, call, return, iscript, endscript の各タグは組み込みタグです。 + これらのタグに関する処理は、このメソッドの内部で自動的に行なわれます。 + したがって、このメソッドはこれらのタグに関する情報を返しません。
+
+
参照
+
+KAGParser.interrupt
+KAGParser.resetInterrupt
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_goToLabel.html b/docs/kr2doc/contents/f_KAGParser_goToLabel.html new file mode 100644 index 0000000..6b26c49 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_goToLabel.html @@ -0,0 +1,52 @@ + + + + + + + goToLabel - 指定ラベルへの移動 + + + + + + + + + +

KAGParser.goToLabel

+
+
機能/意味
+
+指定ラベルへの移動
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+goToLabel(label)
+
+
引数
+
+ + + +
label  移動先のラベル名を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  読み込まれているシナリオストレージの中で、指定されたラベルへ移動します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_ignoreCR.html b/docs/kr2doc/contents/f_KAGParser_ignoreCR.html new file mode 100644 index 0000000..d990401 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_ignoreCR.html @@ -0,0 +1,38 @@ + + + + + + + ignoreCR - 改行を無視するかどうか + + + + + + + + + +

KAGParser.ignoreCR

+
+
機能/意味
+
+改行を無視するかどうか
+
タイプ
+
+KAGParserクラスのプロパティ (読み書き可能)
+
+
説明
+
+  改行を無視するかどうかを表わします。
+  真ならば改行を無視します。
+  偽ならば、シナリオ中の改行の位置で、表示上も改行します。(KAG2 互換モード)
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_interrupt.html b/docs/kr2doc/contents/f_KAGParser_interrupt.html new file mode 100644 index 0000000..be8af9b --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_interrupt.html @@ -0,0 +1,54 @@ + + + + + + + interrupt - interrupted 状態にする + + + + + + + + + +

KAGParser.interrupt

+
+
機能/意味
+
+interrupted 状態にする
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+interrupt()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  interrupted 状態になります。この状態のときは、 + 次の KAGParser.getNextTag メソッドの呼び出しでは interrupt タグが返されます。
+
+
参照
+
+KAGParser.resetInterrupt
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_loadScenario.html b/docs/kr2doc/contents/f_KAGParser_loadScenario.html new file mode 100644 index 0000000..94ee9a5 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_loadScenario.html @@ -0,0 +1,53 @@ + + + + + + + loadScenario - シナリオの読み込み + + + + + + + + + +

KAGParser.loadScenario

+
+
機能/意味
+
+シナリオの読み込み
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+loadScenario(name)
+
+
引数
+
+ + + +
name  読み込むシナリオストレージを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたシナリオストレージを読み込み、 + シナリオ読み込み位置をストレージの先頭に設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_macroParams.html b/docs/kr2doc/contents/f_KAGParser_macroParams.html new file mode 100644 index 0000000..2eee504 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_macroParams.html @@ -0,0 +1,36 @@ + + + + + + + macroParams - 現在実行されているマクロの引数 + + + + + + + + + +

KAGParser.macroParams

+
+
機能/意味
+
+現在実行されているマクロの引数
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在実行されているマクロの引数を、辞書配列で表わします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_macros.html b/docs/kr2doc/contents/f_KAGParser_macros.html new file mode 100644 index 0000000..a369114 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_macros.html @@ -0,0 +1,37 @@ + + + + + + + macros - マクロの入った辞書配列 + + + + + + + + + +

KAGParser.macros

+
+
機能/意味
+
+マクロの入った辞書配列
+
タイプ
+
+KAGParserクラスのプロパティ (読み出し専用)
+
+
説明
+
+  マクロの入った辞書配列を表わします。
+  例えば、hoge マクロには macros['hoge'] でアクセスできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onAfterReturn.html b/docs/kr2doc/contents/f_KAGParser_onAfterReturn.html new file mode 100644 index 0000000..f9f5223 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onAfterReturn.html @@ -0,0 +1,44 @@ + + + + + + + onAfterReturn - return タグで復帰した + + + + + + + + + +

KAGParser.onAfterReturn

+
+
機能/意味
+
+return タグで復帰した
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onAfterReturn()
+
+
引数
+
+なし
+
+
説明
+
+  return タグで復帰した後に呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onCall.html b/docs/kr2doc/contents/f_KAGParser_onCall.html new file mode 100644 index 0000000..b230b45 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onCall.html @@ -0,0 +1,53 @@ + + + + + + + onCall - call タグが呼ばれた + + + + + + + + + +

KAGParser.onCall

+
+
機能/意味
+
+call タグが呼ばれた
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onCall(dic)
+
+
引数
+
+ + + +
dic  call タグの情報を持つ辞書配列
+
+
+
説明
+
+  KAGParser.getNextTag メソッドが call タグを読んだときに呼ばれます。
+  このイベントで偽を返すと、移動は行なわれません。
+
+
参照
+
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onJump.html b/docs/kr2doc/contents/f_KAGParser_onJump.html new file mode 100644 index 0000000..e1d072c --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onJump.html @@ -0,0 +1,53 @@ + + + + + + + onJump - jump タグが呼ばれた + + + + + + + + + +

KAGParser.onJump

+
+
機能/意味
+
+jump タグが呼ばれた
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onJump(dic)
+
+
引数
+
+ + + +
dic  jump タグの情報を持つ辞書配列
+
+
+
説明
+
+  KAGParser.getNextTag メソッドが jump タグを読んだときに呼ばれます。
+  このイベントで偽を返すと、移動は行なわれません。
+
+
参照
+
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onLabel.html b/docs/kr2doc/contents/f_KAGParser_onLabel.html new file mode 100644 index 0000000..92e781e --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onLabel.html @@ -0,0 +1,51 @@ + + + + + + + onLabel - ラベルを通過した + + + + + + + + + +

KAGParser.onLabel

+
+
機能/意味
+
+ラベルを通過した
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onLabel(label, pagename)
+
+
引数
+
+ + + + + +
label  通過したラベル名が渡されます。
+
pagename  通過したラベルの見出し(ラベルの | より右側の部分)が渡されます。
+
+
+
説明
+
+  ラベルを通過した時に呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onReturn.html b/docs/kr2doc/contents/f_KAGParser_onReturn.html new file mode 100644 index 0000000..f5c579e --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onReturn.html @@ -0,0 +1,53 @@ + + + + + + + onReturn - return タグが呼ばれた + + + + + + + + + +

KAGParser.onReturn

+
+
機能/意味
+
+return タグが呼ばれた
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onReturn(dic)
+
+
引数
+
+ + + +
dic  return タグの情報を持つ辞書配列
+
+
+
説明
+
+  KAGParser.getNextTag メソッドが return タグを読んだときに呼ばれます。
+  このイベントで偽を返すと、移動は行なわれません。
+
+
参照
+
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onScenarioLoad.html b/docs/kr2doc/contents/f_KAGParser_onScenarioLoad.html new file mode 100644 index 0000000..96e944a --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onScenarioLoad.html @@ -0,0 +1,55 @@ + + + + + + + onScenarioLoad - シナリオ読み込みが開始した + + + + + + + + + +

KAGParser.onScenarioLoad

+
+
機能/意味
+
+シナリオ読み込みが開始した
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onScenarioLoad(storage)
+
+
引数
+
+ + + +
storage  読み込まれるシナリオストレージの名前が渡されます。
+
+
+
説明
+
+  シナリオ読み込みを開始する時に呼ばれます。
+  このイベントで文字列を返すと、ストレージ storage の中身の代わりに + その文字列をシナリオとして用います。
+
+
参照
+
+KAGParser.loadScenario
+KAGParser.onScenarioLoaded
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onScenarioLoaded.html b/docs/kr2doc/contents/f_KAGParser_onScenarioLoaded.html new file mode 100644 index 0000000..fdcd455 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onScenarioLoaded.html @@ -0,0 +1,53 @@ + + + + + + + onScenarioLoaded - シナリオ読み込みが終了した + + + + + + + + + +

KAGParser.onScenarioLoaded

+
+
機能/意味
+
+シナリオ読み込みが終了した
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onScenarioLoaded(storage)
+
+
引数
+
+ + + +
storage  読み込まれたシナリオストレージの名前が渡されます。
+
+
+
説明
+
+  シナリオ読み込みが終了した時に呼ばれます。
+
+
参照
+
+KAGParser.loadScenario
+KAGParser.onScenarioLoad
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_onScript.html b/docs/kr2doc/contents/f_KAGParser_onScript.html new file mode 100644 index 0000000..2e95274 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_onScript.html @@ -0,0 +1,62 @@ + + + + + + + onScript - iscript ブロックを通過した + + + + + + + + + +

KAGParser.onScript

+
+
機能/意味
+
+iscript ブロックを通過した
+
タイプ
+
+KAGParserクラスのイベント
+
+
構文
+
+onScript(script, storageShortName, scriptStart)
+
+
引数
+
+ + + + + + + +
script  iscript タグと endscript タグで挟まれた部分が文字列として渡されます。
+
storageShortName  短いストレージ名が渡されます。
+
scriptStart  スクリプト開始行の行数が渡されます。
+
+
+
説明
+
+  KAGParser.getNextTag メソッドが、iscript ... endscript の部分を通過したときに呼ばれます。
+  eval タグでは呼ばれません。
+  KAGParser.getNextTag メソッドは、iscript ... endscript の部分に関する情報は返さず、 + この部分をスキップします。したがって、iscript ... endscript の中身の処理は、このイベント内で + する必要があります。
+
+
参照
+
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_processSpecialTags.html b/docs/kr2doc/contents/f_KAGParser_processSpecialTags.html new file mode 100644 index 0000000..1be126a --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_processSpecialTags.html @@ -0,0 +1,39 @@ + + + + + + + processSpecialTags - 特殊タグを処理するかどうか + + + + + + + + + +

KAGParser.processSpecialTags

+
+
機能/意味
+
+特殊タグを処理するかどうか
+
タイプ
+
+KAGParserクラスのプロパティ (読み書き可能)
+
+
説明
+
+  特殊タグを処理するかどうかを表わします。
+  真ならば改行を特殊タグを処理します。デフォルトは真です。
+  特殊タグとは if ignore endif endignore else elsif emb macro endmacro macropop erasemacro jump call return の各タグです。このプロパティが偽の場合、これらのタグはそのまま getNextTag で取得することができます。
+  ただし、iscript 〜 endscript は常に処理されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_resetInterrupt.html b/docs/kr2doc/contents/f_KAGParser_resetInterrupt.html new file mode 100644 index 0000000..d8231ad --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_resetInterrupt.html @@ -0,0 +1,53 @@ + + + + + + + resetInterrupt - interrupted 状態の解除 + + + + + + + + + +

KAGParser.resetInterrupt

+
+
機能/意味
+
+interrupted 状態の解除
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+resetInterrupt()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  interrupted 状態を解除します。
+
+
参照
+
+KAGParser.interrupt
+KAGParser.getNextTag
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_restore.html b/docs/kr2doc/contents/f_KAGParser_restore.html new file mode 100644 index 0000000..3f5def9 --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_restore.html @@ -0,0 +1,56 @@ + + + + + + + restore - 辞書配列からオブジェクトの状態を復元する + + + + + + + + + +

KAGParser.restore

+
+
機能/意味
+
+辞書配列からオブジェクトの状態を復元する
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+restore(dic)
+
+
引数
+
+ + + +
dic  復元するオブジェクトの状態を表わす辞書配列
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  dic で指定した辞書配列を元にして、KAGParser オブジェクトの状態を復元します。
+
+
参照
+
+KAGParser.store
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_KAGParser_store.html b/docs/kr2doc/contents/f_KAGParser_store.html new file mode 100644 index 0000000..fef5ece --- /dev/null +++ b/docs/kr2doc/contents/f_KAGParser_store.html @@ -0,0 +1,51 @@ + + + + + + + store - オブジェクトの状態を辞書配列に書き出す + + + + + + + + + +

KAGParser.store

+
+
機能/意味
+
+オブジェクトの状態を辞書配列に書き出す
+
タイプ
+
+KAGParserクラスのメソッド
+
+
構文
+
+store()
+
+
引数
+
+なし
+
+
戻り値
+
+オブジェクトの状態を表わす辞書配列
+
説明
+
+  オブジェクトの状態を辞書配列に書き出します。
+
+
参照
+
+KAGParser.restore
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer.html b/docs/kr2doc/contents/f_Layer.html new file mode 100644 index 0000000..51de03a --- /dev/null +++ b/docs/kr2doc/contents/f_Layer.html @@ -0,0 +1,173 @@ + + + + + + + Layer + + + + + + + + +

Layer

+ Layer クラスは、レイヤを管理するためのクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+Layer
+
+
メソッド
+
+adjustGamma ( ガンマ補正 )
+affineBlend ( アフィン変換重ね合わせ )
+affineCopy ( アフィン変換コピー )
+affinePile ( アフィン変換ピクセルアルファブレンド重ね合わせ )
+assignImages ( 画像のコピー )
+beginTransition ( トランジションの開始 )
+blendRect ( 矩形重ね合わせ )
+bringToBack ( 一番奥に移動 )
+bringToFront ( 一番手前に移動 )
+colorRect ( 矩形半透明塗りつぶし )
+convertType ( レイヤ画像表現形式の変換 )
+copyRect ( 矩形コピー )
+doBoxBlur ( 矩形ブラーをかける )
+doGrayScale ( グレースケール変換 )
+drawText ( 文字描画 )
+fillRect ( 矩形塗りつぶし )
+flipLR ( 左右反転 )
+flipUD ( 上下反転 )
+focus ( フォーカスの設定 )
+focusNext ( 後方のレイヤにフォーカスを設定 )
+focusPrev ( 前方のレイヤにフォーカスを設定 )
+getLayerAt ( 指定位置のレイヤを取得 )
+getMainPixel ( メイン画像の色の取得 )
+getMaskPixel ( マスク画像の値の取得 )
+getProvincePixel ( 領域画像の値の取得 )
+independMainImage ( メイン画像の共有の解除 )
+independProvinceImage ( 領域画像の共有の解除 )
+loadImages ( 画像の読み込み )
+loadProvinceImage ( 領域画像の読み込み )
+moveBefore ( 指定レイヤの手前に移動 )
+moveBehind ( 指定レイヤの奥に移動 )
+operateAffine ( アフィン変換演算合成 )
+operateRect ( 矩形演算合成 )
+operateStretch ( 拡大縮小演算合成 )
+pileRect ( 矩形ピクセルアルファブレンド重ね合わせ )
+piledCopy ( レイヤを重ね合わせた画像をコピー )
+releaseCapture ( マウスイベントキャプチャの解除 )
+removeMode ( モーダル状態を解除する )
+saveLayerImage ( 画像の保存 )
+setAttentionPos ( 注視位置の指定 )
+setClip ( 描画クリップ矩形の設定 )
+setCursorPos ( マウスカーソル位置の指定 )
+setImagePos ( レイヤ画像オフセットの設定 )
+setImageSize ( レイヤ画像サイズの設定 )
+setMainPixel ( メイン画像の色の設定 )
+setMaskPixel ( マスク画像の値の設定 )
+setMode ( モーダル状態にする )
+setPos ( レイヤ表示位置の設定 )
+setProvincePixel ( 領域画像の値の設定 )
+setSize ( レイヤ表示サイズの設定 )
+setSizeToImageSize ( レイヤ表示サイズを画像サイズに合わせる )
+stopTransition ( トランジションを停止する )
+stretchBlend ( 拡大縮小重ね合わせ )
+stretchCopy ( 拡大縮小コピー )
+stretchPile ( 拡大縮小ピクセルアルファブレンド重ね合わせ )
+update ( 画像の更新 )
+
+
プロパティ
+
+absolute ( 絶対位置 )
+absoluteOrderMode ( 絶対位置モードかどうか )
+attentionLeft ( 注視左端位置 )
+attentionTop ( 注視上端位置 )
+cached ( キャッシュを行うか )
+callOnPaint ( onPaint イベントを呼ぶかどうか )
+children ( 子レイヤ配列 )
+clipHeight ( 描画クリップ矩形縦幅 )
+clipLeft ( 描画クリップ矩形左端位置 )
+clipTop ( 描画クリップ矩形上端位置 )
+clipWidth ( 描画クリップ矩形横幅 )
+cursor ( マウスカーソル )
+cursorX ( マウスカーソル x 位置 )
+cursorY ( マウスカーソル y 位置 )
+enabled ( 操作可能かどうか )
+face ( 描画方式 )
+focusable ( フォーカスを受け取れるかどうか )
+focused ( フォーカスされているかどうか )
+font ( フォント )
+hasImage ( レイヤが画像を持っているかどうか )
+height ( 縦幅 )
+hint ( ヒント )
+hitThreshold ( 当たり判定の敷居値 )
+hitType ( 当たり判定のタイプ )
+holdAlpha ( アルファチャンネルを保護するか )
+imageHeight ( 画像縦幅 )
+imageLeft ( レイヤ画像左端オフセット )
+imageModified ( 画像が変更されたか )
+imageTop ( レイヤ画像上端オフセット )
+imageWidth ( 画像横幅 )
+imeMode ( IMEモード )
+isPrimary ( プライマリレイヤかどうか )
+joinFocusChain ( フォーカスチェーンに参加するか )
+left ( 左端位置 )
+mainImageBuffer ( メイン画像バッファポインタ )
+mainImageBufferForWrite ( メイン画像バッファポインタ(書き込み用) )
+mainImageBufferPitch ( メイン画像バッファピッチ )
+name ( レイヤ名 )
+neutralColor ( 中性色 )
+nextFocusable ( 後方のフォーカスを受け取れるレイヤ )
+nodeEnabled ( レイヤノードが操作可能かどうか )
+nodeVisible ( ノードが可視かどうか )
+opacity ( 不透明度 )
+order ( 相対位置 )
+parent ( 親レイヤ )
+prevFocusable ( 前方のフォーカスを受け取れるレイヤ )
+provinceImageBuffer ( 領域画像バッファポインタ )
+provinceImageBufferForWrite ( 領域画像バッファポインタ(書き込み用) )
+provinceImageBufferPitch ( 領域画像バッファピッチ )
+showParentHint ( 親レイヤのヒントを引き継ぐか )
+top ( 上端位置 )
+type ( レイヤ表示タイプ )
+useAttention ( 注視情報を使用するかどうか )
+visible ( 可視かどうか )
+width ( 横幅 )
+window ( ウィンドウオブジェクト )
+
+
イベント
+
+onBeforeFocus ( フォーカスを受け取る直前 )
+onBlur ( フォーカスを失った )
+onClick ( レイヤがクリックされた )
+onDoubleClick ( レイヤがダブルクリックされた )
+onFocus ( フォーカスを得た )
+onHitTest ( 当たり判定 )
+onKeyDown ( キーが押された )
+onKeyPress ( 文字が入力された )
+onKeyUp ( キーが離された )
+onMouseDown ( マウスのボタンが押された )
+onMouseEnter ( マウスが入ってきた )
+onMouseLeave ( マウスが出ていった )
+onMouseMove ( マウスが移動した )
+onMouseUp ( マウスのボタンが離された )
+onMouseWheel ( マウスホイールが回転した )
+onNodeDisabled ( ノードが操作不能になった )
+onNodeEnabled ( ノードが操作可能になった )
+onPaint ( 描画されるとき )
+onSearchNextFocusable ( フォーカス可能なレイヤの後方検索 )
+onSearchPrevFocusable ( フォーカス可能なレイヤの前方検索 )
+onTransitionCompleted ( トランジションが終了した )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_Layer.html b/docs/kr2doc/contents/f_Layer_Layer.html new file mode 100644 index 0000000..7739871 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_Layer.html @@ -0,0 +1,64 @@ + + + + + + + Layer - Layer オブジェクトの構築 + + + + + + + + + +

Layer.Layer

+
+
機能/意味
+
+Layer オブジェクトの構築
+
タイプ
+
+Layerクラスのコンストラクタ
+
+
構文
+
+Layer(window, parent)
+
+
引数
+
+ + + + + +
window  このレイヤを保有することになるウィンドウ ( Window クラスの + オブジェクト ) を指定します。
+  ウィンドウはいったん決定したら変更することはできません。
+
parent  このレイヤの親となるレイヤを指定します。
+  null を指定するとプライマリレイヤになります。
+  プライマリレイヤはウィンドウに一つのみ存在することができ、また、レイヤを用いる場合は + かならず一つ存在しなければならない、すべてのレイヤの親となるレイヤです。
+  ただし、描画デバイス ( Window.drawDevice で設定可能) によっては、ウィンドウが + 複数のプライマリレイヤを持つことができる物があります。
+  レイヤの親は、Layer.parent プロパティで変更することができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Layer クラスのオブジェクトを構築します。
+  Layer クラスは非表示の状態で構築されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_absolute.html b/docs/kr2doc/contents/f_Layer_absolute.html new file mode 100644 index 0000000..2169495 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_absolute.html @@ -0,0 +1,46 @@ + + + + + + + absolute - 絶対位置 + + + + + + + + + +

Layer.absolute

+
+
機能/意味
+
+絶対位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  同じ親を持つ兄弟レイヤ間での重ね合わせ順序を表します。値が小さいほど奥に表示されます。
+ Layer.order プロパティと違い、同じ兄弟間で値は連続している必要はありません。
+  値を設定すると兄弟レイヤ間での順位を変えることができます。値を設定すると + 親レイヤの Layer.absoluteOrderMode プロパティが真に設定されます。
+
+
参照
+
+Layer.order
+Layer.absoluteOrderMode
+Layer.bringToBack
+Layer.bringToFront
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_absoluteOrderMode.html b/docs/kr2doc/contents/f_Layer_absoluteOrderMode.html new file mode 100644 index 0000000..f0e9088 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_absoluteOrderMode.html @@ -0,0 +1,47 @@ + + + + + + + absoluteOrderMode - 絶対位置モードかどうか + + + + + + + + + +

Layer.absoluteOrderMode

+
+
機能/意味
+
+絶対位置モードかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  直属の子レイヤの重ね合わせ順モードを表します。値を設定することもできます。
+  偽を指定すると相対位置指定となり、Layer.order プロパティが + その順位を表すようになります。
+  真を指定すると絶対位置指定となり、Layer.absolute プロパティが + その順位を表すようになります。
+
+
参照
+
+Layer.order
+Layer.absolute
+Layer.bringToBack
+Layer.bringToFront
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_adjustGamma.html b/docs/kr2doc/contents/f_Layer_adjustGamma.html new file mode 100644 index 0000000..229c5a4 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_adjustGamma.html @@ -0,0 +1,81 @@ + + + + + + + adjustGamma - ガンマ補正 + + + + + + + + + +

Layer.adjustGamma

+
+
機能/意味
+
+ガンマ補正
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+adjustGamma(rgamma=1.0, rfloor=0, rceil=255, ggamma=1.0, gfloor=0, gceil=255, bgamma=1.0, bfloor=0, bceil=255)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + +
rgamma  赤成分のガンマ値 ( 0.0 〜 1.0 〜 9.0 ) を指定します。
+
rfloor  赤成分の出力最低値 ( 0 〜 255 ) を指定します。
+
rceil  赤成分の出力最大値 ( 0 〜 255 ) を指定します。
+
ggamma  緑成分のガンマ値 ( 0.0 〜 1.0 〜 9.0 ) を指定します。
+
gfloor  緑成分の出力最低値 ( 0 〜 255 ) を指定します。
+
gceil  緑成分の出力最大値 ( 0 〜 255 ) を指定します。
+
bgamma  青成分のガンマ値 ( 0.0 〜 1.0 〜 9.0 ) を指定します。
+
bfloor  青成分の出力最低値 ( 0 〜 255 ) を指定します。
+
bceil  青成分の出力最大値 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  画像に対してガンマ補正を実行します。
+  ガンマ値には 1.0 を指定するとガンマ曲線が直線になります。
+  出力最低値と出力最高値は各成分の輝度の最低値と最高値を指定するものです。
+  最高値に最低値よりも低い値を設定すると画像を反転させることができます。
+  このメソッドはLayer.faceプロパティを参照します。これが dfAddAlpha の場合、このメソッドは + 加算アルファ合成用の特別なガンマ補正ルーチンを用います。このルーチンは加算アルファ合成のうち、アルファ合成に相当する成分に対してはガンマ補正を行いますが、加算合成に相当する成分に対してはガンマ補正を行いません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_affineBlend.html b/docs/kr2doc/contents/f_Layer_affineBlend.html new file mode 100644 index 0000000..f952095 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_affineBlend.html @@ -0,0 +1,136 @@ + + + + + + + affineBlend - アフィン変換重ね合わせ + + + + + + + + + +

Layer.affineBlend

+
+
機能/意味
+
+アフィン変換重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+affineBlend(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
affine  続く6つの引数 (A 〜 F パラメータ)をどのように扱うかを指定します。
+  真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : 2Dアフィン変換行列の a
+ B : 2Dアフィン変換行列の b
+ C : 2Dアフィン変換行列の c
+ D : 2Dアフィン変換行列の d
+ E : 2Dアフィン変換行列の tx
+ F : 2Dアフィン変換行列の ty
+
+  アフィン変換により、重ね合わせ元の画像位置 (x, y) ( ただし、重ね合わせ元矩形の左上隅を (0, 0) とする ) は以下の式により、重ね合わせ先の画像位置 (x', y')に変換されます。
+ x' = a*x + c*y + tx
+ y' = b*x + d*y + ty
+
+  偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
+ B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
+ C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
+ D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
+ E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
+ F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)
+
+  偽を指定した場合、重ね合わせ元の右下隅に対応する、重ね合わせ先位置(x3, y3)は自動的に以下の式によって計算されます。
+ x3 = x1 - x0 + x2
+ y3 = y1 - y0 + y2
+
A  A パラメータです。affine 引数によって解釈が変わります。
+
B  B パラメータです。affine 引数によって解釈が変わります。
+
C  C パラメータです。affine 引数によって解釈が変わります。
+
D  D パラメータです。affine 引数によって解釈が変わります。
+
E  E パラメータです。affine 引数によって解釈が変わります。
+
F  F パラメータです。affine 引数によって解釈が変わります。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
type  アフィン変換のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いモードほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) に + アフィン変換を行いながら重ね合わせます。
+  アフィン変換については Layer.affineCopy も参照してください。
+  重ね合わせ元のレイヤの Layer.face プロパティは無視されますが、Layer.affinePile と異な + り、重ね合わせ元のレイヤの不透明度は無視されます ( 常に完全に不透明であると見なされます )。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイ + ヤの Layer.face プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)。この場合は、Layer.holdAlphaプロパティが偽のとき、type 引数に stFastLinear を指定することにより、線形補間が可能です。
+ それ以外 : できません ( 例外が発生します )
+
+  このメソッドは旧式になりました。代わりに Layer.operateAffine を使用してください。演算のモードに omOpaque を指定すると同じ効果になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_affineCopy.html b/docs/kr2doc/contents/f_Layer_affineCopy.html new file mode 100644 index 0000000..87e6400 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_affineCopy.html @@ -0,0 +1,141 @@ + + + + + + + affineCopy - アフィン変換コピー + + + + + + + + + +

Layer.affineCopy

+
+
機能/意味
+
+アフィン変換コピー
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+affineCopy(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, type=stNearest, clear=false)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
src  コピー元のレイヤオブジェクトを指定します。
+
sleft  コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
affine  続く6つの引数 (A 〜 F パラメータ)をどのように扱うかを指定します。
+  真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : 2Dアフィン変換行列の a
+ B : 2Dアフィン変換行列の b
+ C : 2Dアフィン変換行列の c
+ D : 2Dアフィン変換行列の d
+ E : 2Dアフィン変換行列の tx
+ F : 2Dアフィン変換行列の ty
+
+  アフィン変換により、コピー元の画像位置 (x, y) ( ただし、コピー元矩形の左上隅を (0, 0) とする ) は以下の式により、コピー先の画像位置 (x', y')に変換されます。
+ x' = a*x + c*y + tx
+ y' = b*x + d*y + ty
+
+  偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。これらのパラメータは実数での指定も受け付けます。
+ A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
+ B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
+ C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
+ D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
+ E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
+ F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)
+
+  偽を指定した場合、コピー元の右下隅に対応する、コピー先位置(x3, y3)は自動的に以下の式によって計算されます。
+ x3 = x1 - x0 + x2
+ y3 = y1 - y0 + y2
+
A  A パラメータです。affine 引数によって解釈が変わります。
+
B  B パラメータです。affine 引数によって解釈が変わります。
+
C  C パラメータです。affine 引数によって解釈が変わります。
+
D  D パラメータです。affine 引数によって解釈が変わります。
+
E  E パラメータです。affine 引数によって解釈が変わります。
+
F  F パラメータです。affine 引数によって解釈が変わります。
+
type  アフィン変換のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
clear  転送先レイヤの、アフィン変換された画像の周囲をLayer.neutralColor プロパティで示された色・透明度でクリアするかどうかを指定します。真を指定するとクリアされ、この引数を省略するか偽を渡すとクリアされません。
+  クリアされる領域は Layer.setClip メソッドで制限することもできます。
+  このクリアの機能を使うと、いったん転送先レイヤをクリアしてからアフィン変換で画像を上書き転送する際の、上書きされる領域(クリアされた場所にアフィン変換で上書きされる部分)のクリアの無駄を省くことができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたコピー元レイヤの矩形を、コピー先 ( メソッドを実行するレイヤ ) に + アフィン変換を行いながらコピーします。
+  affine 引数によって、変形パラメータとして二次元アフィン変換行列を指定するか、 + あるいは変換後の点を直接指定するかを選ぶことができます。
+  現バージョンでは stFastLinear の指定で線形補間が効くのは、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが dfAlpha (または dfBoth) または dfAddAlpha の場合です。また、Layer.face プロパティが dfOpaque で、Layer.holdAlpha プロパティが偽の時も線形補間が可能です。
+  重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが + dfAlpha (または dfBoth) または dfAddAlpha の場合は、メイン画像とマスク画像の両方がコピーされます。
+  重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが + dfOpaque (または dfMain) の場合は、Layer.holdAlpha プロパティが真の時はメイン画像のみがコピーされ、偽の時はメイン画像とマスク画像の両方がコピーされます。
+
+  二次元アフィン変換行列による変換は、コピー元矩形の左上を原点 (0, 0) とし、 + 以下のように定義されます。
+
+  二次元アフィン変換を行うことにより、拡大縮小、回転、せん断(傾け)、平行移動、反転、あるいはこれらの組み合わせすべての変形を行うことができます。
+  二次元アフィン変換を行うメソッドでは、二次元アフィン行列ではなく、変換後の各頂点を直接指定することでも変形を指定できますが、この場合でも二次元アフィン変換で定義できないような変形は行うことはできません。
+
+  アフィン変換においては、ピクセルは 1.0 × 1.0 のサイズを持っていると見なされます。つまり、(0, 0) の位置にあるピクセルは (-0.5, -0.5) - (0.5, 0.5) の範囲にあると見なされます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_affinePile.html b/docs/kr2doc/contents/f_Layer_affinePile.html new file mode 100644 index 0000000..2fb214a --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_affinePile.html @@ -0,0 +1,134 @@ + + + + + + + affinePile - アフィン変換ピクセルアルファブレンド重ね合わせ + + + + + + + + + +

Layer.affinePile

+
+
機能/意味
+
+アフィン変換ピクセルアルファブレンド重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+affinePile(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
affine  続く6つの引数 (A 〜 F パラメータ)をどのように扱うかを指定します。
+  真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : 2Dアフィン変換行列の a
+ B : 2Dアフィン変換行列の b
+ C : 2Dアフィン変換行列の c
+ D : 2Dアフィン変換行列の d
+ E : 2Dアフィン変換行列の tx
+ F : 2Dアフィン変換行列の ty
+
+  アフィン変換により、重ね合わせ元の画像位置 (x, y) ( ただし、重ね合わせ元矩形の左上隅を (0, 0) とする ) は以下の式により、重ね合わせ先の画像位置 (x', y')に変換されます。
+ x' = a*x + c*y + tx
+ y' = b*x + d*y + ty
+
+  偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
+ B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
+ C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
+ D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
+ E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
+ F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)
+
+  偽を指定した場合、重ね合わせ元の右下隅に対応する、重ね合わせ先位置(x3, y3)は自動的に以下の式によって計算されます。
+ x3 = x1 - x0 + x2
+ y3 = y1 - y0 + y2
+
A  A パラメータです。affine 引数によって解釈が変わります。
+
B  B パラメータです。affine 引数によって解釈が変わります。
+
C  C パラメータです。affine 引数によって解釈が変わります。
+
D  D パラメータです。affine 引数によって解釈が変わります。
+
E  E パラメータです。affine 引数によって解釈が変わります。
+
F  F パラメータです。affine 引数によって解釈が変わります。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
type  アフィン変換のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(未実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) に + アフィン変換を行いながら重ね合わせます。
+  アフィン変換については Layer.affineCopy も参照してください。
+  ピクセルごとの不透明度 ( ピクセルアルファ ) を用いた重ね合わせを行うことができます。
+  現バージョンでは mode には stNearest のみ指定できます。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイ + ヤの Layer.face プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)
+ それ以外 : できません ( 例外が発生します )
+
+  このメソッドは旧式になりました。代わりに Layer.operateAffine を使用してください。演算のモードに omAlpha か omAddAlpha を指定すると同じ効果になります(omAlphaを指定するのかomAddAlphaを指定するのかはsrcのアルファタイプによって異なります。omAutoを指定すればsrcのレイヤタイプに従って自動的に決定されます)。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_assignImages.html b/docs/kr2doc/contents/f_Layer_assignImages.html new file mode 100644 index 0000000..6444f47 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_assignImages.html @@ -0,0 +1,55 @@ + + + + + + + assignImages - 画像のコピー + + + + + + + + + +

Layer.assignImages

+
+
機能/意味
+
+画像のコピー
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+assignImages(src)
+
+
引数
+
+ + + +
src  コピー元のレイヤを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  src で指定したレイヤの、メイン画像、マスク画像、領域画像をすべてコピーします。
+  画像サイズはコピー元のレイヤの画像サイズと同一になります。それ以外の情報はコピーしません。
+  コピーといっても、実際は「同じ画像を二つ以上のレイヤで共有している」という状態になるだけなので + このメソッドはほとんど実行時間がかかりません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_attentionLeft.html b/docs/kr2doc/contents/f_Layer_attentionLeft.html new file mode 100644 index 0000000..20849e8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_attentionLeft.html @@ -0,0 +1,41 @@ + + + + + + + attentionLeft - 注視左端位置 + + + + + + + + + +

Layer.attentionLeft

+
+
機能/意味
+
+注視左端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  注視左端位置を、表示座標におけるピクセル単位で表します。値を設定することもできます。
+
+
参照
+
+Layer.setAttentionPos
+Layer.useAttention
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_attentionTop.html b/docs/kr2doc/contents/f_Layer_attentionTop.html new file mode 100644 index 0000000..ce01d6d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_attentionTop.html @@ -0,0 +1,41 @@ + + + + + + + attentionTop - 注視上端位置 + + + + + + + + + +

Layer.attentionTop

+
+
機能/意味
+
+注視上端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  注視上端位置を、表示座標におけるピクセル単位で表します。値を設定することもできます。
+
+
参照
+
+Layer.setAttentionPos
+Layer.useAttention
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_beginTransition.html b/docs/kr2doc/contents/f_Layer_beginTransition.html new file mode 100644 index 0000000..af9a1a9 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_beginTransition.html @@ -0,0 +1,95 @@ + + + + + + + beginTransition - トランジションの開始 + + + + + + + + + +

Layer.beginTransition

+
+
機能/意味
+
+トランジションの開始
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+beginTransition(name, withchildren=true, transsrc=null, options=%[ ])
+
+
引数
+
+ + + + + + + + + +
name  トランジション名を指定します。
+  デフォルトでは 'crossfade' ( クロスフェード )、'universal' ( ユニバーサルトラン + ジション )、'scroll' ( スクロールトランジション ) が定義されています。
+
withchildren  子レイヤも一緒にトランジションを行うかどうかです。真を指定すると + 子レイヤごとトランジションします。偽を指定するとメソッドを実行するレイヤのみ + がトランジションします。
+
transsrc  切り替わり先となるレイヤを指定します。トランジションによっては指定が必要ない + もの ( 単独でトランジションするものなど ) もあるかもしれません。
+
options  トランジションのオプションを辞書配列で指定します。
+  必要なオプションはトランジションの種類によって異なります。
+  トランジションの種類に関係なく、共通して指定できるオプションとして 'selfupdate' メンバと 'callback' メンバがあります。
+
+  'selfupdate' メンバが 真 の場合は、吉里吉里は自動での画面更新を行わなくなります。 + この場合は、適宜プログラム側で Layer.update メソッドなどで画面を更新しなければなりません。この機能は、トランジションによる描画とプログラムによる描画を完全に同期させたい場合に便利です。
+
+  'callback' メンバにTJS2のメソッドを指定すると、 + 描画が実際に行われる度にそのメソッドが呼ばれます。 + このメソッド(コールバックされるメソッド)では 'tick' 値を0以上の値で返してください。 + 多くのトランジションは、ミリ秒単位での実際の時間である'tick' + 値を元にトランジションを行っていますが、 + このコールバックされるメソッドで任意のtickを返すように実装することにより、 + トランジションの効果を任意の時点で巻き戻したり、途中で早送りをしたりが可能になり、 + 実際の時間に関係なくトランジションを制御できるようになります。 + 多くのトランジションは、オプションの'time' + メンバで指定した値がトランジションの終端であると見なしています。 + そのため、たとえばオプションの 'time' には 1000 等の適当な値を指定しておき、 + このコールバックされるメソッドで 1000 未満の値を返すことにより、 + 任意の段階でのトランジションの表示などを行わせることができるようになります。 + また、多くのトランジションの場合、オプションの 'time' で指定された値に 'tick' + 値が達すると、トランジションが停止しますので、 + トランジションを停止させたくない場合は、 'time' で指定した値未満の値を常に + 指定するようにしてください。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  トランジションを開始します。
+  children=真 の場合のトランジションは、終了するときに、transsrc で指定した + トランジション元とそっくり親子関係のツリー構造が入れ替わります。
+  children=偽 の場合は、トランジション元のレイヤとメソッドを実行したレイヤ ( + トランジション先のレイヤ ) のみが入れ替わります。
+  どちらの場合も、ツリー構造上での入れ替えが行われるため注意してください。
+  このメソッドはトランジションを開始させるだけですぐに戻ります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_blendRect.html b/docs/kr2doc/contents/f_Layer_blendRect.html new file mode 100644 index 0000000..fa96569 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_blendRect.html @@ -0,0 +1,81 @@ + + + + + + + blendRect - 矩形重ね合わせ + + + + + + + + + +

Layer.blendRect

+
+
機能/意味
+
+矩形重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+blendRect(dleft, dtop, src, sleft, stop, swidth, sheight, opa=255)
+
+
引数
+
+ + + + + + + + + + + + + + + + + +
dleft  重ね合わせ先の矩形の左端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  重ね合わせ先の矩形の上端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形部分を自分のレイヤの指定位置に重ね合わせます。
+  重ね合わせ元のレイヤの Layer.face プロパティは無視されますが、Layer.pileRect と異な + り、重ね合わせ元のレイヤの不透明度は無視されます ( 常に完全に不透明であると見なされます )。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face  プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)
+ それ以外 : できません ( 例外が発生します )
+
+  このメソッドは旧式になりました。代わりに Layer.operateRect を使用してください。演算のモードに omOpaque を指定すると同じ効果になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_bringToBack.html b/docs/kr2doc/contents/f_Layer_bringToBack.html new file mode 100644 index 0000000..fd9ce45 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_bringToBack.html @@ -0,0 +1,56 @@ + + + + + + + bringToBack - 一番奥に移動 + + + + + + + + + +

Layer.bringToBack

+
+
機能/意味
+
+一番奥に移動
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+bringToBack()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  重ね合わせ順において、兄弟レイヤ ( 同じ親を持つレイヤ ) の中でもっとも奥に移動します。
+  このメソッドを実行すると親レイヤの Layer.absoluteOrderMode プロパティが偽に設定されます。
+
+
参照
+
+Layer.order
+Layer.absolute
+Layer.absoluteOrderMode
+Layer.bringToFront
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_bringToFront.html b/docs/kr2doc/contents/f_Layer_bringToFront.html new file mode 100644 index 0000000..1d2d511 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_bringToFront.html @@ -0,0 +1,56 @@ + + + + + + + bringToFront - 一番手前に移動 + + + + + + + + + +

Layer.bringToFront

+
+
機能/意味
+
+一番手前に移動
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+bringToFront()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  重ね合わせ順において、兄弟レイヤ ( 同じ親を持つレイヤ ) の中でもっとも手前に移動します。
+  このメソッドを実行すると親レイヤの Layer.absoluteOrderMode プロパティが偽に設定されます。
+
+
参照
+
+Layer.order
+Layer.absolute
+Layer.absoluteOrderMode
+Layer.bringToBack
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_cached.html b/docs/kr2doc/contents/f_Layer_cached.html new file mode 100644 index 0000000..09ad56e --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_cached.html @@ -0,0 +1,40 @@ + + + + + + + cached - キャッシュを行うか + + + + + + + + + +

Layer.cached

+
+
機能/意味
+
+キャッシュを行うか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  キャッシュを行うかどうかを表します。値を設定することもできます。
+  キャッシュを行う設定の場合、自分自身と子レイヤをすべて重ね合わせた状態の画像をあらかじめ持っておくことになり、以後、自分や子レイヤに変更が加わらない限り、自分自身と子レイヤの重ね合わせに関する画像演算を行いません(変更があった場合は自動的にキャッシュを再構成します)。
+  キャッシュを行わない設定の場合は、画面更新の際に毎回重ね合わせの演算が行われます。
+  デフォルトではキャッシュは行いませんが、トランジション中は自動的にキャッシュが有効になります (ただしこのプロパティはトランジション中などで自動的に有効になるようなキャッシュの有無の状態までは表しません )。
+  あるレイヤの画像とその子レイヤの画像や状態に変化がないことが分かっていて、かつ画面が頻繁に書き換わるような場合では、そのレイヤではキャッシュを行った方が全体のパフォーマンスがあがります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_callOnPaint.html b/docs/kr2doc/contents/f_Layer_callOnPaint.html new file mode 100644 index 0000000..d956c0f --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_callOnPaint.html @@ -0,0 +1,40 @@ + + + + + + + callOnPaint - onPaint イベントを呼ぶかどうか + + + + + + + + + +

Layer.callOnPaint

+
+
機能/意味
+
+onPaint イベントを呼ぶかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  Layer.onPaint イベントを呼ぶかどうかを表します。値を設定することもできます。
+  真を指定すると、次回の画面への描画の直前に onPaint イベントを呼ぶようになります。onPaint イベント + が処理し終わるとこのプロパティは自動的に偽に戻されます。
+  偽が指定されている状態では onPaint イベントは発生しません。
+  Layer.update メソッドはこのプロパティを真に設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_children.html b/docs/kr2doc/contents/f_Layer_children.html new file mode 100644 index 0000000..fff0a7e --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_children.html @@ -0,0 +1,37 @@ + + + + + + + children - 子レイヤ配列 + + + + + + + + + +

Layer.children

+
+
機能/意味
+
+子レイヤ配列
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  子レイヤの格納された配列オブジェクトを表します。
+  ここで得られた配列に値を書き込んだり、項目の削除や追加などをしても実際のレイヤの状態には反映されません。読み取りのみが行えると考えてください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_clipHeight.html b/docs/kr2doc/contents/f_Layer_clipHeight.html new file mode 100644 index 0000000..b5627a3 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_clipHeight.html @@ -0,0 +1,41 @@ + + + + + + + clipHeight - 描画クリップ矩形縦幅 + + + + + + + + + +

Layer.clipHeight

+
+
機能/意味
+
+描画クリップ矩形縦幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画クリップ矩形の縦幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setClip
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_clipLeft.html b/docs/kr2doc/contents/f_Layer_clipLeft.html new file mode 100644 index 0000000..df8862d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_clipLeft.html @@ -0,0 +1,41 @@ + + + + + + + clipLeft - 描画クリップ矩形左端位置 + + + + + + + + + +

Layer.clipLeft

+
+
機能/意味
+
+描画クリップ矩形左端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画クリップ矩形の左端をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setClip
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_clipTop.html b/docs/kr2doc/contents/f_Layer_clipTop.html new file mode 100644 index 0000000..fb6f3b5 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_clipTop.html @@ -0,0 +1,41 @@ + + + + + + + clipTop - 描画クリップ矩形上端位置 + + + + + + + + + +

Layer.clipTop

+
+
機能/意味
+
+描画クリップ矩形上端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画クリップ矩形の上端をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setClip
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_clipWidth.html b/docs/kr2doc/contents/f_Layer_clipWidth.html new file mode 100644 index 0000000..b0c390e --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_clipWidth.html @@ -0,0 +1,41 @@ + + + + + + + clipWidth - 描画クリップ矩形横幅 + + + + + + + + + +

Layer.clipWidth

+
+
機能/意味
+
+描画クリップ矩形横幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画クリップ矩形の横幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setClip
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_colorRect.html b/docs/kr2doc/contents/f_Layer_colorRect.html new file mode 100644 index 0000000..07004c8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_colorRect.html @@ -0,0 +1,81 @@ + + + + + + + colorRect - 矩形半透明塗りつぶし + + + + + + + + + +

Layer.colorRect

+
+
機能/意味
+
+矩形半透明塗りつぶし
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+colorRect(left, top, width, height, value, opa=255)
+
+
引数
+
+ + + + + + + + + + + + + +
left  塗りつぶす矩形の左端位置を ( 画像位置における ) ピクセル単位で指定します。
+
top  塗りつぶす矩形の上端位置を ( 画像位置における ) ピクセル単位で指定します。
+
width  塗りつぶす矩形の横幅を ( 画像位置における ) ピクセル単位で指定します。
+
height  塗りつぶす矩形の縦幅を ( 画像位置における ) ピクセル単位で指定します。
+
value  塗りつぶす色や値を指定します。
+  この値は、Layer.face プロパティの値によって意味が変わります。
+ dfAlpha (またはdfBoth) : 0xRRGGBB 形式で色を指定してください
+ dfAddAlpha : 0xRRGGBB 形式で色を指定してください
+ dfOpaque (またはdfMain) : 0xRRGGBB 形式で色を指定してください
+ dfMask : マスク(不透明度)の値 ( 0 〜 255 ) を指定してください
+ dfProvince : 領域の値 ( 0 〜 255 ) を指定してください
+  dfOpaque を指定した場合は、マスク情報は無視されます(マスク情報が保持されるか破壊されるかは Layer.holdAlpha プロパティによります)。また、dfMask を指定した場合は、色の情報はそのままになります。
+  dfAlpha の場合でかつ opa が負の場合はこの引数は無視されます。
+
opa  塗りつぶす不透明度 ( -255 〜 0 〜 255 ) を指定します。
+  この引数は、Layer.face プロパティの値が dfMask や + dfProvince の場合は無視されます ( 常に完全不透明 )。
+  負の数の指定は Layer.face が dfAlpha の場合のみに有効で、 + この場合は value 引数は無視され、画像から不透明度が取り除かれます ( + -255 を指定すると矩形は完全に透明になります )。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたレイヤ画像の矩形を指定された方法で塗りつぶします。
+  Layer.fillRect と異なり、透明度を指定して半透明で塗りつぶすことができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_convertType.html b/docs/kr2doc/contents/f_Layer_convertType.html new file mode 100644 index 0000000..4d85e63 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_convertType.html @@ -0,0 +1,58 @@ + + + + + + + convertType - レイヤ画像表現形式の変換 + + + + + + + + + +

Layer.convertType

+
+
機能/意味
+
+レイヤ画像表現形式の変換
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+convertType(from)
+
+
引数
+
+ + + +
from 変換元となる描画方式タイプを指定します。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤ画像の形式を変換します。
+  このメソッドは、ltAlpha (dfAlpha) と ltAddAlpha (dfAddAlpha) のように、「レイヤの画像表現形式が異なるが同様の表現が可能なタイプ」間での画像表現形式の変換を行います。
+  たとえば、ltAlpha で表示しているレイヤのタイプをそのまま ltAddAlpha に変更しただけでは、アルファチャンネルと色情報の扱いが異なるので正常に表示されません。そのため、このメソッドを用い、dfAlpha から dfAddAlpha に変換を行う必要があります。
+  このメソッドでは、変換先の画像表現形式は Layer.face プロパティで指定した描画方式に対応した形式になります (Layer.typeで指定するレイヤタイプではなくて、描画方式であることに注意してください )。
+  from 引数には、変換元の画像表現形式に対応する描画方式(dfで始まる定数; Layer.face参照)を指定します。from 引数には dfAuto は指定できません。
+  現在サポートされている変換は、dfAlpha→dfAddAlpha と dfAddAlpha→dfAlpha の変換です。dfAddAlpha→dfAlphaでは、変換により色情報が失われる場合があります。
+  このメソッドは、描画クリップ矩形の影響を受けません ( 常にレイヤ画像全体が影響を受けます )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_copyRect.html b/docs/kr2doc/contents/f_Layer_copyRect.html new file mode 100644 index 0000000..be48e8b --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_copyRect.html @@ -0,0 +1,79 @@ + + + + + + + copyRect - 矩形コピー + + + + + + + + + +

Layer.copyRect

+
+
機能/意味
+
+矩形コピー
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+copyRect(dleft, dtop, src, sleft, stop, swidth, sheight)
+
+
引数
+
+ + + + + + + + + + + + + + + +
dleft  コピー先の矩形の左端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  コピー先の矩形の上端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  コピー元のレイヤオブジェクトを指定します。
+
sleft  コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたコピー元レイヤの矩形部分を自分のレイヤの指定位置にコピーします。
+  コピーされる画像は、コピー先レイヤ ( メソッドを実行するレイヤ ) の + Layer.face プロパティの値によって変わります。
+ dfAlpha (または dfBoth) : メイン画像とマスク画像がコピーされます
+ dfAddAlpha : メイン画像とマスク画像がコピーされます
+ dfOpaque (または dfMain) : Layer.holdAlpha プロパティが真の場合は、メイン画像のみがコピーされます ( マスク画像はコピーされません )。偽の場合はメイン画像とマスク画像がコピーされます
+ dfMask : マスク画像のみがコピーされます ( メイン画像はコピーされません )
+ dfProvince : 領域画像のみがコピーされます ( マスク画像やメイン画像はコピーされません )
+  コピー元のレイヤの Layer.face プロパティは無視されます。
+  このメソッドは、Layer.holdAlpha の影響は受けません (dfAlpha や dfAddAlpha の場合は holdAlpha に関わらずマスク画像もコピーされます)
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_cursor.html b/docs/kr2doc/contents/f_Layer_cursor.html new file mode 100644 index 0000000..6a94cea --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_cursor.html @@ -0,0 +1,39 @@ + + + + + + + cursor - マウスカーソル + + + + + + + + + +

Layer.cursor

+
+
機能/意味
+
+マウスカーソル
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤのマウスカーソルを表します。値を設定することもできます。
+  マウスカーソルには、cr で始まるマウスカーソル定数 か、.cur の拡張子を持つ + マウスカーソルや .ani の拡張子を持つアニメーションマウスカーソルのストレージ名を + 指定することができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_cursorX.html b/docs/kr2doc/contents/f_Layer_cursorX.html new file mode 100644 index 0000000..2cd0c00 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_cursorX.html @@ -0,0 +1,42 @@ + + + + + + + cursorX - マウスカーソル x 位置 + + + + + + + + + +

Layer.cursorX

+
+
機能/意味
+
+マウスカーソル x 位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤのマウスカーソルの x 座標値を、表示座標におけるピクセル単位で表します。値を設定することもできます。
+  値を設定するときは、cursorX プロパティを設定しただけではマウスカーソルは移動しません。 + 続いて cursorY プロパティを設定したときにマウスカーソルが移動します。
+
+
参照
+
+Layer.setCursorPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_cursorY.html b/docs/kr2doc/contents/f_Layer_cursorY.html new file mode 100644 index 0000000..6abcf52 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_cursorY.html @@ -0,0 +1,42 @@ + + + + + + + cursorY - マウスカーソル y 位置 + + + + + + + + + +

Layer.cursorY

+
+
機能/意味
+
+マウスカーソル y 位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤのマウスカーソルの y 座標値を、表示座標におけるピクセル単位で表します。値を設定することもできます。
+  値を設定するときは、cursorX プロパティを設定しただけではマウスカーソルは移動しません。 + 続いて cursorY プロパティを設定したときにマウスカーソルが移動します。
+
+
参照
+
+Layer.setCursorPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_doBoxBlur.html b/docs/kr2doc/contents/f_Layer_doBoxBlur.html new file mode 100644 index 0000000..ee6ef98 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_doBoxBlur.html @@ -0,0 +1,58 @@ + + + + + + + doBoxBlur - 矩形ブラーをかける + + + + + + + + + +

Layer.doBoxBlur

+
+
機能/意味
+
+矩形ブラーをかける
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+doBoxBlur(xblur=1, yblur=1)
+
+
引数
+
+ + + + + +
xblur 横方向のブラーの範囲を指定します。 +
yblur 縦方向のブラーの範囲を指定します。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ブラー(ぼかし)をかけます。アルゴリズムは「矩形ブラー」(box blur)です。
+  矩形ブラーは、xblurとyblurの2つのパラメータによって表現される「範囲」中のピクセルの輝度の平均値をとる物です。たとえば xblur=10 yblur=2 の場合は、対象のピクセルを中心に、横方向は -10〜10、縦方向は -2〜2 の矩形範囲のピクセルの輝度の平均をとり、それが最終的なそのピクセルの輝度となります。
+  範囲の面積は (xblur×2+1) × (yblur×2+1) で計算することができます。現バージョンではこの面積が 256 未満 の場合は、面積が256以上の場合よりも高速なアルゴリズムが採用されます。
+  Layer.face プロパティが dfAlpha の場合は、アルファ合成用の特別なアルゴリズムを使用しますので、少々遅くなります。dfAddAlpha や他の描画方式の場合は、より高速なアルゴリズムとなります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_doGrayScale.html b/docs/kr2doc/contents/f_Layer_doGrayScale.html new file mode 100644 index 0000000..2c98417 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_doGrayScale.html @@ -0,0 +1,48 @@ + + + + + + + doGrayScale - グレースケール変換 + + + + + + + + + +

Layer.doGrayScale

+
+
機能/意味
+
+グレースケール変換
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+doGrayScale()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  画像をグレースケールに変換します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_drawText.html b/docs/kr2doc/contents/f_Layer_drawText.html new file mode 100644 index 0000000..51cc6cd --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_drawText.html @@ -0,0 +1,91 @@ + + + + + + + drawText - 文字描画 + + + + + + + + + +

Layer.drawText

+
+
機能/意味
+
+文字描画
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+drawText(x, y, text, color, opa=255, aa=true, shadowlevel=0, shadowcolor=0x000000, shadowwidth=0, shadowofsx=0, shadowofsy=0)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + +
x  文字描画を開始する原点の ( 画像位置における ) x 座標をピクセル単位で指定します。
+
y  文字描画を開始する原点の ( 画像位置における ) y 座標をピクセル単位で指定します。
+
text  描画する文字を指定します。
+
color  描画する文字の色を 0xRRGGBB 形式で指定します。
+
opa  描画する文字の不透明度 ( -255 〜 0 〜 255 ) を指定します。
+  負の数の指定は Layer.face が dfAlpha の場合のみに有効で、 + この場合は文字の形に不透明度が取り除かれる事になります ( 値が小さいほど + 効果が大きくなります )。
+
aa  アンチエイリアスを行うかどうかを指定します。
+  真を指定するとアンチエイリアスが行われます。偽を指定すると行われません。
+
shadowlevel  影の不透明度を指定します。shadowwidth 引数の値によって適切な値は変動します。
+ 0 を指定すると影は描画されません。
+
shadowcolor  影の色を 0xRRGGBB 形式で指定します。
+
shadowwidth  影の幅 ( ぼけ ) を指定します。 0 がもっともシャープ ( ぼけない ) で、値を大きく + すると影をぼかすことができます。
+
shadowofsx  影の位置の x 座標の値をピクセル単位で指定します。 0 を指定すると影は真下に描画されます。
+
shadowofsy  影の位置の y 座標の値をピクセル単位で指定します。 0 を指定すると影は真下に描画されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤに文字を描画します。Layer.face が dfAlpha (または dfBoth) か dfAddAlpha か dfOpaque (または dfMain) + の場合のみ描画することができます。
+  dfOpaque (またはdfMain) を指定した場合、描画先のマスクが破壊されるか保護されるかは Layer.holdAlpha プロパティによります。
+  フォントは Layer.font で指定したものが用いられます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_enabled.html b/docs/kr2doc/contents/f_Layer_enabled.html new file mode 100644 index 0000000..1053950 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_enabled.html @@ -0,0 +1,38 @@ + + + + + + + enabled - 操作可能かどうか + + + + + + + + + +

Layer.enabled

+
+
機能/意味
+
+操作可能かどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤが操作可能かどうかを表します。値を設定することもできます。
+  真の場合は操作可能で、フォーカスなどを受け取ることができます。
+  偽の場合は操作不能で、フォーカスなどを受け取ることはできません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_face.html b/docs/kr2doc/contents/f_Layer_face.html new file mode 100644 index 0000000..c2bd1ce --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_face.html @@ -0,0 +1,42 @@ + + + + + + + face - 描画方式 + + + + + + + + + +

Layer.face

+
+
機能/意味
+
+描画方式
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤへの描画方式を表します。値を設定することもできます。
+  吉里吉里 2.23 beta 1 以前では「描画面」と呼ばれていました。
+
  • dfAlpha または dfBoth を指定すると、画像はアルファチャンネルつき画像と見なされ、描画されます。dfBoth でも dfAlpha でも同じになります。この描画方法に対応するレイヤタイプは ltTransparent または ltAlpha です。
  • dfAddAlpha を指定すると、画像は加算アルファチャンネルつき画像として見なされ、描画されます。この描画方法に対応するレイヤタイプは ltAddAlpha です。
  • dfOpaque または dfMain を指定すると、レイヤの画像はすべて完全不透明であると見なされ、描画されます。この描画方法に対応するレイヤタイプは ltOpaque または ltCoverRect、または ltAdditive のような算術/論理演算を行うレイヤタイプです。
  • dfMask を指定すると、マスク画像(アルファチャンネル)を描画の対象にします。
  • dfProvince を指定すると、領域画像を描画の対象にします。
  • dfAuto を指定すると、現在の Layer.type プロパティに従って描画方式が自動的に決定されます。作成された直後のレイヤの描画方式は dfAuto です。
 このプロパティの値によっては操作できないメソッドがあります。
+
+
参照
+
+Layer.type
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_fillRect.html b/docs/kr2doc/contents/f_Layer_fillRect.html new file mode 100644 index 0000000..67c7074 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_fillRect.html @@ -0,0 +1,70 @@ + + + + + + + fillRect - 矩形塗りつぶし + + + + + + + + + +

Layer.fillRect

+
+
機能/意味
+
+矩形塗りつぶし
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+fillRect(left, top, width, height, value)
+
+
引数
+
+ + + + + + + + + + + +
left  塗りつぶす矩形の左端位置を ( 画像位置における ) ピクセル単位で指定します。
+
top  塗りつぶす矩形の上端位置を ( 画像位置における ) ピクセル単位で指定します。
+
width  塗りつぶす矩形の横幅を ( 画像位置における ) ピクセル単位で指定します。
+
height  塗りつぶす矩形の縦幅を ( 画像位置における ) ピクセル単位で指定します。
+
value  塗りつぶす色や値を指定します。
+  この値は、Layer.face プロパティの値によって意味が変わります。
+ dfAlpha (またはdfBoth) : 0xAARRGGBB 形式で不透明度と色を指定してください。メインとマスクの両方が塗りつぶされます。
+ dfAddAlpha : 0xAARRGGBB 形式で不透明度と色を指定してください。メインとマスクの両方が塗りつぶされます。
+ dfOpaque (またはdfMain) : 0xRRGGBB 形式で色を指定してください。Layer.holdAlpha プロパティが真の時は、メインのみが塗りつぶされ、マスクはそのままになります。偽の時は dfAlpha や dfAddAlpha の時と同じく、0xAARRGGBB 形式での不透明度と色の指定を受け付け、メインとマスクの両方が塗りつぶされます。
+ dfMask : マスク(不透明度)の値 ( 0 〜 255 ) を指定してください。マスクのみが塗りつぶされ、メインはそのままになります。
+ dfProvince : 領域の値 ( 0 〜 255 ) を指定してください。領域のみが塗りつぶされます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたレイヤ画像の矩形を指定された方法で塗りつぶします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_flipLR.html b/docs/kr2doc/contents/f_Layer_flipLR.html new file mode 100644 index 0000000..74ac910 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_flipLR.html @@ -0,0 +1,50 @@ + + + + + + + flipLR - 左右反転 + + + + + + + + + +

Layer.flipLR

+
+
機能/意味
+
+左右反転
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+flipLR()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  画像の左右反転を行います。
+  このメソッドは、Layer.setClip メソッドなどによる描画クリップ矩形の影響を受けません ( 常にレイヤ画像全体が反転します )。
+  また、Layer.face プロパティやLayer.holdAlpha プロパティの影響も受けません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_flipUD.html b/docs/kr2doc/contents/f_Layer_flipUD.html new file mode 100644 index 0000000..b574f78 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_flipUD.html @@ -0,0 +1,50 @@ + + + + + + + flipUD - 上下反転 + + + + + + + + + +

Layer.flipUD

+
+
機能/意味
+
+上下反転
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+flipUD()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  画像の上下反転を行います。
+  このメソッドは、Layer.setClip メソッドなどによる描画クリップ矩形の影響を受けません ( 常にレイヤ画像全体が反転します )。
+  また、Layer.face プロパティやLayer.holdAlpha プロパティの影響も受けません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_focus.html b/docs/kr2doc/contents/f_Layer_focus.html new file mode 100644 index 0000000..bcb8294 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_focus.html @@ -0,0 +1,54 @@ + + + + + + + focus - フォーカスの設定 + + + + + + + + + +

Layer.focus

+
+
機能/意味
+
+フォーカスの設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+focus(direction=true)
+
+
引数
+
+ + + +
direction  Layer.onBeforeFocusLayer.onFocus イベントの + direction 引数に渡される値です。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤにフォーカスを指定します。レイヤがフォーカスを受け取ると + キーボード入力が可能になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_focusNext.html b/docs/kr2doc/contents/f_Layer_focusNext.html new file mode 100644 index 0000000..8df1ed8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_focusNext.html @@ -0,0 +1,47 @@ + + + + + + + focusNext - 後方のレイヤにフォーカスを設定 + + + + + + + + + +

Layer.focusNext

+
+
機能/意味
+
+後方のレイヤにフォーカスを設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+focusNext()
+
+
引数
+
+なし
+
+
戻り値
+
+新たにフォーカスを得たレイヤオブジェクト
+
説明
+
+  フォーカス可能なレイヤを後方検索し、レイヤが見つかればそのレイヤにフォーカスを設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_focusPrev.html b/docs/kr2doc/contents/f_Layer_focusPrev.html new file mode 100644 index 0000000..2ae35c9 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_focusPrev.html @@ -0,0 +1,47 @@ + + + + + + + focusPrev - 前方のレイヤにフォーカスを設定 + + + + + + + + + +

Layer.focusPrev

+
+
機能/意味
+
+前方のレイヤにフォーカスを設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+focusPrev()
+
+
引数
+
+なし
+
+
戻り値
+
+新たにフォーカスを得たレイヤオブジェクト
+
説明
+
+  フォーカス可能なレイヤを前方検索し、レイヤが見つかればそのレイヤにフォーカスを設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_focusable.html b/docs/kr2doc/contents/f_Layer_focusable.html new file mode 100644 index 0000000..bb9a854 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_focusable.html @@ -0,0 +1,38 @@ + + + + + + + focusable - フォーカスを受け取れるかどうか + + + + + + + + + +

Layer.focusable

+
+
機能/意味
+
+フォーカスを受け取れるかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォーカスを受け取れるかどうかを表します。値を設定することもできます。
+  真の場合はレイヤはフォーカスを受け取れます。
+  偽の場合はレイヤはフォーカスを受け取れません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_focused.html b/docs/kr2doc/contents/f_Layer_focused.html new file mode 100644 index 0000000..5626835 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_focused.html @@ -0,0 +1,37 @@ + + + + + + + focused - フォーカスされているかどうか + + + + + + + + + +

Layer.focused

+
+
機能/意味
+
+フォーカスされているかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  フォーカスされているかどうかを表します。
+  真の場合はフォーカスされています。偽の場合はされていません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_font.html b/docs/kr2doc/contents/f_Layer_font.html new file mode 100644 index 0000000..2466dcf --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_font.html @@ -0,0 +1,37 @@ + + + + + + + font - フォント + + + + + + + + + +

Layer.font

+
+
機能/意味
+
+フォント
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  Layer.drawText メソッドで描画に使用するフォントを表す Font クラスの + オブジェクトです。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_getLayerAt.html b/docs/kr2doc/contents/f_Layer_getLayerAt.html new file mode 100644 index 0000000..20a1693 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_getLayerAt.html @@ -0,0 +1,78 @@ + + + + + + + getLayerAt - 指定位置のレイヤを取得 + + + + + + + + + +

Layer.getLayerAt

+
+
機能/意味
+
+指定位置のレイヤを取得
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+getLayerAt(x, y, exclude_self=false, get_disabled=false)
+
+
引数
+
+ + + + + + + + + +
x  取得したいレイヤの位置の x 座標を表示座標上でピクセル単位で指定します。
+  このメソッドを実行するレイヤの表示座標が用いられます ( プライマリレイヤ上の + 表示座標ではありません )
+
y  取得したいレイヤの位置の y 座標を表示座標上でピクセル単位で指定します。
+  このメソッドを実行するレイヤの表示座標が用いられます ( プライマリレイヤ上の + 表示座標ではありません )
+
exclude_self  レイヤの検索から自分自身を除外するかどうかを指定します。
+  偽を指定すると、自分自身のレイヤも検索に含まれます。
+  真を指定すると、自分自身のレイヤは検索から除外され、あたかも存在しないかのように扱われます。
+  この引数を省略すると偽が指定されたと見なされます。
+
get_disabled  無効になっているレイヤのオブジェクトを得るかどうかを指定します。
+  偽を指定すると、無効 (Layer.enabled プロパティが偽など) になっているレイヤが指定位置にあった場合、null が返ります。
+  真を指定すると、無効になっているレイヤが指定位置にあった場合は、そのレイヤオブジェクトを返します。
+  この引数を省略すると偽が指定されたと見なされます。
+
+
+
戻り値
+
+指定位置にあったレイヤオブジェクト。指定位置にレイヤが無かった場合などは null が戻ります。
+
説明
+
+  x,y で示された位置にあるレイヤオブジェクトを返します。
+  当たり判定は通常のマウスイベントの当たり判定と同じ機構が用いられます。つまり、指定位置を、レイヤの重ね順において一番手前から見ていき、最初に当たり判定に該当したレイヤが返されます。
+  exclude_self 引数で真を指定すると、このメソッドを実行するレイヤを検索の対象から除外することができます。
+
+
参照
+
+Layer.hitType
+Layer.hitThreshold
+Layer.onHitTest
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_getMainPixel.html b/docs/kr2doc/contents/f_Layer_getMainPixel.html new file mode 100644 index 0000000..4928e64 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_getMainPixel.html @@ -0,0 +1,55 @@ + + + + + + + getMainPixel - メイン画像の色の取得 + + + + + + + + + +

Layer.getMainPixel

+
+
機能/意味
+
+メイン画像の色の取得
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+getMainPixel(x, y)
+
+
引数
+
+ + + + + +
x  色を取得する ( レイヤの画像座標での ) x 座標を指定します。
+
y  色を取得する ( レイヤの画像座標での ) y 座標を指定します。
+
+
+
戻り値
+
+0xRRGGBB 形式の色番号
+
説明
+
+  レイヤメイン画像 ( 色を保持している画像 ) の任意の位置の色を取得します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_getMaskPixel.html b/docs/kr2doc/contents/f_Layer_getMaskPixel.html new file mode 100644 index 0000000..505c3de --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_getMaskPixel.html @@ -0,0 +1,55 @@ + + + + + + + getMaskPixel - マスク画像の値の取得 + + + + + + + + + +

Layer.getMaskPixel

+
+
機能/意味
+
+マスク画像の値の取得
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+getMaskPixel(x, y)
+
+
引数
+
+ + + + + +
x  値を取得する ( レイヤの画像座標での ) x 座標を指定します。
+
y  値を取得する ( レイヤの画像座標での ) y 座標を指定します。
+
+
+
戻り値
+
+マスク画像の値 ( 0 〜 255 )
+
説明
+
+  レイヤマスク画像 ( 不透明度を保持している画像 ) の任意の位置の値 ( 0 〜 255 ) を取得します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_getProvincePixel.html b/docs/kr2doc/contents/f_Layer_getProvincePixel.html new file mode 100644 index 0000000..719b6e8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_getProvincePixel.html @@ -0,0 +1,55 @@ + + + + + + + getProvincePixel - 領域画像の値の取得 + + + + + + + + + +

Layer.getProvincePixel

+
+
機能/意味
+
+領域画像の値の取得
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+getProvincePixel(x, y)
+
+
引数
+
+ + + + + +
x  値を取得する ( レイヤの画像座標での ) x 座標を指定します。
+
y  値を取得する ( レイヤの画像座標での ) y 座標を指定します。
+
+
+
戻り値
+
+領域画像の値 ( 0 〜 255 )
+
説明
+
+  レイヤ領域画像の任意の位置の値 ( 0 〜 255 ) を取得します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_hasImage.html b/docs/kr2doc/contents/f_Layer_hasImage.html new file mode 100644 index 0000000..b2d8264 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_hasImage.html @@ -0,0 +1,44 @@ + + + + + + + hasImage - レイヤが画像を持っているかどうか + + + + + + + + + +

Layer.hasImage

+
+
機能/意味
+
+レイヤが画像を持っているかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤが画像を持っているかどうかを表します。値を設定することもできます。
+  真を指定するとレイヤは画像を持ちます。これがデフォルトです。
+  偽を指定するとレイヤの画像は開放され、レイヤは画像を持たなくなります。
+  Layer.typeプロパティを設定するとhasImageは真にリセットされます。
+  レイヤが画像を持たない場合、Layer.typeltOpaqueならばレイヤは全面 + Layer.neutralColorで塗りつぶされているとして表示されます。
+  それ以外のタイプの場合は完全に透明として扱われます。
+  このプロパティが偽のレイヤはLayer.hitTypeがhtMaskの場合は全面が不透明度0 (完全に透明)であると見なされます。また、描画やフォントを操作することはできません。
+  このプロパティが偽のレイヤは、通常、複数の子レイヤをまとめ、自分自身は透明なだけのレイヤとして使います。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_height.html b/docs/kr2doc/contents/f_Layer_height.html new file mode 100644 index 0000000..a2e3c68 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_height.html @@ -0,0 +1,41 @@ + + + + + + + height - 縦幅 + + + + + + + + + +

Layer.height

+
+
機能/意味
+
+縦幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示縦幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_hint.html b/docs/kr2doc/contents/f_Layer_hint.html new file mode 100644 index 0000000..b41b1b1 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_hint.html @@ -0,0 +1,43 @@ + + + + + + + hint - ヒント + + + + + + + + + +

Layer.hint

+
+
機能/意味
+
+ヒント
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤのヒント文字列を表します。値を設定することもできます。
+  ヒント文字列はレイヤ上にマウスカーソルを少し静止させたときに、マウスカーソルの近くに + 表示される文字列です。
+  ヒントを表示させたくない場合は空文字列を指定します。
+
+
参照
+
+Layer.showParentHint
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_hitThreshold.html b/docs/kr2doc/contents/f_Layer_hitThreshold.html new file mode 100644 index 0000000..9d9b992 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_hitThreshold.html @@ -0,0 +1,41 @@ + + + + + + + hitThreshold - 当たり判定の敷居値 + + + + + + + + + +

Layer.hitThreshold

+
+
機能/意味
+
+当たり判定の敷居値
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  マウスイベントの当たり判定の式位置を表します。値を設定することもできます。
+  このプロパティは Layer.hitType プロパティが htMask の時のみ有効で、 + マスク(不透明度)画像の値がこのプロパティで指定した値以上の場合にマウスメッセージが受け取られます。
+ 0 を指定するとすべてのマウスメッセージが受け取られます。256 を指定するとすべてのマウスメッセージは + 受け取られません。
+  初期状態では 16 となっています。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_hitType.html b/docs/kr2doc/contents/f_Layer_hitType.html new file mode 100644 index 0000000..b53a26b --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_hitType.html @@ -0,0 +1,42 @@ + + + + + + + hitType - 当たり判定のタイプ + + + + + + + + + +

Layer.hitType

+
+
機能/意味
+
+当たり判定のタイプ
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  マウスイベントの当たり判定のタイプを表します。値を設定することもできます。
+  htProvince を指定すると、領域画像において 0 以外の領域のみマウスイベントを受け取る + ようになります。
+  htMask を指定すると、マスク(不透明度)画像の値が、Layer.hitThreshold プロパティで指 + 定した値以上の場合のみマウスイベントを受け取るようになります。
+  受け取られなかったマウスイベントは、より奥のレイヤで処理されます。
+  初期状態では htMask となっています。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_holdAlpha.html b/docs/kr2doc/contents/f_Layer_holdAlpha.html new file mode 100644 index 0000000..c32fc44 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_holdAlpha.html @@ -0,0 +1,69 @@ + + + + + + + holdAlpha - アルファチャンネルを保護するか + + + + + + + + + +

Layer.holdAlpha

+
+
機能/意味
+
+アルファチャンネルを保護するか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画においてアルファチャンネルを保護するかどうかを指定します。値を設定することもできます。
+  デフォルトでは偽です。
+  吉里吉里 2.23 beta 1 以前では、各描画メソッドに hda というパラメータがあり、それがこのプロパティと同じ動作をしていましたが、2.23 beta 2 よりプロパティとして分離されました。
+  いくつかの描画演算では、Layer.face プロパティが dfOpaque のとき、画像のアルファチャンネル(マスク画像)を保持するかどうかをこのプロパティで指定できます。多くのメソッドでは、このプロパティを偽にした方が高速な描画が可能です。Layer.typeltAlpha でも ltAddAlpha でも無い場合は、画像のアルファチャンネルは使用されないので、このプロパティを偽に設定しても問題有りません。ただし、このプロパティが偽だとアルファチャンネルは破壊されます。
+
+  以下のメソッドはこのプロパティの影響を受けません。
+ Layer.loadImages
+ Layer.loadProvinceImage
+ Layer.setMainPixel
+ Layer.setMaskPixel
+ Layer.setProvincePixel
+ Layer.piledCopy
+ Layer.adjustGamma(常にアルファチャンネルは保護されます)
+ Layer.doGrayScale(常にアルファチャンネルは保護されます)
+ Layer.flipLR
+ Layer.flipUD
+ Layer.assignImages
+
+  以下のメソッドはこのプロパティの影響を受けます。
+ Layer.copyRect
+ Layer.stretchCopy
+ Layer.affineCopy
+ Layer.fillRect
+ Layer.colorRect
+ Layer.drawText
+ Layer.pileRect
+ Layer.blendRect
+ Layer.operateRect
+ Layer.stretchPile
+ Layer.stretchBlend
+ Layer.operateStretch
+ Layer.affinePile
+ Layer.affineBlend
+ Layer.operateAffine
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imageHeight.html b/docs/kr2doc/contents/f_Layer_imageHeight.html new file mode 100644 index 0000000..6a89cb7 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imageHeight.html @@ -0,0 +1,41 @@ + + + + + + + imageHeight - 画像縦幅 + + + + + + + + + +

Layer.imageHeight

+
+
機能/意味
+
+画像縦幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの画像の縦幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imageLeft.html b/docs/kr2doc/contents/f_Layer_imageLeft.html new file mode 100644 index 0000000..1d41969 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imageLeft.html @@ -0,0 +1,41 @@ + + + + + + + imageLeft - レイヤ画像左端オフセット + + + + + + + + + +

Layer.imageLeft

+
+
機能/意味
+
+レイヤ画像左端オフセット
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示オフセットの左端をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setImagePos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imageModified.html b/docs/kr2doc/contents/f_Layer_imageModified.html new file mode 100644 index 0000000..c7e7dd7 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imageModified.html @@ -0,0 +1,40 @@ + + + + + + + imageModified - 画像が変更されたか + + + + + + + + + +

Layer.imageModified

+
+
機能/意味
+
+画像が変更されたか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの画像が変更されたかどうかを表します。値を設定することもできます。
+  レイヤの画像に描画を行ったり、レイヤの画像のサイズを変更したりすると自動的に真に設定されます。
+  このプロパティを偽に設定しておけば、レイヤの画像が変更されると真になるので、 + レイヤの画像が変更されたかどうかを知ることができます。
+  このプロパティ自体は、レイヤの動作に影響を与えません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imageTop.html b/docs/kr2doc/contents/f_Layer_imageTop.html new file mode 100644 index 0000000..36dcbf2 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imageTop.html @@ -0,0 +1,41 @@ + + + + + + + imageTop - レイヤ画像上端オフセット + + + + + + + + + +

Layer.imageTop

+
+
機能/意味
+
+レイヤ画像上端オフセット
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示オフセットの上端をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setImagePos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imageWidth.html b/docs/kr2doc/contents/f_Layer_imageWidth.html new file mode 100644 index 0000000..65d1e99 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imageWidth.html @@ -0,0 +1,41 @@ + + + + + + + imageWidth - 画像横幅 + + + + + + + + + +

Layer.imageWidth

+
+
機能/意味
+
+画像横幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの画像の横幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setImageSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_imeMode.html b/docs/kr2doc/contents/f_Layer_imeMode.html new file mode 100644 index 0000000..3d90d54 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_imeMode.html @@ -0,0 +1,55 @@ + + + + + + + imeMode - IMEモード + + + + + + + + + +

Layer.imeMode

+
+
機能/意味
+
+IMEモード
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  IMEのモードを表します。値を設定することもできます。
+  レイヤにフォーカスが設定されると、IMEはここで指定したモードに切り替わります。
+  設定可能な値は以下の通りです。
+
  • imDisable を指定すると、IMEは無効になります。IMEを使用した入力はできませんし、ユーザの操作でもIMEを有効にすることはできません。
    +
  • imClose を指定すると、IMEは無効になります。imDisableと異なり、ユーザの操作でIMEを有効にすることができます。
    +
  • imOpen を指定すると、IMEは有効になります。
    +
  • imDontCare を指定すると、IMEの有効/無効の状態は、前の状態を引き継ぎます。ユーザの操作によってIMEを有効にしたり無効にしたりすることができます。日本語入力においては、半角/全角文字をユーザに自由に入力させる場合の一般的なモードです。
    +
  • imSAlpha を指定すると、IMEは有効になり、半角アルファベット入力モードになります。
    +
  • imAlpha を指定すると、IMEは有効になり、全角アルファベット入力モードになります。
    +
  • imHira を指定すると、IMEは有効になり、ひらがな入力モードになります。
    +
  • imSKata を指定すると、IMEは有効になり、半角カタカナ入力モードになります。
    +
  • imKata を指定すると、IMEは有効になり、全角カタカナ入力モードになります。
    +
  • imChinese を指定すると、IMEは有効になり、2バイト中国語入力を受け付けるモードになります。日本語環境では使用できません。
    +
  • imSHanguel を指定すると、IMEは有効になり、1バイト韓国語入力を受け付けるモードになります。日本語環境では使用できません。
    +
  • imHanguel を指定すると、IMEは有効になり、2バイト韓国語入力を受け付けるモードになります。日本語環境では使用できません。
    +
未指定時は imDisable になります。
+
+
参照
+
+Window.imeMode
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_independMainImage.html b/docs/kr2doc/contents/f_Layer_independMainImage.html new file mode 100644 index 0000000..940a3cd --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_independMainImage.html @@ -0,0 +1,64 @@ + + + + + + + independMainImage - メイン画像の共有の解除 + + + + + + + + + +

Layer.independMainImage

+
+
機能/意味
+
+メイン画像の共有の解除
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+independMainImage(copy=true)
+
+
引数
+
+ + + +
copy  共有状態を解除する際、元の画像をコピーするかどうかを指定します。
+  真を指定すると元の画像をコピーします。偽を指定すると元の画像はコピーされず、画像の + 内容は不定となります。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤ画像の共有状態を強制的に解除します。
+  吉里吉里は、assignImages などで画像をまるごと他のレイヤにコピーした場合、実際には + 画像バッファのコピーを行わず、同一の画像を共有するようになります。
+  通常、画像に変更を加えようとする直前でこの共有状態は自動的に解除されますが、 + このメソッドで強制的に解除することができます。
+  copy 引数に false を指定した場合は、画像の共有は解除されますが、元の画像を + 引き継ぐことは保証されません ( 画像の内容は不定になります ) が、共有の解除を + より高速に行うことができます。レイヤの画像全部を書き換える場合は元の画像を + 引き継ぐ必要はありませんので、描画を行う前にあらかじめこのメソッドに false を + 指定して呼び出すと効率が良くなる場合があります。
+  このメソッドは、画像が共有されていない場合は何もしません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_independProvinceImage.html b/docs/kr2doc/contents/f_Layer_independProvinceImage.html new file mode 100644 index 0000000..46400b5 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_independProvinceImage.html @@ -0,0 +1,64 @@ + + + + + + + independProvinceImage - 領域画像の共有の解除 + + + + + + + + + +

Layer.independProvinceImage

+
+
機能/意味
+
+領域画像の共有の解除
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+independProvinceImage(copy=true)
+
+
引数
+
+ + + +
copy  共有状態を解除する際、元の画像をコピーするかどうかを指定します。
+  真を指定すると元の画像をコピーします。偽を指定すると元の画像はコピーされず、画像の + 内容は不定となります。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  領域画像の共有状態を強制的に解除します。
+  吉里吉里は、assignImages などで画像をまるごと他のレイヤにコピーした場合、実際には + 画像バッファのコピーを行わず、同一の画像を共有するようになります。
+  通常、画像に変更を加えようとする直前でこの共有状態は自動的に解除されますが、 + このメソッドで強制的に解除することができます。
+  copy 引数に false を指定した場合は、画像の共有は解除されますが、元の画像を + 引き継ぐことは保証されません ( 画像の内容は不定になります ) が、共有の解除を + より高速に行うことができます。レイヤの画像全部を書き換える場合は元の画像を + 引き継ぐ必要はありませんので、描画を行う前にあらかじめこのメソッドに false を + 指定して呼び出すと効率が良くなる場合があります。
+  このメソッドは、画像が共有されていない場合は何もしません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_isPrimary.html b/docs/kr2doc/contents/f_Layer_isPrimary.html new file mode 100644 index 0000000..66eee15 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_isPrimary.html @@ -0,0 +1,37 @@ + + + + + + + isPrimary - プライマリレイヤかどうか + + + + + + + + + +

Layer.isPrimary

+
+
機能/意味
+
+プライマリレイヤかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  プライマリレイヤかどうかを表します。
+  プライマリレイヤは親を持たないレイヤで、一番奥に表示されるレイヤです。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_joinFocusChain.html b/docs/kr2doc/contents/f_Layer_joinFocusChain.html new file mode 100644 index 0000000..0920d5a --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_joinFocusChain.html @@ -0,0 +1,40 @@ + + + + + + + joinFocusChain - フォーカスチェーンに参加するか + + + + + + + + + +

Layer.joinFocusChain

+
+
機能/意味
+
+フォーカスチェーンに参加するか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォーカスチェーンに参加するかどうかを表します。
+  真を指定するとフォーカスチェーンに参加し、Layer.prevFocusable などに + 現れるようになったり、TAB キーなどでそのレイヤにフォーカスを移動したりできるように + なります。
+  偽を指定するとフォーカスチェーンには参加しませんが、フォーカスを Layer.focus メソッドなどで受け取ることはできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_left.html b/docs/kr2doc/contents/f_Layer_left.html new file mode 100644 index 0000000..b607226 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_left.html @@ -0,0 +1,41 @@ + + + + + + + left - 左端位置 + + + + + + + + + +

Layer.left

+
+
機能/意味
+
+左端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤ左端位置を、親レイヤの表示座標におけるピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_loadImages.html b/docs/kr2doc/contents/f_Layer_loadImages.html new file mode 100644 index 0000000..b7f9c84 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_loadImages.html @@ -0,0 +1,77 @@ + + + + + + + loadImages - 画像の読み込み + + + + + + + + + +

Layer.loadImages

+
+
機能/意味
+
+画像の読み込み
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+loadImages(image, colorkey=clNone)
+
+
引数
+
+ + + + + +
image  読み込む画像ストレージを指定します。
+  ここで指定したストレージ名(拡張子を除く) に _m を付加した画像ストレージが + 存在すれば、マスク(不透明度)画像として読み込まれます。
+  ここで指定したストレージ名(拡張子を除く) に _p を付加した画像ストレージが + 存在すれば、領域画像として読み込まれます。
+
colorkey  読み込む画像のカラーキー ( 透明色 ) を指定します。
+  0xRRGGBB 形式で色を指定すると、その色をカラーキーとします。
+  clPalIdx に 任意のパレットインデックスを加算した数値を指定すると、 + そのパレットインデックスが透明色になります ( 256 色以下の画像の場合 )。
+  clAdapt を指定すると、画像の一番上のラインにおいて + もっとも多く使われている色が自動的に透明色になります。
+  clAlphaMat に 0xRRGGBB + 形式の色を表す数値を加算したものを指定すると、画像がその色の上に + αブレンド(ltAlphaの方式)を用いて重ね合わせられます。 + たとえば、(clAlphaMat + 0xffffff) を指定すると、 + 読み込まれた画像が白い色の上に重ね合わせられます。 + 画像は全て不透明な画像となります + ( 画像は全て不透明となりますが、 + このモードではタグ情報はいっさい変更されないので + 注意してください )。
+
+
+
戻り値
+
+タグ情報の辞書配列
+
説明
+
+  レイヤに画像を読み込みます。
+  このメソッドはレイヤの画像サイズは変更しますが、画像サイズがレイヤの表示サイズより小さかった場合を + 除いて、レイヤの表示サイズは変更しません。
+  戻り値としてタグ情報(その画像のレイヤタイプや表示位置など、画像そのものに対する情報)の辞書配列が返ります。KAG の「タグ」の意味と混同しないように注意してください。
+  画像がタグ情報を持たない場合は null が返ります。
+  現バージョンでは、タグ情報は PNG, TLG5/6 形式のみが持つことができます。取得可能な情報については、画像フォーマットコンバータ を参照してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_loadProvinceImage.html b/docs/kr2doc/contents/f_Layer_loadProvinceImage.html new file mode 100644 index 0000000..363a153 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_loadProvinceImage.html @@ -0,0 +1,53 @@ + + + + + + + loadProvinceImage - 領域画像の読み込み + + + + + + + + + +

Layer.loadProvinceImage

+
+
機能/意味
+
+領域画像の読み込み
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+loadProvinceImage(image)
+
+
引数
+
+ + + +
image  領域画像として読み込む画像ストレージを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの領域画像を読み込みます。それ以外の画像はそのままとなります。
+  読み込もうとした画像がレイヤの画像サイズと異なる場合は例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_mainImageBuffer.html b/docs/kr2doc/contents/f_Layer_mainImageBuffer.html new file mode 100644 index 0000000..db9a4be --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_mainImageBuffer.html @@ -0,0 +1,52 @@ + + + + + + + mainImageBuffer - メイン画像バッファポインタ + + + + + + + + + +

Layer.mainImageBuffer

+
+
機能/意味
+
+メイン画像バッファポインタ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メイン画像 ( 色とマスク(不透明度)の情報を含む 32bpp のビットマップ ) の画像バッファ左上隅へのポインタ + を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  整数型で返されますが、プラグインなどでは適切な型 ( const unsigned long * 等 ) にキャストして使って + ください。
+  このプロパティで得られたポインタには値を書き込まないでください。 + Layer.mainImageBufferForWrite で得られたポインタならば書き込むことができます。
+  レイヤに画像が割り当てられていない場合は NULL (0) が返ります。
+  画像のサイズは Layer.imageWidthLayer.imageHeight プロパティが + 表しています。
+  ポインタの計算方法は Layer.mainImageBufferPitch を参照してください。
+
+
参照
+
+Layer.mainImageBufferForWrite
+Layer.mainImageBufferPitch
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_mainImageBufferForWrite.html b/docs/kr2doc/contents/f_Layer_mainImageBufferForWrite.html new file mode 100644 index 0000000..8162c95 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_mainImageBufferForWrite.html @@ -0,0 +1,53 @@ + + + + + + + mainImageBufferForWrite - メイン画像バッファポインタ(書き込み用) + + + + + + + + + +

Layer.mainImageBufferForWrite

+
+
機能/意味
+
+メイン画像バッファポインタ(書き込み用)
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メイン画像 ( 色とマスク(不透明度)の情報を含む 32bpp のビットマップ ) の画像バッファ左上隅へのポインタ + を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  整数型で返されますが、プラグインなどでは適切な型 ( unsigned long * 等 ) にキャストして使って + ください。
+  このプロパティで得られたポインタには Layer.mainImageBuffer と異なり、 + 値を書き込むことができます。吉里吉里内部では全く同じ画像は複数のレイヤ間等で共有しますが、 + このプロパティを参照するとその共有状態を解除します。
+  レイヤに画像が割り当てられていない場合は NULL (0) が返ります。
+  画像のサイズは Layer.imageWidthLayer.imageHeight プロパティが + 表しています。
+  ポインタの計算方法は Layer.mainImageBufferPitch を参照してください。
+
+
参照
+
+Layer.mainImageBuffer
+Layer.mainImageBufferPitch
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_mainImageBufferPitch.html b/docs/kr2doc/contents/f_Layer_mainImageBufferPitch.html new file mode 100644 index 0000000..c66df9c --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_mainImageBufferPitch.html @@ -0,0 +1,50 @@ + + + + + + + mainImageBufferPitch - メイン画像バッファピッチ + + + + + + + + + +

Layer.mainImageBufferPitch

+
+
機能/意味
+
+メイン画像バッファピッチ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メイン画像 ( 色とマスク(不透明度)の情報を含む 32bpp のビットマップ ) の画像バッファのピッチ + ( 一つ下のスキャンラインまでのバイト数 ) を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  tjs_uint32 が 32bit の整数型、tjs_uint8 が 8bit (1byte) の整数型として、画像位置 (x, y) への + ポインタは C 言語で書くと以下のように計算することができます。
+ ( (tjs_uint32*)( (tjs_uint8*)mainImageBuffer + y*mainImageBufferPitch )) + x
+  このプロパティは、次のスキャンラインまでのピクセル数ではなく、バイト数を返すことに + 注意してください。この数値は画像横幅ぴったりに必要なバイト数よりも若干大きい場合があります。
+  このプロパティは値が負になり得ますので注意してください。
+
+
参照
+
+Layer.mainImageBuffer
+Layer.mainImageBufferForWrite
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_moveBefore.html b/docs/kr2doc/contents/f_Layer_moveBefore.html new file mode 100644 index 0000000..0501dbb --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_moveBefore.html @@ -0,0 +1,54 @@ + + + + + + + moveBefore - 指定レイヤの手前に移動 + + + + + + + + + +

Layer.moveBefore

+
+
機能/意味
+
+指定レイヤの手前に移動
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+moveBefore(layer)
+
+
引数
+
+ + + +
layer  ここで指定したレイヤの手前に移動します。
+  兄弟レイヤ ( 同じ親を持つレイヤ ) のみを指定できます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  重ね合わせ順において、指定されたレイヤの手前に移動します。
+  このメソッドは Layer.absoluteOrderMode プロパティを false に設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_moveBehind.html b/docs/kr2doc/contents/f_Layer_moveBehind.html new file mode 100644 index 0000000..1d815bd --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_moveBehind.html @@ -0,0 +1,54 @@ + + + + + + + moveBehind - 指定レイヤの奥に移動 + + + + + + + + + +

Layer.moveBehind

+
+
機能/意味
+
+指定レイヤの奥に移動
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+moveBehind(layer)
+
+
引数
+
+ + + +
layer  ここで指定したレイヤの奥に移動します。
+  兄弟レイヤ ( 同じ親を持つレイヤ ) のみを指定できます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  重ね合わせ順において、指定されたレイヤの奥に移動します。
+  このメソッドは Layer.absoluteOrderMode プロパティを false に設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_name.html b/docs/kr2doc/contents/f_Layer_name.html new file mode 100644 index 0000000..b2a1d01 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_name.html @@ -0,0 +1,37 @@ + + + + + + + name - レイヤ名 + + + + + + + + + +

Layer.name

+
+
機能/意味
+
+レイヤ名
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤ名を表します。値を設定することもできます。
+  このプロパティで設定した内容は、Layerクラスの動作には影響しません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_neutralColor.html b/docs/kr2doc/contents/f_Layer_neutralColor.html new file mode 100644 index 0000000..25ad393 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_neutralColor.html @@ -0,0 +1,39 @@ + + + + + + + neutralColor - 中性色 + + + + + + + + + +

Layer.neutralColor

+
+
機能/意味
+
+中性色
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの中性色を 0xAARRGGBB 形式で表します。値を設定することもできます。
+  レイヤの中性色は、Layer.type プロパティを変更したときに、そのタイプの中性色に設定されます。
+  中性色は、レイヤ画像のサイズが拡張されたときに、拡張された部分を塗りつぶす初期値になります。
+  値を設定することにより、レイヤ画像のサイズ拡張時の初期色を指定することができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_nextFocusable.html b/docs/kr2doc/contents/f_Layer_nextFocusable.html new file mode 100644 index 0000000..f42707f --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_nextFocusable.html @@ -0,0 +1,37 @@ + + + + + + + nextFocusable - 後方のフォーカスを受け取れるレイヤ + + + + + + + + + +

Layer.nextFocusable

+
+
機能/意味
+
+後方のフォーカスを受け取れるレイヤ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  フォーカスを受け取れるレイヤを後方検索します。
+  該当するレイヤがなければ null になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_nodeEnabled.html b/docs/kr2doc/contents/f_Layer_nodeEnabled.html new file mode 100644 index 0000000..08b1e9d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_nodeEnabled.html @@ -0,0 +1,38 @@ + + + + + + + nodeEnabled - レイヤノードが操作可能かどうか + + + + + + + + + +

Layer.nodeEnabled

+
+
機能/意味
+
+レイヤノードが操作可能かどうか
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  レイヤノードが操作可能かどうかを表します。
+  自分自身が操作不能だったり、親のレイヤの中に操作不能なレイヤがある場合は偽になります。
+  それ以外の場合は真になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_nodeVisible.html b/docs/kr2doc/contents/f_Layer_nodeVisible.html new file mode 100644 index 0000000..9cd8b15 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_nodeVisible.html @@ -0,0 +1,38 @@ + + + + + + + nodeVisible - ノードが可視かどうか + + + + + + + + + +

Layer.nodeVisible

+
+
機能/意味
+
+ノードが可視かどうか
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ノードが可視かどうかを表します。
+  親レイヤの中で一つでも不可視のレイヤがあると偽になります。
+  親レイヤがすべて可視ならば真になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onBeforeFocus.html b/docs/kr2doc/contents/f_Layer_onBeforeFocus.html new file mode 100644 index 0000000..7d2ab13 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onBeforeFocus.html @@ -0,0 +1,60 @@ + + + + + + + onBeforeFocus - フォーカスを受け取る直前 + + + + + + + + + +

Layer.onBeforeFocus

+
+
機能/意味
+
+フォーカスを受け取る直前
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onBeforeFocus(layer, blurred, direction)
+
+
引数
+
+ + + + + + + +
layer  フォーカスを受け取るレイヤオブジェクトです。
+  通常は this が渡されますが、スーパークラスの同名のイベントを呼ぶときに + 異なるレイヤオブジェクトを指定すれば、そのレイヤにフォーカスを + 渡すようにすることができます。
+
blurred  フォーカスを失うレイヤオブジェクトです。
+
direction  フォーカスの後方検索によってフォーカスが変更されるときは真、 + フォーカスの前方検索によって行われる場合は偽になります。
+
+
+
説明
+
+  フォーカスを受け取る直前に発生するイベントです。
+  フォーカスを受け取るレイヤを指定するときは、スーパークラスの同名のイベント + の第1引数にそのレイヤを指定する事ができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onBlur.html b/docs/kr2doc/contents/f_Layer_onBlur.html new file mode 100644 index 0000000..4fd4309 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onBlur.html @@ -0,0 +1,48 @@ + + + + + + + onBlur - フォーカスを失った + + + + + + + + + +

Layer.onBlur

+
+
機能/意味
+
+フォーカスを失った
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onBlur(focused)
+
+
引数
+
+ + + +
focused  あらたにフォーカスを得たレイヤオブジェクトです。
+
+
+
説明
+
+  レイヤがフォーカスを失った際に呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onClick.html b/docs/kr2doc/contents/f_Layer_onClick.html new file mode 100644 index 0000000..dc9f755 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onClick.html @@ -0,0 +1,56 @@ + + + + + + + onClick - レイヤがクリックされた + + + + + + + + + +

Layer.onClick

+
+
機能/意味
+
+レイヤがクリックされた
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onClick(x, y)
+
+
引数
+
+ + + + + +
x  レイヤがクリックされた位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  レイヤがクリックされた位置の y 座標 ( レイヤの表示座標での ) の値です。
+
+
+
説明
+
+  レイヤがクリックされた時に発生します。
+
+
参照
+
+Layer.onMouseDown
+Layer.onDoubleClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onDoubleClick.html b/docs/kr2doc/contents/f_Layer_onDoubleClick.html new file mode 100644 index 0000000..835fe01 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onDoubleClick.html @@ -0,0 +1,55 @@ + + + + + + + onDoubleClick - レイヤがダブルクリックされた + + + + + + + + + +

Layer.onDoubleClick

+
+
機能/意味
+
+レイヤがダブルクリックされた
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onDoubleClick(x, y)
+
+
引数
+
+ + + + + +
x  レイヤがダブルクリックされた位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  レイヤがダブルクリックされた位置の y 座標 ( レイヤの表示座標での ) の値です。
+
+
+
説明
+
+  レイヤがダブルクリックされた時に発生します。
+
+
参照
+
+Layer.onClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onFocus.html b/docs/kr2doc/contents/f_Layer_onFocus.html new file mode 100644 index 0000000..62d1285 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onFocus.html @@ -0,0 +1,52 @@ + + + + + + + onFocus - フォーカスを得た + + + + + + + + + +

Layer.onFocus

+
+
機能/意味
+
+フォーカスを得た
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onFocus(focused, direction)
+
+
引数
+
+ + + + + +
focused  フォーカスを失ったレイヤオブジェクトです。
+
direction  フォーカスの後方検索によってフォーカスが変更されるときは真、 + フォーカスの前方検索によって行われる場合は偽になります。
+
+
+
説明
+
+  レイヤがフォーカスを得た際に呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onHitTest.html b/docs/kr2doc/contents/f_Layer_onHitTest.html new file mode 100644 index 0000000..bf1acbf --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onHitTest.html @@ -0,0 +1,64 @@ + + + + + + + onHitTest - 当たり判定 + + + + + + + + + +

Layer.onHitTest

+
+
機能/意味
+
+当たり判定
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onHitTest(x, y, hit)
+
+
引数
+
+ + + + + + + +
x  当たり判定を行う位置の ( レイヤの表示座標内での ) x 座標です。
+
y  当たり判定を行う位置の ( レイヤの表示座標内での ) y 座標です。
+
hit  当たり判定の結果、当たっている場合は真, はずれている場合は偽になります。 + 当たり判定の結果は、同名のスーパークラスのイベントのこの引数に渡してください。
+
+
+
説明
+
+  レイヤ内のある点に対して、当たり判定 ( ヒットテスト ) が行われる場合に呼び出されます。
+  当たり判定の結果は、スーパークラスのこのイベントの第3引数に当たり判定の結果を + 渡してください ( 第1引数と + 第2引数はそのまま渡してください )。
+  当たり判定の結果、当たっていればマウスメッセージは不透過になり、そのレイヤで処理されます。
+  当たっていなければ透過となり、マウスメッセージはより奥にあるレイヤで処理されます。
+  このイベントは、Layer.hitThresholdLayer.hitType で行われる + 当たり判定で「当たっている」という判定がされた後に呼び出されます。したがって + Layer.hitThreshold や Layer.hitType で「当たってない」と判定されている場合は + このイベントは呼び出されません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onKeyDown.html b/docs/kr2doc/contents/f_Layer_onKeyDown.html new file mode 100644 index 0000000..3fab3a3 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onKeyDown.html @@ -0,0 +1,65 @@ + + + + + + + onKeyDown - キーが押された + + + + + + + + + +

Layer.onKeyDown

+
+
機能/意味
+
+キーが押された
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onKeyDown(key, shift, process=true)
+
+
引数
+
+ + + + + + + +
key  押されたキーの仮想キーコードの値です。
+
shift  キーが押された時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+  また、キーボードが長時間押され、キーリピートが発生している場合は + 以下の値も組み合わされます。
+ ssRepeat : キーリピートが発生した
+
process  親クラスのonKeyDownを呼ぶ際、この引数に偽を渡すと、親クラスでは + そのキーに対するデフォルトの処理(フォーカスの移動など)を行わなくなります。
+
+
+
説明
+
+  キーが押された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onKeyPress.html b/docs/kr2doc/contents/f_Layer_onKeyPress.html new file mode 100644 index 0000000..fc1b19d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onKeyPress.html @@ -0,0 +1,54 @@ + + + + + + + onKeyPress - 文字が入力された + + + + + + + + + +

Layer.onKeyPress

+
+
機能/意味
+
+文字が入力された
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onKeyPress(key, process=true)
+
+
引数
+
+ + + + + +
key  入力された文字です。
+
process  親クラスのonKeyPressを呼ぶ際、この引数に偽を渡すと、親クラスでは + そのキーに対するデフォルトの処理(フォーカスの移動など)を行わなくなります。
+
+
+
説明
+
+  文字が入力されたときに発生します。Layer.onKeyDown と異なるのは、onKeyDown が + 仮想キーコードを扱うのに対し、このイベントは文字そのものを扱います。押されたキーが + 文字とは関係のないキー (ファンクションキーなど) の場合はこのイベントは発生しません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onKeyUp.html b/docs/kr2doc/contents/f_Layer_onKeyUp.html new file mode 100644 index 0000000..acb76e0 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onKeyUp.html @@ -0,0 +1,62 @@ + + + + + + + onKeyUp - キーが離された + + + + + + + + + +

Layer.onKeyUp

+
+
機能/意味
+
+キーが離された
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onKeyUp(key, shift, process=true)
+
+
引数
+
+ + + + + + + +
key  離されたキーの仮想キーコードの値です。
+
shift  キーが離された時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
process  親クラスのonKeyUpを呼ぶ際、この引数に偽を渡すと、親クラスでは + そのキーに対するデフォルトの処理(フォーカスの移動など)を行わなくなります。
+
+
+
説明
+
+  キーが離された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseDown.html b/docs/kr2doc/contents/f_Layer_onMouseDown.html new file mode 100644 index 0000000..0f2073b --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseDown.html @@ -0,0 +1,68 @@ + + + + + + + onMouseDown - マウスのボタンが押された + + + + + + + + + +

Layer.onMouseDown

+
+
機能/意味
+
+マウスのボタンが押された
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseDown(x, y, button, shift)
+
+
引数
+
+ + + + + + + + + +
x  マウスのボタンが押された位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  マウスのボタンが押された位置の y 座標 ( レイヤの表示座標での ) の値です。
+
button  押されたマウスボタンです。以下のいずれかの値になります。
+ mbLeft : マウスの左ボタンが押された
+ mbMiddle : マウスの中ボタンが押された
+ mbRight : マウスの右ボタンが押された
+
shift  マウスボタンが押されたときに同時に押されていたシフト系のキーの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+
+
+
説明
+
+  マウスボタンが押された時に発生します。
+
+
参照
+
+Layer.onClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseEnter.html b/docs/kr2doc/contents/f_Layer_onMouseEnter.html new file mode 100644 index 0000000..8c0d0da --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseEnter.html @@ -0,0 +1,48 @@ + + + + + + + onMouseEnter - マウスが入ってきた + + + + + + + + + +

Layer.onMouseEnter

+
+
機能/意味
+
+マウスが入ってきた
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseEnter()
+
+
引数
+
+なし
+
+
説明
+
+  マウスがレイヤの領域内に入ってきたときに発生します。
+
+
参照
+
+Layer.onMouseLeave
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseLeave.html b/docs/kr2doc/contents/f_Layer_onMouseLeave.html new file mode 100644 index 0000000..1eed9fc --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseLeave.html @@ -0,0 +1,48 @@ + + + + + + + onMouseLeave - マウスが出ていった + + + + + + + + + +

Layer.onMouseLeave

+
+
機能/意味
+
+マウスが出ていった
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseLeave()
+
+
引数
+
+なし
+
+
説明
+
+  マウスがレイヤの領域内から出ていったときに発生します。
+
+
参照
+
+Layer.onMouseEnter
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseMove.html b/docs/kr2doc/contents/f_Layer_onMouseMove.html new file mode 100644 index 0000000..be277b1 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseMove.html @@ -0,0 +1,61 @@ + + + + + + + onMouseMove - マウスが移動した + + + + + + + + + +

Layer.onMouseMove

+
+
機能/意味
+
+マウスが移動した
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseMove(x, y, shift)
+
+
引数
+
+ + + + + + + +
x  マウスが移動した位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  マウスが移動した位置の y 座標 ( レイヤの表示座標での ) の値です。
+
shift  マウスが移動していた時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
+
+
説明
+
+  マウスが移動した時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseUp.html b/docs/kr2doc/contents/f_Layer_onMouseUp.html new file mode 100644 index 0000000..5daa06a --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseUp.html @@ -0,0 +1,64 @@ + + + + + + + onMouseUp - マウスのボタンが離された + + + + + + + + + +

Layer.onMouseUp

+
+
機能/意味
+
+マウスのボタンが離された
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseUp(x, y, button, shift)
+
+
引数
+
+ + + + + + + + + +
x  マウスのボタンが離された位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  マウスのボタンが離された位置の y 座標 ( レイヤの表示座標での ) の値です。
+
button  離されたマウスボタンです。以下のいずれかの値になります。
+ mbLeft : マウスの左ボタンが離された
+ mbMiddle : マウスの中ボタンが離された
+ mbRight : マウスの右ボタンが離された
+
shift  マウスボタンが離された時に同時に押されていたシフト系のキーの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+
+
+
説明
+
+  マウスボタンが離された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onMouseWheel.html b/docs/kr2doc/contents/f_Layer_onMouseWheel.html new file mode 100644 index 0000000..5af10bd --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onMouseWheel.html @@ -0,0 +1,67 @@ + + + + + + + onMouseWheel - マウスホイールが回転した + + + + + + + + + +

Layer.onMouseWheel

+
+
機能/意味
+
+マウスホイールが回転した
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onMouseWheel(shift, delta, x, y)
+
+
引数
+
+ + + + + + + + + +
shift  マウスが移動していた時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
delta  ホイールの回転角です。上方向(ユーザの反対側の方向)に回された場合は正、 + 下方向(ユーザ側の方向)に回された場合は負の値になります。通常、最小量は 120 + となります。
+
x  ホイールが回転した位置の x 座標 ( レイヤの表示座標での ) の値です。
+
y  ホイールが回転した位置の y 座標 ( レイヤの表示座標での ) の値です。
+
+
+
説明
+
+  マウスホイールが回転した時に発生します。
+  このイベントは、キーボードイベントと同じく、フォーカスを持っているレイヤにのみ発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onNodeDisabled.html b/docs/kr2doc/contents/f_Layer_onNodeDisabled.html new file mode 100644 index 0000000..86c7a71 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onNodeDisabled.html @@ -0,0 +1,45 @@ + + + + + + + onNodeDisabled - ノードが操作不能になった + + + + + + + + + +

Layer.onNodeDisabled

+
+
機能/意味
+
+ノードが操作不能になった
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onNodeDisabled()
+
+
引数
+
+なし
+
+
説明
+
+  そのレイヤや、そのレイヤの ( 親子関係的に ) 上位のレイヤの Layer.enabled プロパティ + が変更されたために、そのレイヤが操作不能になったときに呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onNodeEnabled.html b/docs/kr2doc/contents/f_Layer_onNodeEnabled.html new file mode 100644 index 0000000..44d08d5 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onNodeEnabled.html @@ -0,0 +1,45 @@ + + + + + + + onNodeEnabled - ノードが操作可能になった + + + + + + + + + +

Layer.onNodeEnabled

+
+
機能/意味
+
+ノードが操作可能になった
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onNodeEnabled()
+
+
引数
+
+なし
+
+
説明
+
+  そのレイヤや、そのレイヤの ( 親子関係的に ) 上位のレイヤの Layer.enabled プロパティ + が変更されたために、そのレイヤが操作可能になったときに呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onPaint.html b/docs/kr2doc/contents/f_Layer_onPaint.html new file mode 100644 index 0000000..bc5710d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onPaint.html @@ -0,0 +1,50 @@ + + + + + + + onPaint - 描画されるとき + + + + + + + + + +

Layer.onPaint

+
+
機能/意味
+
+描画されるとき
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onPaint()
+
+
引数
+
+なし
+
+
説明
+
+  レイヤが実際にウィンドウに描画される直前に呼ばれます。
+  このイベントは Layer.callOnPaint プロパティが真の時のみに呼ばれ、 + Layer.callOnPaint はこのイベントが実行し終わった後自動的に偽に設定されます。
+
+
参照
+
+Layer.update
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onSearchNextFocusable.html b/docs/kr2doc/contents/f_Layer_onSearchNextFocusable.html new file mode 100644 index 0000000..b2f0c86 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onSearchNextFocusable.html @@ -0,0 +1,52 @@ + + + + + + + onSearchNextFocusable - フォーカス可能なレイヤの後方検索 + + + + + + + + + +

Layer.onSearchNextFocusable

+
+
機能/意味
+
+フォーカス可能なレイヤの後方検索
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onSearchNextFocusable(layer)
+
+
引数
+
+ + + +
layer  フォーカスを受け取るレイヤオブジェクトです。
+  親クラスの同名のメソッドを呼ぶときに引数として指定します。
+  null を渡すと、フォーカス可能なレイヤは無いとして処理されます。
+
+
+
説明
+
+  フォーカス可能なレイヤの後方検索を行うときに発生するイベントです。
+  フォーカスを受け取るレイヤを指定するときは、スーパークラスの同名のイベント + の引数にそのレイヤを指定してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onSearchPrevFocusable.html b/docs/kr2doc/contents/f_Layer_onSearchPrevFocusable.html new file mode 100644 index 0000000..308ddd8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onSearchPrevFocusable.html @@ -0,0 +1,52 @@ + + + + + + + onSearchPrevFocusable - フォーカス可能なレイヤの前方検索 + + + + + + + + + +

Layer.onSearchPrevFocusable

+
+
機能/意味
+
+フォーカス可能なレイヤの前方検索
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onSearchPrevFocusable(layer)
+
+
引数
+
+ + + +
layer  フォーカスを受け取るレイヤオブジェクトです。
+  親クラスの同名のメソッドを呼ぶときに引数として指定します。
+  null を渡すと、フォーカス可能なレイヤは無いとして処理されます。
+
+
+
説明
+
+  フォーカス可能なレイヤの前方検索を行うときに発生するイベントです。
+  フォーカスを受け取るレイヤを指定するときは、スーパークラスの同名のイベント + の引数にそのレイヤを指定してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_onTransitionCompleted.html b/docs/kr2doc/contents/f_Layer_onTransitionCompleted.html new file mode 100644 index 0000000..00297ac --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_onTransitionCompleted.html @@ -0,0 +1,52 @@ + + + + + + + onTransitionCompleted - トランジションが終了した + + + + + + + + + +

Layer.onTransitionCompleted

+
+
機能/意味
+
+トランジションが終了した
+
タイプ
+
+Layerクラスのイベント
+
+
構文
+
+onTransitionCompleted(dest, src)
+
+
引数
+
+ + + + + +
dest  トランジション先のレイヤオブジェクト ( 通常は this ) が渡されます。
+
src  トランジション元のレイヤオブジェクトが渡されます。
+  トランジションの種類によっては null になり得ます。
+
+
+
説明
+
+  トランジションが終了した時に呼ばれます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_opacity.html b/docs/kr2doc/contents/f_Layer_opacity.html new file mode 100644 index 0000000..f6ca967 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_opacity.html @@ -0,0 +1,37 @@ + + + + + + + opacity - 不透明度 + + + + + + + + + +

Layer.opacity

+
+
機能/意味
+
+不透明度
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの不透明度を表します。値を設定することができます。
+  値は 0 〜 255 の整数で、値が大きいほど不透明な表示になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_operateAffine.html b/docs/kr2doc/contents/f_Layer_operateAffine.html new file mode 100644 index 0000000..530273c --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_operateAffine.html @@ -0,0 +1,158 @@ + + + + + + + operateAffine - アフィン変換演算合成 + + + + + + + + + +

Layer.operateAffine

+
+
機能/意味
+
+アフィン変換演算合成
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+operateAffine(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, mode=omAuto, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
affine  続く6つの引数 (A 〜 F パラメータ)をどのように扱うかを指定します。
+  真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : 2Dアフィン変換行列の a
+ B : 2Dアフィン変換行列の b
+ C : 2Dアフィン変換行列の c
+ D : 2Dアフィン変換行列の d
+ E : 2Dアフィン変換行列の tx
+ F : 2Dアフィン変換行列の ty
+
+  アフィン変換により、重ね合わせ元の画像位置 (x, y) ( ただし、重ね合わせ元矩形の左上隅を (0, 0) とする ) は以下の式により、重ね合わせ先の画像位置 (x', y')に変換されます。
+ x' = a*x + c*y + tx
+ y' = b*x + d*y + ty
+
+  偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
+ A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
+ B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
+ C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
+ D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
+ E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
+ F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)
+
+  偽を指定した場合、重ね合わせ元の右下隅に対応する、重ね合わせ先位置(x3, y3)は自動的に以下の式によって計算されます。
+ x3 = x1 - x0 + x2
+ y3 = y1 - y0 + y2
+
A  A パラメータです。affine 引数によって解釈が変わります。
+
B  B パラメータです。affine 引数によって解釈が変わります。
+
C  C パラメータです。affine 引数によって解釈が変わります。
+
D  D パラメータです。affine 引数によって解釈が変わります。
+
E  E パラメータです。affine 引数によって解釈が変わります。
+
F  F パラメータです。affine 引数によって解釈が変わります。
+
mode  演算のモードを指定します。
+ omAuto が指定された場合は演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+ omPsNormal が指定された場合はPhotoshop互換のアルファ合成が行われます(現バージョンでは未実装です)。
+ omPsAdditive が指定された場合はPhotoshop互換の覆い焼き(リニア)合成が行われます(現バージョンでは未実装です)。
+ omPsSubtractive が指定された場合はPhotoshop互換の焼き込み(リニア)合成が行われます(現バージョンでは未実装です)。
+ omPsMultiplicative が指定された場合はPhotoshop互換の乗算合成が行われます(現バージョンでは未実装です)。
+ omPsScreen が指定された場合はPhotoshop互換のスクリーン合成が行われます(現バージョンでは未実装です)。
+ omPsOverlay が指定された場合はPhotoshop互換のオーバーレイ合成が行われます(現バージョンでは未実装です)。
+ omPsHardLight が指定された場合はPhotoshop互換のハードライト合成が行われます(現バージョンでは未実装です)。
+ omPsSoftLight が指定された場合はPhotoshop互換のソフトライト合成が行われます(現バージョンでは未実装です)。
+ omPsColorDodge が指定された場合はPhotoshop互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
+ omPsColorDodge5 が指定された場合はPhotoshopのバージョン5.x 以下と互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
+ omPsColorBurn が指定された場合はPhotoshop互換の焼き込みカラー合成が行われます(現バージョンでは未実装です)。
+ omPsLighten が指定された場合はPhotoshop互換の比較(明)合成が行われます(現バージョンでは未実装です)。
+ omPsDarken が指定された場合はPhotoshop互換の比較(暗)合成が行われます(現バージョンでは未実装です)。
+ omPsDifference が指定された場合はPhotoshop互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
+ omPsDifference5 が指定された場合はPhotoshopのバージョン 5.x 以下と互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
+ omPsExclusion が指定された場合はPhotoshop互換の除外合成が行われます(現バージョンでは未実装です)。
+ omAdditive が指定された場合は加算合成が行われます(現バージョンでは未実装です)。
+ omSubtractive が指定された場合は減算合成が行われます(現バージョンでは未実装です)。
+ omMultiplicative が指定された場合は乗算合成が行われます(現バージョンでは未実装です)。
+ omDodge が指定された場合は覆い焼き合成が行われます(現バージョンでは未実装です)。
+ omDarken が指定された場合は比較(暗)合成が行われます(現バージョンでは未実装です)。
+ omLighten が指定された場合は比較(明)合成が行われます(現バージョンでは未実装です)。
+ omScreen が指定された場合はスクリーン乗算合成が行われます(現バージョンでは未実装です)。
+ omAlpha が指定された場合はアルファ合成が行われます。
+ omAddAlpha が指定された場合は加算アルファ合成が行われます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
+ omOpaque が指定された場合は src のアルファ情報は無視され、src は常に完全不透明であると見なされます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
type  アフィン変換のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いモードほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) に + アフィン変換を行いながら演算合成します。
+  アフィン変換については Layer.affineCopy も参照してください。
+  mode に omAuto を指定した場合は、演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_operateRect.html b/docs/kr2doc/contents/f_Layer_operateRect.html new file mode 100644 index 0000000..a7224d6 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_operateRect.html @@ -0,0 +1,106 @@ + + + + + + + operateRect - 矩形演算合成 + + + + + + + + + +

Layer.operateRect

+
+
機能/意味
+
+矩形演算合成
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+operateRect(dleft, dtop, src, sleft, stop, swidth, sheight, mode=omAuto, opa=255)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + +
dleft  演算先の矩形の左端位置を ( 演算先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  演算先の矩形の上端位置を ( 演算先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  演算元のレイヤオブジェクトを指定します。
+
sleft  演算する矩形の左端位置を ( 演算元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  演算する矩形の上端位置を ( 演算元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  演算する矩形の横幅を ( 演算元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  演算する矩形の縦幅を ( 演算元レイヤの画像位置における ) ピクセル単位で指定します。
+
mode  演算のモードを指定します。
+ omAuto が指定された場合は演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+ omPsNormal が指定された場合はPhotoshop互換のアルファ合成が行われます。
+ omPsAdditive が指定された場合はPhotoshop互換の覆い焼き(リニア)合成が行われます。
+ omPsSubtractive が指定された場合はPhotoshop互換の焼き込み(リニア)合成が行われます。
+ omPsMultiplicative が指定された場合はPhotoshop互換の乗算合成が行われます。
+ omPsScreen が指定された場合はPhotoshop互換のスクリーン合成が行われます。
+ omPsOverlay が指定された場合はPhotoshop互換のオーバーレイ合成が行われます。
+ omPsHardLight が指定された場合はPhotoshop互換のハードライト合成が行われます。
+ omPsSoftLight が指定された場合はPhotoshop互換のソフトライト合成が行われます。
+ omPsColorDodge が指定された場合はPhotoshop互換の覆い焼きカラー合成が行われます。
+ omPsColorDodge5 が指定された場合はPhotoshopのバージョン5.x 以下と互換の覆い焼きカラー合成が行われます。
+ omPsColorBurn が指定された場合はPhotoshop互換の焼き込みカラー合成が行われます。
+ omPsLighten が指定された場合はPhotoshop互換の比較(明)合成が行われます。
+ omPsDarken が指定された場合はPhotoshop互換の比較(暗)合成が行われます。
+ omPsDifference が指定された場合はPhotoshop互換の差の絶対値合成が行われます。
+ omPsDifference5 が指定された場合はPhotoshopのバージョン 5.x 以下と互換の差の絶対値合成が行われます。
+ omPsExclusion が指定された場合はPhotoshop互換の除外合成が行われます。
+ omAdditive が指定された場合は加算合成が行われます。
+ omSubtractive が指定された場合は減算合成が行われます。
+ omMultiplicative が指定された場合は乗算合成が行われます。
+ omDodge が指定された場合は覆い焼き合成が行われます。
+ omDarken が指定された場合は比較(暗)合成が行われます。
+ omLighten が指定された場合は比較(明)合成が行われます。
+ omScreen が指定された場合はスクリーン乗算合成が行われます。
+ omAlpha が指定された場合はアルファ合成が行われます。
+ omAddAlpha が指定された場合は加算アルファ合成が行われます。
+ omOpaque が指定された場合は src のアルファ情報は無視され、src は常に完全不透明であると見なされます。
+
opa  演算の強度 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された演算元レイヤの矩形部分を自分のレイヤの指定位置に指定のモードで演算合成します。
+  演算先の ( メソッドを実行する ) レイヤや演算元のレイヤの Layer.face プロパティの値 + は無視されます。
+  mode に omAuto を指定した場合は、演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_operateStretch.html b/docs/kr2doc/contents/f_Layer_operateStretch.html new file mode 100644 index 0000000..2515507 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_operateStretch.html @@ -0,0 +1,125 @@ + + + + + + + operateStretch - 拡大縮小演算合成 + + + + + + + + + +

Layer.operateStretch

+
+
機能/意味
+
+拡大縮小演算合成
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+operateStretch(dleft, dtop, dwidth, dheight, src, sleft, stop, swidth, sheight, mode=omAuto, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
dleft  重ね合わせ先の矩形の左端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  重ね合わせ先の矩形の上端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dwidth  重ね合わせ先の矩形の横幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dheight  重ね合わせ先の矩形の縦幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
mode  演算のモードを指定します。
+ omAuto が指定された場合は演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+ omPsNormal が指定された場合はPhotoshop互換のアルファ合成が行われます(現バージョンでは未実装です)。
+ omPsAdditive が指定された場合はPhotoshop互換の覆い焼き(リニア)合成が行われます(現バージョンでは未実装です)。
+ omPsSubtractive が指定された場合はPhotoshop互換の焼き込み(リニア)合成が行われます(現バージョンでは未実装です)。
+ omPsMultiplicative が指定された場合はPhotoshop互換の乗算合成が行われます(現バージョンでは未実装です)。
+ omPsScreen が指定された場合はPhotoshop互換のスクリーン合成が行われます(現バージョンでは未実装です)。
+ omPsOverlay が指定された場合はPhotoshop互換のオーバーレイ合成が行われます(現バージョンでは未実装です)。
+ omPsHardLight が指定された場合はPhotoshop互換のハードライト合成が行われます(現バージョンでは未実装です)。
+ omPsSoftLight が指定された場合はPhotoshop互換のソフトライト合成が行われます(現バージョンでは未実装です)。
+ omPsColorDodge が指定された場合はPhotoshop互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
+ omPsColorDodge5 が指定された場合はPhotoshopのバージョン5.x 以下と互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
+ omPsColorBurn が指定された場合はPhotoshop互換の焼き込みカラー合成が行われます(現バージョンでは未実装です)。
+ omPsLighten が指定された場合はPhotoshop互換の比較(明)合成が行われます(現バージョンでは未実装です)。
+ omPsDarken が指定された場合はPhotoshop互換の比較(暗)合成が行われます(現バージョンでは未実装です)。
+ omPsDifference が指定された場合はPhotoshop互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
+ omPsDifference5 が指定された場合はPhotoshopのバージョン 5.x 以下と互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
+ omPsExclusion が指定された場合はPhotoshop互換の除外合成が行われます(現バージョンでは未実装です)。
+ omAdditive が指定された場合は加算合成が行われます(現バージョンでは未実装です)。
+ omSubtractive が指定された場合は減算合成が行われます(現バージョンでは未実装です)。
+ omMultiplicative が指定された場合は乗算合成が行われます(現バージョンでは未実装です)。
+ omDodge が指定された場合は覆い焼き合成が行われます(現バージョンでは未実装です)。
+ omDarken が指定された場合は比較(暗)合成が行われます(現バージョンでは未実装です)。
+ omLighten が指定された場合は比較(明)合成が行われます(現バージョンでは未実装です)。
+ omScreen が指定された場合はスクリーン乗算合成が行われます(現バージョンでは未実装です)。
+ omAlpha が指定された場合はアルファ合成が行われます。
+ omAddAlpha が指定された場合は加算アルファ合成が行われます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
+ omOpaque が指定された場合は src のアルファ情報は無視され、src は常に完全不透明であると見なされます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
+
opa  演算の強度 ( 0 〜 255 ) を指定します。
+
type  拡大縮小のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いタイプほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) の矩形に + 演算合成します。重ね合わせ元矩形と重ね合わせ先矩形のサイズが異なる場合は拡大または縮小が行われます。
+  mode に omAuto を指定した場合は、演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_order.html b/docs/kr2doc/contents/f_Layer_order.html new file mode 100644 index 0000000..d553361 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_order.html @@ -0,0 +1,45 @@ + + + + + + + order - 相対位置 + + + + + + + + + +

Layer.order

+
+
機能/意味
+
+相対位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  同じ親を持つ兄弟レイヤ間での順位を表します。値が小さいほど奥に表示されます。
+  値を設定すると兄弟レイヤ間での順位を変えることができます。値を設定すると + 親レイヤの Layer.absoluteOrderMode プロパティが偽に設定されます。
+
+
参照
+
+Layer.absolute
+Layer.absoluteOrderMode
+Layer.bringToBack
+Layer.bringToFront
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_parent.html b/docs/kr2doc/contents/f_Layer_parent.html new file mode 100644 index 0000000..fcacbc6 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_parent.html @@ -0,0 +1,39 @@ + + + + + + + parent - 親レイヤ + + + + + + + + + +

Layer.parent

+
+
機能/意味
+
+親レイヤ
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  親レイヤオブジェクトを表します。
+  値を設定することもできます。値を設定するとそのレイヤの子になります。
+  異なるウィンドウや異なるプライマリレイヤに所属するレイヤの子になったり、自分自身や自分の子孫の + 子になることはできません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_pileRect.html b/docs/kr2doc/contents/f_Layer_pileRect.html new file mode 100644 index 0000000..2b6b434 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_pileRect.html @@ -0,0 +1,82 @@ + + + + + + + pileRect - 矩形ピクセルアルファブレンド重ね合わせ + + + + + + + + + +

Layer.pileRect

+
+
機能/意味
+
+矩形ピクセルアルファブレンド重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+pileRect(dleft, dtop, src, sleft, stop, swidth, sheight, opa=255)
+
+
引数
+
+ + + + + + + + + + + + + + + + + +
dleft  重ね合わせ先の矩形の左端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  重ね合わせ先の矩形の上端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形部分を自分のレイヤの指定位置に重ね合わせます。
+  ピクセルごとの不透明度 ( ピクセルアルファ ) を用いた重ね合わせを行うことができます。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)
+ それ以外 : できません ( 例外が発生します )
+  重ね合わせ元のレイヤの Layer.face プロパティは無視されます ( 常にメイン画像とマスク画像を + 用いてアルファブレンドが行われます )。
+
+  このメソッドは旧式になりました。代わりに Layer.operateRect を使用してください。演算のモードに omAlpha か omAddAlpha を指定すると同じ効果になります(omAlphaを指定するのかomAddAlphaを指定するのかはsrcのアルファタイプによって異なります。omAutoを指定すればsrcのレイヤタイプに従って自動的に決定されます)。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_piledCopy.html b/docs/kr2doc/contents/f_Layer_piledCopy.html new file mode 100644 index 0000000..df5d2cd --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_piledCopy.html @@ -0,0 +1,73 @@ + + + + + + + piledCopy - レイヤを重ね合わせた画像をコピー + + + + + + + + + +

Layer.piledCopy

+
+
機能/意味
+
+レイヤを重ね合わせた画像をコピー
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+piledCopy(dleft, dtop, src, sleft, stop, swidth, sheight)
+
+
引数
+
+ + + + + + + + + + + + + + + +
dleft  コピー先の矩形の左端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  コピー先の矩形の上端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  コピー元のレイヤオブジェクトを指定します。
+
sleft  コピーする矩形の左端位置を ( コピー元レイヤの表示位置における ) ピクセル単位で指定します。
+
stop  コピーする矩形の上端位置を ( コピー元レイヤの表示位置における ) ピクセル単位で指定します。
+
swidth  コピーする矩形の横幅を ( コピー元レイヤの表示位置における ) ピクセル単位で指定します。
+
sheight  コピーする矩形の縦幅を ( コピー元レイヤの表示位置における ) ピクセル単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたコピー元レイヤの指定された矩形部分を、子レイヤも含めて重ね合わせ、その + 結果の画像を、自分のレイヤの指定位置にコピーします。
+  このメソッドは、コピー元レイヤやコピー先レイヤの Layer.face プロパティには + 影響されません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_prevFocusable.html b/docs/kr2doc/contents/f_Layer_prevFocusable.html new file mode 100644 index 0000000..e9d5f8c --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_prevFocusable.html @@ -0,0 +1,37 @@ + + + + + + + prevFocusable - 前方のフォーカスを受け取れるレイヤ + + + + + + + + + +

Layer.prevFocusable

+
+
機能/意味
+
+前方のフォーカスを受け取れるレイヤ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  フォーカスを受け取れるレイヤを前方検索します。
+  該当するレイヤがなければ null になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_provinceImageBuffer.html b/docs/kr2doc/contents/f_Layer_provinceImageBuffer.html new file mode 100644 index 0000000..cec8fb8 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_provinceImageBuffer.html @@ -0,0 +1,53 @@ + + + + + + + provinceImageBuffer - 領域画像バッファポインタ + + + + + + + + + +

Layer.provinceImageBuffer

+
+
機能/意味
+
+領域画像バッファポインタ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  領域画像 ( 領域の情報を含む 8bpp のビットマップ ) の画像バッファ左上隅へのポインタ + を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  整数型で返されますが、プラグインなどでは適切な型 ( const unsigned char * 等 ) にキャストして使って + ください。
+  このプロパティで得られたポインタには値を書き込まないでください。 + Layer.provinceImageBufferForWrite で得られたポインタならば書き込むことができます。
+  画像が割り当てられていない場合は NULL (0) が返ります。画像が割り当てられていない場合は + 全域が領域番号 0 であると見なす必要があります。
+  画像のサイズは Layer.imageWidthLayer.imageHeight プロパティが + 表しています。
+  ポインタの計算方法は Layer.provinceImageBufferPitch を参照してください。
+
+
参照
+
+Layer.provinceImageBufferForWrite
+Layer.provinceImageBufferPitch
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_provinceImageBufferForWrite.html b/docs/kr2doc/contents/f_Layer_provinceImageBufferForWrite.html new file mode 100644 index 0000000..b35db5c --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_provinceImageBufferForWrite.html @@ -0,0 +1,54 @@ + + + + + + + provinceImageBufferForWrite - 領域画像バッファポインタ(書き込み用) + + + + + + + + + +

Layer.provinceImageBufferForWrite

+
+
機能/意味
+
+領域画像バッファポインタ(書き込み用)
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  領域画像 ( 領域の情報を含む 8bpp のビットマップ ) の画像バッファ左上隅へのポインタ + を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  整数型で返されますが、プラグインなどでは適切な型 ( unsigned char * 等 ) にキャストして使って + ください。
+  このプロパティで得られたポインタには Layer.provinceImageBuffer と異なり、 + 値を書き込むことができます。吉里吉里内部では全く同じ画像は複数のレイヤ間等で共有しますが、 + このプロパティを参照するとその共有状態を解除します。
+  レイヤに画像が割り当てられていない場合は自動的にこのプロパティを参照した時点で + 割り当てられ、全域が領域番号 0 で初期化されます。
+  画像のサイズは Layer.imageWidthLayer.imageHeight プロパティが + 表しています。
+  ポインタの計算方法は Layer.provinceImageBufferPitch を参照してください。
+
+
参照
+
+Layer.provinceImageBuffer
+Layer.provinceImageBufferPitch
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_provinceImageBufferPitch.html b/docs/kr2doc/contents/f_Layer_provinceImageBufferPitch.html new file mode 100644 index 0000000..4001b7d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_provinceImageBufferPitch.html @@ -0,0 +1,49 @@ + + + + + + + provinceImageBufferPitch - 領域画像バッファピッチ + + + + + + + + + +

Layer.provinceImageBufferPitch

+
+
機能/意味
+
+領域画像バッファピッチ
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  領域画像 ( 領域の情報を含む 8bpp のビットマップ ) の画像バッファのピッチ + ( 一つ下のスキャンラインまでのバイト数 ) を表します。
+  このプロパティは、プラグインなどのために画像バッファへの直接のアクセスの手段を提供する + ためにあります。
+  tjs_uint8 が 8bit (1byte) の整数型として、画像位置 (x, y) への + ポインタは C 言語で書くと以下のように計算することができます。
+ (tjs_uint8*)provinceImageBuffer + y*provinceImageBufferPitch + x
+  このプロパティの数値は画像横幅ぴったりに必要なバイト数よりも若干大きい場合があります。
+  このプロパティは値が負になり得ますので注意してください。
+
+
参照
+
+Layer.provinceImageBuffer
+Layer.provinceImageBufferForWrite
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_releaseCapture.html b/docs/kr2doc/contents/f_Layer_releaseCapture.html new file mode 100644 index 0000000..158ffe1 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_releaseCapture.html @@ -0,0 +1,52 @@ + + + + + + + releaseCapture - マウスイベントキャプチャの解除 + + + + + + + + + +

Layer.releaseCapture

+
+
機能/意味
+
+マウスイベントキャプチャの解除
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+releaseCapture()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  マウスイベントキャプチャを解除します。
+  マウスイベントキャプチャとは、最初にマウスボタンを押下した位置にあったレイヤのみに、マウスボタンを放すまでずっとマウスイベントが占有的に送られる機能です。
+  このメソッドは、この機能を解除し、通常のマウスイベントの処理状態に戻します。
+  このメソッドを実行すると、同じウィンドウに属しているレイヤのマウスキャプチャは、たとえメソッドを実行するレイヤとキャプチャの対象となっているレイヤが異なっていても解除されます。
+  このメソッドはキャプチャ状態でない場合は何もしません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_removeMode.html b/docs/kr2doc/contents/f_Layer_removeMode.html new file mode 100644 index 0000000..621fbc9 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_removeMode.html @@ -0,0 +1,48 @@ + + + + + + + removeMode - モーダル状態を解除する + + + + + + + + + +

Layer.removeMode

+
+
機能/意味
+
+モーダル状態を解除する
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+removeMode()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ Layer.setMode で設定したモーダル状態を解除します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_saveLayerImage.html b/docs/kr2doc/contents/f_Layer_saveLayerImage.html new file mode 100644 index 0000000..a08f561 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_saveLayerImage.html @@ -0,0 +1,63 @@ + + + + + + + saveLayerImage - 画像の保存 + + + + + + + + + +

Layer.saveLayerImage

+
+
機能/意味
+
+画像の保存
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+saveLayerImage(name, type="bmp")
+
+
引数
+
+ + + + + +
name  保存するストレージ名を指定します。
+
type  保存する画像形式を文字列で指定します。現バージョンでは以下の形式を指定可能です。
+
+
"bmp" または "bmp32"
 32bpp の BMP です。アルファチャンネル(マスク)も保存します。
+

+
"bmp24"
 24bpp の BMP です。アルファチャンネル(マスク)は保存されません。
+

+
"bmp8"
 8bpp の BMP です。アルファチャンネル(マスク)は保存されません。画像は + 252色の固定パレットによる4×4組織化ディザリングを用いて減色されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  name で指定したストレージ (ファイル) に、type で指定した画像形式でファイルを保存します。
+  保存されるのはレイヤの画像で、領域画像は保存することはできません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setAttentionPos.html b/docs/kr2doc/contents/f_Layer_setAttentionPos.html new file mode 100644 index 0000000..4322d75 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setAttentionPos.html @@ -0,0 +1,63 @@ + + + + + + + setAttentionPos - 注視位置の指定 + + + + + + + + + +

Layer.setAttentionPos

+
+
機能/意味
+
+注視位置の指定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setAttentionPos(left, top)
+
+
引数
+
+ + + + + +
left  注視する ( このレイヤの表示座標における ) x 座標値をピクセル単位で指定します。
+  この値は Layer.attentionLeft プロパティでも設定/取得する事ができます。
+
top  注視する ( このレイヤの表示座標における ) x 座標値をピクセル単位で指定します。
+  この値は Layer.attentionTop プロパティでも設定/取得する事ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  注視位置を指定します。注視位置とは通常カレット ( キーボードからの文字入力位置を + 示すためにテキストエディタなどで点滅する棒 ) の位置に設定します。IME の未確定文字はこの注視位置に + 表示されます。
+
+
参照
+
+Layer.useAttention
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setClip.html b/docs/kr2doc/contents/f_Layer_setClip.html new file mode 100644 index 0000000..3de06c9 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setClip.html @@ -0,0 +1,73 @@ + + + + + + + setClip - 描画クリップ矩形の設定 + + + + + + + + + +

Layer.setClip

+
+
機能/意味
+
+描画クリップ矩形の設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setClip(left, top, width=void, height=void)
+
+
引数
+
+ + + + + + + + + +
left  描画クリップ矩形の ( レイヤの画像座標での ) 左端位置をピクセル単位で指定します。
+  この値は Layer.clipLeft プロパティでも取得や設定ができます。
+
top  描画クリップ矩形の ( レイヤの画像座標での ) 上端位置をピクセル単位で指定します。
+  この値は Layer.clipTop プロパティでも取得や設定ができます。
+
width  描画クリップ矩形の横幅をピクセル単位で指定します。
+  この値は Layer.clipWidth プロパティでも取得や設定ができます。
+
height  描画クリップ矩形の縦幅をピクセル単位で指定します。
+  この値は Layer.clipHeight プロパティでも取得や設定ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの描画クリップ矩形を設定します。
+  レイヤに対する描画は、この描画クリップ矩形内に制限されます ( 矩形外にはみ出た部分は + 描画されません )。ただし、Layer.flipLRLayer.flipUD のように + 描画クリップ矩形の影響を受けないメソッドもあります。
+  初期値は、クリップ矩形はレイヤ画像領域全体に設定されています ( レイヤ全面 + に描画する事ができます )。
+  描画クリップ矩形は、画像読み込みや画像サイズが変更されたり、レイヤの表示タイプが + 変更されると初期値に戻ります。
+  また、このメソッドを引数なしで呼び出すと、描画クリップ矩形を初期値に戻すことができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setCursorPos.html b/docs/kr2doc/contents/f_Layer_setCursorPos.html new file mode 100644 index 0000000..2a87287 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setCursorPos.html @@ -0,0 +1,57 @@ + + + + + + + setCursorPos - マウスカーソル位置の指定 + + + + + + + + + +

Layer.setCursorPos

+
+
機能/意味
+
+マウスカーソル位置の指定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setCursorPos(x, y)
+
+
引数
+
+ + + + + +
x  マウスカーソルの ( このレイヤの表示座標における ) x 座標値をピクセル単位で指定します。
+  この値は Layer.cursorX プロパティでも設定/取得する事ができます。
+
y  マウスカーソルの ( このレイヤの表示座標における ) y 座標値をピクセル単位で指定します。
+  この値は Layer.cursorX プロパティでも設定/取得する事ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  マウスカーソルの位置を指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setImagePos.html b/docs/kr2doc/contents/f_Layer_setImagePos.html new file mode 100644 index 0000000..d716a82 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setImagePos.html @@ -0,0 +1,60 @@ + + + + + + + setImagePos - レイヤ画像オフセットの設定 + + + + + + + + + +

Layer.setImagePos

+
+
機能/意味
+
+レイヤ画像オフセットの設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setImagePos(left, top)
+
+
引数
+
+ + + + + +
left  レイヤに表示する画像の左端位置 ( x オフセット ) をピクセル単位で指定します。
+  この値は Layer.imageLeft プロパティでも取得や設定ができます。
+
top  レイヤに表示する画像の上端位置 ( y オフセット ) をピクセル単位で指定します。
+  この値は Layer.imageTop プロパティでも取得や設定ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤ画像オフセットを指定します。
+  レイヤ画像サイズはレイヤ表示サイズより大きくすることができますが、すべてを表示する + ことはできませんので、このメソッドや Layer.imageLeftLayer.imageTop プロパティで表示オフセットを指定することになります。
+  オフセットは、 0 か、負の数値になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setImageSize.html b/docs/kr2doc/contents/f_Layer_setImageSize.html new file mode 100644 index 0000000..268da0f --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setImageSize.html @@ -0,0 +1,59 @@ + + + + + + + setImageSize - レイヤ画像サイズの設定 + + + + + + + + + +

Layer.setImageSize

+
+
機能/意味
+
+レイヤ画像サイズの設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setImageSize(width, height)
+
+
引数
+
+ + + + + +
width  レイヤ画像の横幅をピクセル単位で指定します。
+  この値は Layer.imageWidth プロパティでも取得や設定ができます。
+
height  レイヤ画像の縦幅をピクセル単位で指定します。
+  この値は Layer.imageHeight プロパティでも取得や設定ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤ画像サイズを指定します。
+  サイズが拡張される場合は、レイヤの表示サイズは変更されませんが、サイズが縮小 + される場合はレイヤの表示サイズも縮小されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setMainPixel.html b/docs/kr2doc/contents/f_Layer_setMainPixel.html new file mode 100644 index 0000000..ae3bb44 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setMainPixel.html @@ -0,0 +1,59 @@ + + + + + + + setMainPixel - メイン画像の色の設定 + + + + + + + + + +

Layer.setMainPixel

+
+
機能/意味
+
+メイン画像の色の設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setMainPixel(x, y, color)
+
+
引数
+
+ + + + + + + +
x  色を設定する ( レイヤの画像座標での ) x 座標を指定します。
+
y  色を設定する ( レイヤの画像座標での ) y 座標を指定します。
+
color  設定する色を 0xRRGGBB 形式で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤメイン画像 ( 色を保持している画像 ) の任意の位置の色を設定します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setMaskPixel.html b/docs/kr2doc/contents/f_Layer_setMaskPixel.html new file mode 100644 index 0000000..8353831 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setMaskPixel.html @@ -0,0 +1,59 @@ + + + + + + + setMaskPixel - マスク画像の値の設定 + + + + + + + + + +

Layer.setMaskPixel

+
+
機能/意味
+
+マスク画像の値の設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setMaskPixel(x, y, value)
+
+
引数
+
+ + + + + + + +
x  値を設定する ( レイヤの画像座標での ) x 座標を指定します。
+
y  値を設定する ( レイヤの画像座標での ) y 座標を指定します。
+
value  設定する値 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤマスク画像 ( 不透明度を保持している画像 ) の任意の位置の値 ( 0 〜 255 ) を設定します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setMode.html b/docs/kr2doc/contents/f_Layer_setMode.html new file mode 100644 index 0000000..73bb646 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setMode.html @@ -0,0 +1,49 @@ + + + + + + + setMode - モーダル状態にする + + + + + + + + + +

Layer.setMode

+
+
機能/意味
+
+モーダル状態にする
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setMode()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤにモードを設定します。モードを設定すると ( モーダルになると )、そのレイヤの子レイヤ + のみがフォーカスやマウスメッセージを受け取ることができるようになります。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setPos.html b/docs/kr2doc/contents/f_Layer_setPos.html new file mode 100644 index 0000000..cb2c927 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setPos.html @@ -0,0 +1,68 @@ + + + + + + + setPos - レイヤ表示位置の設定 + + + + + + + + + +

Layer.setPos

+
+
機能/意味
+
+レイヤ表示位置の設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setPos(left, top, width=void, height=void)
+
+
引数
+
+ + + + + + + + + +
left  レイヤの ( 親レイヤの表示座標での ) 左端位置をピクセル単位で指定します。
+  この値は Layer.left プロパティでも取得や設定ができます。
+
top  レイヤの ( 親レイヤの表示座標での ) 上端位置をピクセル単位で指定します。
+  この値は Layer.top プロパティでも取得や設定ができます。
+
width  レイヤの横幅をピクセル単位で指定します。
+  この値は Layer.width プロパティでも取得や設定ができます。
+  この引数と height 引数が省略された場合は left 引数と top 引数による位置の変更のみとなります。
+
height  レイヤの縦幅をピクセル単位で指定します。
+  この値は Layer.height プロパティでも取得や設定ができます。
+  この引数と width 引数が省略された場合は left 引数と top 引数による位置の変更のみと + なります。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの表示位置を設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setProvincePixel.html b/docs/kr2doc/contents/f_Layer_setProvincePixel.html new file mode 100644 index 0000000..e55f621 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setProvincePixel.html @@ -0,0 +1,59 @@ + + + + + + + setProvincePixel - 領域画像の値の設定 + + + + + + + + + +

Layer.setProvincePixel

+
+
機能/意味
+
+領域画像の値の設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setProvincePixel(x, y, value)
+
+
引数
+
+ + + + + + + +
x  値を設定する ( レイヤの画像座標での ) x 座標を指定します。
+
y  値を設定する ( レイヤの画像座標での ) y 座標を指定します。
+
value  設定する値 ( 0 〜 255 ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤ領域画像の任意の位置の値 ( 0 〜 255 ) を設定します。
+  画像座標として無効な ( 範囲外の ) 位置を指定すると例外が発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setSize.html b/docs/kr2doc/contents/f_Layer_setSize.html new file mode 100644 index 0000000..9564a63 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setSize.html @@ -0,0 +1,57 @@ + + + + + + + setSize - レイヤ表示サイズの設定 + + + + + + + + + +

Layer.setSize

+
+
機能/意味
+
+レイヤ表示サイズの設定
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setSize(width, height)
+
+
引数
+
+ + + + + +
width  レイヤの表示の横幅をピクセル単位で指定します。
+  この値は Layer.width プロパティでも取得や設定ができます。
+
height  レイヤの表示の縦幅をピクセル単位で指定します。
+  この値は Layer.height プロパティでも取得や設定ができます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの表示サイズを設定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_setSizeToImageSize.html b/docs/kr2doc/contents/f_Layer_setSizeToImageSize.html new file mode 100644 index 0000000..23d572b --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_setSizeToImageSize.html @@ -0,0 +1,50 @@ + + + + + + + setSizeToImageSize - レイヤ表示サイズを画像サイズに合わせる + + + + + + + + + +

Layer.setSizeToImageSize

+
+
機能/意味
+
+レイヤ表示サイズを画像サイズに合わせる
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+setSizeToImageSize()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの表示サイズを画像サイズと同じにします。
+  画像サイズを変更する多くの操作では表示サイズまでは変更しませんが、 + このメソッドを使うと表示サイズを画像サイズと同じにすることができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_showParentHint.html b/docs/kr2doc/contents/f_Layer_showParentHint.html new file mode 100644 index 0000000..8d07b29 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_showParentHint.html @@ -0,0 +1,42 @@ + + + + + + + showParentHint - 親レイヤのヒントを引き継ぐか + + + + + + + + + +

Layer.showParentHint

+
+
機能/意味
+
+親レイヤのヒントを引き継ぐか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  親レイヤのヒントを引き継ぐかどうかを表します。値を設定することもできます。
+  真の場合は、Layer.hint プロパティが空文字列の場合は、親レイヤをさか + のぼり、ヒントが設定されているレイヤのヒントをそのまま引き継いで + 表示します。Layer.hint プロパティが空文字列でなかった場合はそれを表示します。
+ +  偽の場合は、Layer.hint プロパティが空文字列でなければそれを表示し、空文字列であれば + ヒントは表示しません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_stopTransition.html b/docs/kr2doc/contents/f_Layer_stopTransition.html new file mode 100644 index 0000000..528d199 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_stopTransition.html @@ -0,0 +1,48 @@ + + + + + + + stopTransition - トランジションを停止する + + + + + + + + + +

Layer.stopTransition

+
+
機能/意味
+
+トランジションを停止する
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+stopTransition()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 進行中のトランジションを停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_stretchBlend.html b/docs/kr2doc/contents/f_Layer_stretchBlend.html new file mode 100644 index 0000000..5f27a19 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_stretchBlend.html @@ -0,0 +1,103 @@ + + + + + + + stretchBlend - 拡大縮小重ね合わせ + + + + + + + + + +

Layer.stretchBlend

+
+
機能/意味
+
+拡大縮小重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+stretchBlend(dleft, dtop, dwidth, dheight, src, sleft, stop, swidth, sheight, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + +
dleft  重ね合わせ先の矩形の左端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  重ね合わせ先の矩形の上端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dwidth  重ね合わせ先の矩形の横幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dheight  重ね合わせ先の矩形の縦幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
type  拡大縮小のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いタイプほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) の矩形に + 重ね合わせます。重ね合わせ元矩形と重ね合わせ先矩形のサイズが異なる場合は拡大または縮小が + 行われます。
+  重ね合わせ元のレイヤの Layer.face プロパティは無視されますが、Layer.stretchPile と異な + り、重ね合わせ元のレイヤの不透明度は無視されます ( 常に完全に不透明であると見なされます )。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)。この場合は、Layer.holdAlphaプロパティが偽のとき、type 引数に stFastLinear を指定することにより、線形補間が可能です。
+ それ以外 : できません ( 例外が発生します )
+
+  このメソッドは旧式になりました。代わりに Layer.operateStretch を使用してください。演算のモードに omOpaque を指定すると同じ効果になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_stretchCopy.html b/docs/kr2doc/contents/f_Layer_stretchCopy.html new file mode 100644 index 0000000..10097a6 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_stretchCopy.html @@ -0,0 +1,98 @@ + + + + + + + stretchCopy - 拡大縮小コピー + + + + + + + + + +

Layer.stretchCopy

+
+
機能/意味
+
+拡大縮小コピー
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+stretchCopy(dleft, dtop, dwidth, dheight, src, sleft, stop, swidth, sheight, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + +
dleft  コピー先の矩形の左端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  コピー先の矩形の上端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
dwidth  コピー先の矩形の横幅を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
dheight  コピー先の矩形の縦幅を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  コピー元のレイヤオブジェクトを指定します。
+
sleft  コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
+
type  拡大縮小のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(一部実装)
+ stLinear : 線形補間が用いられます(一部実装)
+ stCubic : 3次元補間が用いられます(一部実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いタイプほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたコピー元レイヤの矩形を、コピー先 ( メソッドを実行するレイヤ ) の矩形に + コピーします。コピー元矩形とコピー先矩形のサイズが異なる場合は拡大または縮小が + 行われます。
+  現バージョンでは stFastLinear の指定で線形補間が効くのは、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが dfAlpha (または dfBoth) または dfAddAlpha の場合です。また、Layer.face プロパティが dfOpaque で、Layer.holdAlpha プロパティが偽の時も線形補間が可能です。
+  また、現バージョンでは stLinear あるいは stCubic の指定が有効なのは、左右/上下反転を + 伴わず、コピー先矩形がレイヤをはみ出さない場合のみです。
+  重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが + dfAlpha (または dfBoth) または dfAddAlpha の場合は、メイン画像とマスク画像の両方がコピーされます。
+  dfOpaque (または dfMain) の場合は、Layer.holdAlpha プロパティが真の時はメイン画像のみがコピーされ、偽の時はメイン画像とマスク画像の両方がコピーされます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_stretchPile.html b/docs/kr2doc/contents/f_Layer_stretchPile.html new file mode 100644 index 0000000..d3203be --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_stretchPile.html @@ -0,0 +1,104 @@ + + + + + + + stretchPile - 拡大縮小ピクセルアルファブレンド重ね合わせ + + + + + + + + + +

Layer.stretchPile

+
+
機能/意味
+
+拡大縮小ピクセルアルファブレンド重ね合わせ
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+stretchPile(dleft, dtop, dwidth, dheight, src, sleft, stop, swidth, sheight, opa=255, type=stNearest)
+
+
引数
+
+ + + + + + + + + + + + + + + + + + + + + + + +
dleft  重ね合わせ先の矩形の左端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dtop  重ね合わせ先の矩形の上端位置を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dwidth  重ね合わせ先の矩形の横幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
dheight  重ね合わせ先の矩形の縦幅を ( 重ね合わせ先レイヤの画像位置における ) ピクセル単位で指定します。
+
src  重ね合わせ元のレイヤオブジェクトを指定します。
+
sleft  重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
stop  重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
swidth  重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
sheight  重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。
+
opa  重ね合わせの不透明度 ( 0 〜 255 ) を指定します。
+
type  拡大縮小のタイプを指定します。
+ stNearest : 最近傍点法が用いられます
+ stFastLinear : 低精度の線形補間が用いられます(未実装)
+ stLinear : 線形補間が用いられます(未実装)
+ stCubic : 3次元補間が用いられます(未実装)
+  速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が + 速ければ速いタイプほど低画質になります。
+  stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定 + することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを + 許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、 + 転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある + 範囲内のピクセルの色と見なされます)。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) の矩形に + 重ね合わせます。重ね合わせ元矩形と重ね合わせ先矩形のサイズが異なる場合は拡大または縮小が + 行われます。
+  ピクセルごとの不透明度 ( ピクセルアルファ ) を用いた重ね合わせを行うことができます。
+  現バージョンでは mode には stNearest のみ指定できます。
+  重ね合わされる画像は、重ね合わせ先の ( メソッドを実行する ) レイ + ヤの Layer.face プロパティの値によって変わります。
+ dfAlpha (またはdfBoth) : 重ね合わせ先の不透明度を考慮した重ね合わせが行われます
+ dfOpaque (またはdfMain) : 重ね合わせ先の不透明度を無視した重ね合わせが行われます(重ね合わせ先は全面完全不透明として扱われます)
+ それ以外 : できません ( 例外が発生します )
+
+  このメソッドは旧式になりました。代わりに Layer.operateStretch を使用してください。演算のモードに omAlpha か omAddAlpha を指定すると同じ効果になります(omAlphaを指定するのかomAddAlphaを指定するのかはsrcのアルファタイプによって異なります。omAutoを指定すればsrcのレイヤタイプに従って自動的に決定されます)。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_top.html b/docs/kr2doc/contents/f_Layer_top.html new file mode 100644 index 0000000..113e8e2 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_top.html @@ -0,0 +1,41 @@ + + + + + + + top - 上端位置 + + + + + + + + + +

Layer.top

+
+
機能/意味
+
+上端位置
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤ上端位置を、親レイヤの表示座標におけるピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_type.html b/docs/kr2doc/contents/f_Layer_type.html new file mode 100644 index 0000000..92fb694 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_type.html @@ -0,0 +1,44 @@ + + + + + + + type - レイヤ表示タイプ + + + + + + + + + +

Layer.type

+
+
機能/意味
+
+レイヤ表示タイプ
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示タイプを表します。値を設定することもできます。
+
  • ltOpaque または ltCoverRect を指定すると、ピクセルごとのアルファブレンドが無効になります。ltCoverRectltOpaqueも同じ意味です。 + Layer.opacity プロパティが 255 の場合は、完全に不透明の矩形として表示される + 事になります。マスク画像は無視されます。このタイプに適した描画方式(Layer.faceで指定)はdfOpaqueです。
  • ltAlpha または ltTransparent を指定すると、ピクセルごとのアルファブレンドが有効になります。ltTransparentltAlphaも同じ意味です。 + マスク画像が透過に用いられます。このタイプに適した描画方式はdfAlphaです。
  • ltAddAlpha を指定すると、ピクセルごとの加算アルファブレンドが有効になります。このタイプに適した描画方式は dfAddAlpha です。
  • ltAdditive を指定すると、加算合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltSubtractive を指定すると、減算合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltMultiplicative を指定すると、乗算合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltDodge を指定すると、覆い焼き合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltDarken を指定すると、比較(暗)合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltLighten を指定すると、比較(明)合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
  • ltScreen を指定すると、スクリーン乗算合成が行われます。マスク画像は無視されます。このタイプに適した描画方式は dfOpaque です。
 この他のレイヤ表示タイプについてはグラフィックシステムを参照してください。
+
+
参照
+
+Layer.face
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_update.html b/docs/kr2doc/contents/f_Layer_update.html new file mode 100644 index 0000000..aebcd42 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_update.html @@ -0,0 +1,67 @@ + + + + + + + update - 画像の更新 + + + + + + + + + +

Layer.update

+
+
機能/意味
+
+画像の更新
+
タイプ
+
+Layerクラスのメソッド
+
+
構文
+
+update(left, top, width, height)
+
+
引数
+
+ + + + + + + + + +
left  更新する矩形の左端位置を表示座標におけるピクセル単位で指定します。
+
top  更新する矩形の上端位置を表示座標におけるピクセル単位で指定します。
+
width  更新する矩形の横幅を表示座標におけるピクセル単位で指定します。
+
height  更新する矩形の縦幅を表示座標におけるピクセル単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  このメソッドはレイヤを強制的に画面に描画させます。
+  描画系のメソッドなどを実行すると自動的に画面更新が発生しますが、 + このメソッドで画面への描画を強制的に起こさせることができます。
+  引数をすべて省略するとレイヤ全体が再描画されます。
+  このメソッドは、Layer.callOnPaint プロパティを真に設定します。
+  実際に画面に描画されるまでは、何度このメソッドを実行しても画面描画が + 発生するのは1回のみです ( キャッシュされます )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_useAttention.html b/docs/kr2doc/contents/f_Layer_useAttention.html new file mode 100644 index 0000000..d00c2b9 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_useAttention.html @@ -0,0 +1,44 @@ + + + + + + + useAttention - 注視情報を使用するかどうか + + + + + + + + + +

Layer.useAttention

+
+
機能/意味
+
+注視情報を使用するかどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  注視情報を使用するかどうかを表します。値を設定することもできます。
+  真が指定された場合は、そのレイヤの注視情報が使用されます。
+  偽が指定された場合は、そのレイヤの親の注視情報が ( もしあれば ) 使用されます。
+
+
参照
+
+Layer.setAttentionPos
+Layer.attentionLeft
+Layer.attentionTop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_visible.html b/docs/kr2doc/contents/f_Layer_visible.html new file mode 100644 index 0000000..fbd7378 --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 可視かどうか + + + + + + + + + +

Layer.visible

+
+
機能/意味
+
+可視かどうか
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  可視かどうかを表します。値を設定することもできます。
+  偽を指定すると不可視になります。真を指定すると可視になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_width.html b/docs/kr2doc/contents/f_Layer_width.html new file mode 100644 index 0000000..5b919ca --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_width.html @@ -0,0 +1,41 @@ + + + + + + + width - 横幅 + + + + + + + + + +

Layer.width

+
+
機能/意味
+
+横幅
+
タイプ
+
+Layerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示横幅をピクセル単位で指定します。
+  値を設定することもできます。
+
+
参照
+
+Layer.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Layer_window.html b/docs/kr2doc/contents/f_Layer_window.html new file mode 100644 index 0000000..afc647d --- /dev/null +++ b/docs/kr2doc/contents/f_Layer_window.html @@ -0,0 +1,36 @@ + + + + + + + window - ウィンドウオブジェクト + + + + + + + + + +

Layer.window

+
+
機能/意味
+
+ウィンドウオブジェクト
+
タイプ
+
+Layerクラスのプロパティ (読み出し専用)
+
+
説明
+
+  このレイヤを保持しているウィンドウオブジェクトを表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer.html b/docs/kr2doc/contents/f_MIDISoundBuffer.html new file mode 100644 index 0000000..1b1adc8 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer.html @@ -0,0 +1,55 @@ + + + + + + + MIDISoundBuffer + + + + + + + + +

MIDISoundBuffer

+ MIDISoundBuffer クラスは、MIDIの再生を管理するクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+MIDISoundBuffer
+
+
メソッド
+
+fade ( フェードを開始する )
+midiOut ( 任意の MIDI データの出力 )
+open ( メディアを開く )
+play ( メディアを再生する )
+stop ( メディアを停止する )
+stopFade ( フェードを停止する )
+
+
プロパティ
+
+looping ( ループ再生を行うかどうか )
+paused ( 一時停止状態かどうか )
+position ( 再生位置 )
+status ( ステータス )
+totalTime ( メディアの再生時間 )
+volume ( 音量 )
+volume2 ( 第2音量 )
+
+
イベント
+
+onFadeCompleted ( フェードが終了した )
+onStatusChanged ( ステータスが変更された )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_MIDISoundBuffer.html b/docs/kr2doc/contents/f_MIDISoundBuffer_MIDISoundBuffer.html new file mode 100644 index 0000000..73c059a --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_MIDISoundBuffer.html @@ -0,0 +1,53 @@ + + + + + + + MIDISoundBuffer - MIDISoundBuffer オブジェクトの構築 + + + + + + + + + +

MIDISoundBuffer.MIDISoundBuffer

+
+
機能/意味
+
+MIDISoundBuffer オブジェクトの構築
+
タイプ
+
+MIDISoundBufferクラスのコンストラクタ
+
+
構文
+
+MIDISoundBuffer(owner)
+
+
引数
+
+ + + +
owner  イベントの発生先を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  MIDISoundBuffer クラスのオブジェクトを構築します。
+  イベントが発生すると owner で指定したオブジェクトの action メソッドを呼び出します。owner に null を指定すると action メソッドは呼ばれません。通常は Window クラスのオブジェクトを owner に指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_fade.html b/docs/kr2doc/contents/f_MIDISoundBuffer_fade.html new file mode 100644 index 0000000..2b64c37 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_fade.html @@ -0,0 +1,60 @@ + + + + + + + fade - フェードを開始する + + + + + + + + + +

MIDISoundBuffer.fade

+
+
機能/意味
+
+フェードを開始する
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+fade(to, time, delay=0)
+
+
引数
+
+ + + + + + + +
to  到達させる音量を指定します。
+  音量の指定については MIDISoundBuffer.volume プロパティを参照して + ください。
+
time  フェードにかける時間を ms 単位で指定します。
+
delay  フェード開始までの待ち時間を ms 単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  フェード ( 連続的な音量の変化 ) を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_looping.html b/docs/kr2doc/contents/f_MIDISoundBuffer_looping.html new file mode 100644 index 0000000..c362603 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_looping.html @@ -0,0 +1,38 @@ + + + + + + + looping - ループ再生を行うかどうか + + + + + + + + + +

MIDISoundBuffer.looping

+
+
機能/意味
+
+ループ再生を行うかどうか
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ループ再生を行うかどうかを表します。値を設定することもできます。
+  真を指定するとループ再生がされます。
+ +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_midiOut.html b/docs/kr2doc/contents/f_MIDISoundBuffer_midiOut.html new file mode 100644 index 0000000..8518bdb --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_midiOut.html @@ -0,0 +1,53 @@ + + + + + + + midiOut - 任意の MIDI データの出力 + + + + + + + + + +

MIDISoundBuffer.midiOut

+
+
機能/意味
+
+任意の MIDI データの出力
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+midiOut(data)
+
+
引数
+
+ + + +
data  出力する MIDI データをオクテット形式で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  任意の MIDI データを出力します。
+  データ中に ff 00 が入っていると、その時点で 50ms のウェイトが入ります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_onFadeCompleted.html b/docs/kr2doc/contents/f_MIDISoundBuffer_onFadeCompleted.html new file mode 100644 index 0000000..300c3ea --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_onFadeCompleted.html @@ -0,0 +1,44 @@ + + + + + + + onFadeCompleted - フェードが終了した + + + + + + + + + +

MIDISoundBuffer.onFadeCompleted

+
+
機能/意味
+
+フェードが終了した
+
タイプ
+
+MIDISoundBufferクラスのイベント
+
+
構文
+
+onFadeCompleted()
+
+
引数
+
+なし
+
+
説明
+
+  MIDISoundBuffer.fade メソッドで開始したフェードが終了したときに発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_onStatusChanged.html b/docs/kr2doc/contents/f_MIDISoundBuffer_onStatusChanged.html new file mode 100644 index 0000000..d2fdad1 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_onStatusChanged.html @@ -0,0 +1,49 @@ + + + + + + + onStatusChanged - ステータスが変更された + + + + + + + + + +

MIDISoundBuffer.onStatusChanged

+
+
機能/意味
+
+ステータスが変更された
+
タイプ
+
+MIDISoundBufferクラスのイベント
+
+
構文
+
+onStatusChanged(status)
+
+
引数
+
+ + + +
status  新しいステータスです。
+  MIDISoundBuffer.status プロパティを参照してください。
+
+
+
説明
+
+  再生のステータス ( 状態 ) が変わった時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_open.html b/docs/kr2doc/contents/f_MIDISoundBuffer_open.html new file mode 100644 index 0000000..e2367ae --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_open.html @@ -0,0 +1,55 @@ + + + + + + + open - メディアを開く + + + + + + + + + +

MIDISoundBuffer.open

+
+
機能/意味
+
+メディアを開く
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+open(storage)
+
+
引数
+
+ + + +
storage  再生したいストレージを指定します。
+
+ +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたメディアを開きます。このメソッドは再生を開始しません。
+ +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_paused.html b/docs/kr2doc/contents/f_MIDISoundBuffer_paused.html new file mode 100644 index 0000000..bc40c1d --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_paused.html @@ -0,0 +1,39 @@ + + + + + + + paused - 一時停止状態かどうか + + + + + + + + + +

MIDISoundBuffer.paused

+
+
機能/意味
+
+一時停止状態かどうか
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  一時停止状態かどうかを表します。値を設定することもできます。
+  真の場合は一時停止状態です。
+  現バージョンでは実装されていません。
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_play.html b/docs/kr2doc/contents/f_MIDISoundBuffer_play.html new file mode 100644 index 0000000..164467f --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_play.html @@ -0,0 +1,48 @@ + + + + + + + play - メディアを再生する + + + + + + + + + +

MIDISoundBuffer.play

+
+
機能/意味
+
+メディアを再生する
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+play()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_position.html b/docs/kr2doc/contents/f_MIDISoundBuffer_position.html new file mode 100644 index 0000000..a988087 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_position.html @@ -0,0 +1,38 @@ + + + + + + + position - 再生位置 + + + + + + + + + +

MIDISoundBuffer.position

+
+
機能/意味
+
+再生位置
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生位置を ms 単位で表します。値を設定するとその位置に移動します。
+  現バージョンでは実装されていません。
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_status.html b/docs/kr2doc/contents/f_MIDISoundBuffer_status.html new file mode 100644 index 0000000..685a27a --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_status.html @@ -0,0 +1,40 @@ + + + + + + + status - ステータス + + + + + + + + + +

MIDISoundBuffer.status

+
+
機能/意味
+
+ステータス
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在の状態を表します。
+  状態は文字列で表され、以下の値をとります。
+ "unload" : メディアが開かれてない
+ "play" : メディアは再生中である
+ "stop" : メディアは停止中である
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_stop.html b/docs/kr2doc/contents/f_MIDISoundBuffer_stop.html new file mode 100644 index 0000000..73aaa7a --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_stop.html @@ -0,0 +1,48 @@ + + + + + + + stop - メディアを停止する + + + + + + + + + +

MIDISoundBuffer.stop

+
+
機能/意味
+
+メディアを停止する
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+stop()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_stopFade.html b/docs/kr2doc/contents/f_MIDISoundBuffer_stopFade.html new file mode 100644 index 0000000..9e67d9d --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_stopFade.html @@ -0,0 +1,49 @@ + + + + + + + stopFade - フェードを停止する + + + + + + + + + +

MIDISoundBuffer.stopFade

+
+
機能/意味
+
+フェードを停止する
+
タイプ
+
+MIDISoundBufferクラスのメソッド
+
+
構文
+
+stopFade()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  MIDISoundBuffer.fade メソッドで開始したフェードを強制的に停止します。
+  音量は停止させた時点のままになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_totalTime.html b/docs/kr2doc/contents/f_MIDISoundBuffer_totalTime.html new file mode 100644 index 0000000..574ffff --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_totalTime.html @@ -0,0 +1,38 @@ + + + + + + + totalTime - メディアの再生時間 + + + + + + + + + +

MIDISoundBuffer.totalTime

+
+
機能/意味
+
+メディアの再生時間
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メディアの総再生時間を ms 単位で表します。
+  現バージョンでは実装されていません。
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_volume.html b/docs/kr2doc/contents/f_MIDISoundBuffer_volume.html new file mode 100644 index 0000000..4a27f90 --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_volume.html @@ -0,0 +1,37 @@ + + + + + + + volume - 音量 + + + + + + + + + +

MIDISoundBuffer.volume

+
+
機能/意味
+
+音量
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することもできます。
+ 0 〜 100000 の数値で指定し、 0 が完全ミュート、100000 が 100% の音量となります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MIDISoundBuffer_volume2.html b/docs/kr2doc/contents/f_MIDISoundBuffer_volume2.html new file mode 100644 index 0000000..6216a8a --- /dev/null +++ b/docs/kr2doc/contents/f_MIDISoundBuffer_volume2.html @@ -0,0 +1,42 @@ + + + + + + + volume2 - 第2音量 + + + + + + + + + +

MIDISoundBuffer.volume2

+
+
機能/意味
+
+第2音量
+
タイプ
+
+MIDISoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することができます。
+  MIDISoundBuffer.volume プロパティと違うのは、このプロパティは + MIDISoundBuffer.fade メソッドでも変化しないということです。
+  最終的な音量は、volume プロパティとこのプロパティの積で決定されます。volume プロパティが + 100000 ( 100% ) で volume2 プロパティも 100000 ( 100% ) ならば 100% × 100% = 100% で + 100% の音量で再生されます。volume プロパティが 50000 ( 50% ) で volume2 プロパティが 75000 ( 75% ) ならば + 50% × 75% = 37.5% で 37.5 % の音量で再生されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem.html b/docs/kr2doc/contents/f_MenuItem.html new file mode 100644 index 0000000..95ee234 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem.html @@ -0,0 +1,60 @@ + + + + + + + MenuItem + + + + + + + + +

MenuItem

+ MenuItem クラスは、メニュー項目を管理するためのクラスです。
+ ウィンドウのメニューバーにメニュー項目を並べたい場合は、Window.menu プロパティの +子としてメニュー項目を追加します。
+
+

メンバ

+
+
コンストラクタ
+
+MenuItem
+
+
メソッド
+
+add ( 子メニュー項目の追加 )
+insert ( 子メニュー項目の挿入 )
+popup ( メニュー項目のポップアップ表示 )
+remove ( 子メニュー項目の削除 )
+
+
プロパティ
+
+HMENU ( HMENUメニュー項目ハンドル )
+caption ( キャプション )
+checked ( チェックマークを表示するかどうか )
+children ( 子メニュー項目 )
+enabled ( 選択可能かどうか )
+group ( グループ番号 )
+index ( 順番 )
+parent ( 親メニュー項目 )
+radio ( ラジオ項目かどうか )
+root ( ルートメニュー項目 )
+shortcut ( ショートカットキー )
+visible ( 可視かどうか )
+window ( オーナーウィンドウ )
+
+
イベント
+
+onClick ( メニュー項目が選択された )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_HMENU.html b/docs/kr2doc/contents/f_MenuItem_HMENU.html new file mode 100644 index 0000000..28d8257 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_HMENU.html @@ -0,0 +1,40 @@ + + + + + + + HMENU - HMENUメニュー項目ハンドル + + + + + + + + + +

MenuItem.HMENU

+
+
機能/意味
+
+HMENUメニュー項目ハンドル
+
タイプ
+
+MenuItemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  Windows APIにおけるHMENU型のメニュー項目ハンドルを表します。
+  このプロパティはプラグインなどでメニュー項目に直接アクセスしたいときに用います。
+  TJS2からのアクセスは意味がありません。
+  ここで得られるのは整数ですが、プラグインなどでこの数値を使う場合は + HMENU 型に キャストして使ってください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_MenuItem.html b/docs/kr2doc/contents/f_MenuItem_MenuItem.html new file mode 100644 index 0000000..070b57c --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_MenuItem.html @@ -0,0 +1,58 @@ + + + + + + + MenuItem - MenuItem オブジェクトの構築 + + + + + + + + + +

MenuItem.MenuItem

+
+
機能/意味
+
+MenuItem オブジェクトの構築
+
タイプ
+
+MenuItemクラスのコンストラクタ
+
+
構文
+
+MenuItem(window, caption='')
+
+
引数
+
+ + + + + +
window  このメニュー項目を作成するウィンドウを指定します。
+
caption  メニュー項目のキャプション (表示する文字列) を指定します。
+  MenuItem.caption プロパティで設定/取得できます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  MenuItem クラスのオブジェクトを構築します。
+  作成したメニュー項目を親メニュー項目に追加するには、親メニュー項目の + MenuItem.add メソッドを使います。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_add.html b/docs/kr2doc/contents/f_MenuItem_add.html new file mode 100644 index 0000000..c0bc354 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_add.html @@ -0,0 +1,55 @@ + + + + + + + add - 子メニュー項目の追加 + + + + + + + + + +

MenuItem.add

+
+
機能/意味
+
+子メニュー項目の追加
+
タイプ
+
+MenuItemクラスのメソッド
+
+
構文
+
+add(item)
+
+
引数
+
+ + + +
item  追加する子メニュー項目を指定します。
+  子メニュー項目は、すでに子となっているメニュー項目の最後に追加されます。 +
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  子メニュー項目を追加します。メニュー項目が他のメニュー項目の子になると、 + 親メニュー項目が無効化されるときに自動的に子メニュー項目も無効化されるようになります。
+  また、メニュー階層においても親子の関係を持つようになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_caption.html b/docs/kr2doc/contents/f_MenuItem_caption.html new file mode 100644 index 0000000..fc75c89 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_caption.html @@ -0,0 +1,37 @@ + + + + + + + caption - キャプション + + + + + + + + + +

MenuItem.caption

+
+
機能/意味
+
+キャプション
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  キャプション ( 表示する文字列 ) を表します。値を設定することもできます。
+  '-' ( ハイフン ) を指定すると区切り線を表示するようになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_checked.html b/docs/kr2doc/contents/f_MenuItem_checked.html new file mode 100644 index 0000000..ce853e1 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_checked.html @@ -0,0 +1,46 @@ + + + + + + + checked - チェックマークを表示するかどうか + + + + + + + + + +

MenuItem.checked

+
+
機能/意味
+
+チェックマークを表示するかどうか
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  メニュー項目の横にチェックマークを表示するかどうかを表します。値を設定することもできます。
+  真を指定するとチェックマークが表示されます。
+  MenuItem.radio プロパティが真の場合は、チェックマークではなく、黒い丸が表示されます。
+ +  MenuItem.group にて同じグループ番号を持ち、かつ同じ親を持ち、さらに + MenuItem.radio プロパティが真のメニュー項目は、 + このプロパティを同時に二つ以上を + 真にすることはできません。他のメニュー項目のこのプロパティが真になった場合、 + 他に真になっているメニュー項目があれば、自動的にそのメニュー項目のこのプロパティは偽に + 設定されます。
+ +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_children.html b/docs/kr2doc/contents/f_MenuItem_children.html new file mode 100644 index 0000000..4e02034 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_children.html @@ -0,0 +1,37 @@ + + + + + + + children - 子メニュー項目 + + + + + + + + + +

MenuItem.children

+
+
機能/意味
+
+子メニュー項目
+
タイプ
+
+MenuItemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  子メニュー項目がリストされた配列オブジェクトを表します。
+  ここで得られた配列に値を書き込んだり、項目の削除や追加などをしても実際のメニュー項目の状態には反映されません。読み取りのみが行えると考えてください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_enabled.html b/docs/kr2doc/contents/f_MenuItem_enabled.html new file mode 100644 index 0000000..caaa3b1 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_enabled.html @@ -0,0 +1,37 @@ + + + + + + + enabled - 選択可能かどうか + + + + + + + + + +

MenuItem.enabled

+
+
機能/意味
+
+選択可能かどうか
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  メニュー項目を選択可能かどうかを表します。値を設定することもできます。
+  真の場合はメニュー項目が選択可能、偽の場合は選択不可能になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_group.html b/docs/kr2doc/contents/f_MenuItem_group.html new file mode 100644 index 0000000..ce7b319 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_group.html @@ -0,0 +1,40 @@ + + + + + + + group - グループ番号 + + + + + + + + + +

MenuItem.group

+
+
機能/意味
+
+グループ番号
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  グループ番号を表します。値を設定することもできます。
+  同じグループ番号を持ち、かつ同じ親を持ち、MenuItem.radio プロパティが + 真のメニュー項目は、MenuItem.checked プロパティを同時に二つ以上を + 真にすることはできません。
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_index.html b/docs/kr2doc/contents/f_MenuItem_index.html new file mode 100644 index 0000000..f53055a --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_index.html @@ -0,0 +1,39 @@ + + + + + + + index - 順番 + + + + + + + + + +

MenuItem.index

+
+
機能/意味
+
+順番
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  同じ親を持つメニュー項目間における順番を表す、0または正の整数です。
+  0が先頭を表します。
+  現在位置を取得したり、位置を変更するときに便利です。
+  値を設定すると、その位置にメニュー項目が移動します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_insert.html b/docs/kr2doc/contents/f_MenuItem_insert.html new file mode 100644 index 0000000..40fd050 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_insert.html @@ -0,0 +1,55 @@ + + + + + + + insert - 子メニュー項目の挿入 + + + + + + + + + +

MenuItem.insert

+
+
機能/意味
+
+子メニュー項目の挿入
+
タイプ
+
+MenuItemクラスのメソッド
+
+
構文
+
+insert(item, index)
+
+
引数
+
+ + + + + +
item  挿入する子メニュー項目を指定します。
+
index  挿入する位置を指定します。0 を指定すると先頭に挿入されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  子メニュー項目を指定位置に挿入します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_onClick.html b/docs/kr2doc/contents/f_MenuItem_onClick.html new file mode 100644 index 0000000..9bf218d --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_onClick.html @@ -0,0 +1,44 @@ + + + + + + + onClick - メニュー項目が選択された + + + + + + + + + +

MenuItem.onClick

+
+
機能/意味
+
+メニュー項目が選択された
+
タイプ
+
+MenuItemクラスのイベント
+
+
構文
+
+onClick()
+
+
引数
+
+なし
+
+
説明
+
+  メニュー項目が選択された ( クリックされたり Enter キーが押された ) 時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_parent.html b/docs/kr2doc/contents/f_MenuItem_parent.html new file mode 100644 index 0000000..ca68c8a --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_parent.html @@ -0,0 +1,36 @@ + + + + + + + parent - 親メニュー項目 + + + + + + + + + +

MenuItem.parent

+
+
機能/意味
+
+親メニュー項目
+
タイプ
+
+MenuItemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  親メニュー項目を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_popup.html b/docs/kr2doc/contents/f_MenuItem_popup.html new file mode 100644 index 0000000..58936a7 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_popup.html @@ -0,0 +1,84 @@ + + + + + + + popup - メニュー項目のポップアップ表示 + + + + + + + + + +

MenuItem.popup

+
+
機能/意味
+
+メニュー項目のポップアップ表示
+
タイプ
+
+MenuItemクラスのメソッド
+
+
構文
+
+popup(flags, x, y)
+
+
引数
+
+ + + + + + + +
flags メニューの挙動を表すフラグです。以下の値のビット論理和を指定してください。
+ tpmLeftButton
+ tpmRightButton
+ tpmLeftAlign
+ tpmCenterAlign
+ tpmRightAlign
+ tpmTopAlign
+ tpmVCenterAlign
+ tpmBottomAlign
+ tpmHorizontal
+ tpmVertical
+ tpmNoNotify
+ tpmReturnCmd
+ tpmRecurse
+ tpmHorPosAnimation
+ tpmHorNegAnimation
+ tpmVerPosAnimation
+ tpmVerNegAnimation
+ tpmNoAnimation
+ これらのフラグの詳細についてはMSDNの該当ページを参照してください。 + +
x ウィンドウのクライアント座標上でのx位置を表します。 +
y ウィンドウのクライアント座標上でのy位置を表します。 +
+
+
戻り値
+
+flagsにtpmReturnCmdが指定されていた場合は、 + 選択されたメニュー項目のIDを整数で返します(ただし、現バージョンではこのIDを吉里吉里側から設定することができないため、flagsにtpmReturnCmdを指定することは意味がありません)。 + 何も選択されずにキャンセルされた場合は0を返します。 +
+
説明
+
+ メニュー項目をポップアップ表示します。このメソッドは、メニューが閉じられるまで帰ってきません。
+ メニューが閉じられるまでの間に他の非同期イベントが発生する可能性があるので注意してください。
+ Window.menuそのものはポップアップできません。
+ 非表示状態のメニュー項目はポップアップできません。
+ Window.menuの子でないメニューはポップアップできません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_radio.html b/docs/kr2doc/contents/f_MenuItem_radio.html new file mode 100644 index 0000000..0831729 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_radio.html @@ -0,0 +1,38 @@ + + + + + + + radio - ラジオ項目かどうか + + + + + + + + + +

MenuItem.radio

+
+
機能/意味
+
+ラジオ項目かどうか
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ラジオ項目かどうかを指定します。値を設定することもできます。
+  この項目が真の場合の動作については MenuItem.checked プロパティを + 参照してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_remove.html b/docs/kr2doc/contents/f_MenuItem_remove.html new file mode 100644 index 0000000..f00fbbc --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_remove.html @@ -0,0 +1,52 @@ + + + + + + + remove - 子メニュー項目の削除 + + + + + + + + + +

MenuItem.remove

+
+
機能/意味
+
+子メニュー項目の削除
+
タイプ
+
+MenuItemクラスのメソッド
+
+
構文
+
+remove(item)
+
+
引数
+
+ + + +
item  削除する子メニュー項目を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定された子メニュー項目をリストから削除します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_root.html b/docs/kr2doc/contents/f_MenuItem_root.html new file mode 100644 index 0000000..0c083a3 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_root.html @@ -0,0 +1,36 @@ + + + + + + + root - ルートメニュー項目 + + + + + + + + + +

MenuItem.root

+
+
機能/意味
+
+ルートメニュー項目
+
タイプ
+
+MenuItemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ルート(大本)のメニュー項目(MenuItemクラスのインスタンス)を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_shortcut.html b/docs/kr2doc/contents/f_MenuItem_shortcut.html new file mode 100644 index 0000000..46de8ca --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_shortcut.html @@ -0,0 +1,51 @@ + + + + + + + shortcut - ショートカットキー + + + + + + + + + +

MenuItem.shortcut

+
+
機能/意味
+
+ショートカットキー
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ショートカットキーを表します。値を設定することもできます。
+  ショートカットキーは文字列で指定します。「シフト系キー+対象キー名」の組み合わせで + 指定します。大文字と小文字は区別されません。以下は有効なショートカットキーの例です。
+
+ "Shift+Esc"
+ "Ctrl+S"
+ "Shift+Alt+E"
+ "Alt+Enter"
+ "Ctrl+F1"
+ "T" (シフト系キーの指定をしないこともできます)
+
+  無効なショートカットキーの組み合わせや、"" (空文字列) を指定するとショートカットキーは無効になります。
+  現バージョンでは、Tab や Shift+F1 など、システムや吉里吉里であらかじめ用途の決まっているキーの一部や、一部のキー + (Shiftキーそのものなど)を指定しても反応しません。
+  ショートカットキーを指定すると、そのキーに対応する onKeyDown 等のイベントは発生しなくなり、ショートカットキーを + 指定したメニュー項目にのみイベントが発生するようになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_visible.html b/docs/kr2doc/contents/f_MenuItem_visible.html new file mode 100644 index 0000000..9baf1c7 --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 可視かどうか + + + + + + + + + +

MenuItem.visible

+
+
機能/意味
+
+可視かどうか
+
タイプ
+
+MenuItemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  メニュー項目が可視かどうかを表します。値を設定することもできます。
+  真ならば表示され、偽ならば非表示です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_MenuItem_window.html b/docs/kr2doc/contents/f_MenuItem_window.html new file mode 100644 index 0000000..f965b1f --- /dev/null +++ b/docs/kr2doc/contents/f_MenuItem_window.html @@ -0,0 +1,36 @@ + + + + + + + window - オーナーウィンドウ + + + + + + + + + +

MenuItem.window

+
+
機能/意味
+
+オーナーウィンドウ
+
タイプ
+
+MenuItemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  このメニューアイテムを保持するオーナーウィンドウ(Windowクラスのオブジェクト)を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad.html b/docs/kr2doc/contents/f_Pad.html new file mode 100644 index 0000000..28b0b36 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad.html @@ -0,0 +1,64 @@ + + + + + + + Pad + + + + + + + + +

Pad

+ Pad クラスは、簡単なテキストエディタの機能を提供するクラスです。
+

メンバ

+
+
コンストラクタ
+
+Pad
+
+
メソッド
+
+なし +
+
プロパティ
+
+borderStyle ( ウィンドウ外見 )
+color ( 背景色 )
+fileName ( ファイル名 )
+fontBold ( 太字 )
+fontColor ( フォントの色 )
+fontFace ( フォント名 )
+fontHeight ( フォントの高さ )
+fontItalic ( 斜体 )
+fontSize ( フォントのサイズ )
+fontStrikeOut ( 取消線 )
+fontUnderline ( アンダーライン )
+height ( ウィンドウの高さ )
+left ( ウィンドウの左端位置 )
+readOnly ( 読み込み専用かどうか )
+showScrollBars ( スクロールバーの表示状態 )
+showStatusBar ( ステータスバーを表示するかどうか )
+statusText ( ステータスバーに表示するテキスト )
+text ( 内容 )
+title ( タイトル )
+top ( ウィンドウの上端位置 )
+visible ( 表示されているかどうか )
+width ( ウィンドウの幅 )
+wordWrap ( 右端で折り返すかどうか )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_Pad.html b/docs/kr2doc/contents/f_Pad_Pad.html new file mode 100644 index 0000000..c5c7525 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_Pad.html @@ -0,0 +1,48 @@ + + + + + + + Pad - Pad オブジェクトの構築 + + + + + + + + + +

Pad.Pad

+
+
機能/意味
+
+Pad オブジェクトの構築
+
タイプ
+
+Padクラスのコンストラクタ
+
+
構文
+
+Pad()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Pad クラスのオブジェクトを構築します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_borderStyle.html b/docs/kr2doc/contents/f_Pad_borderStyle.html new file mode 100644 index 0000000..7a23a27 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_borderStyle.html @@ -0,0 +1,37 @@ + + + + + + + borderStyle - ウィンドウ外見 + + + + + + + + + +

Pad.borderStyle

+
+
機能/意味
+
+ウィンドウ外見
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの外見を表します。値を設定することもできます。
+  指定可能な値についてはWindow.borderStyleを参照してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_color.html b/docs/kr2doc/contents/f_Pad_color.html new file mode 100644 index 0000000..f038ada --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_color.html @@ -0,0 +1,36 @@ + + + + + + + color - 背景色 + + + + + + + + + +

Pad.color

+
+
機能/意味
+
+背景色
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パッドの背景色を 0xRRGGBB 形式で表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fileName.html b/docs/kr2doc/contents/f_Pad_fileName.html new file mode 100644 index 0000000..ccebb1b --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fileName.html @@ -0,0 +1,37 @@ + + + + + + + fileName - ファイル名 + + + + + + + + + +

Pad.fileName

+
+
機能/意味
+
+ファイル名
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パッドの内容を保存するファイル名を表します。値を設定することもできます。
+  パッドを右クリックして「保存...」を選択すると、デフォルトでこのファイル名が指定されるようになります。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontBold.html b/docs/kr2doc/contents/f_Pad_fontBold.html new file mode 100644 index 0000000..52e01ed --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontBold.html @@ -0,0 +1,38 @@ + + + + + + + fontBold - 太字 + + + + + + + + + +

Pad.fontBold

+
+
機能/意味
+
+太字
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントを太字にするかどうかを表します。値を設定することもできます。
+  この設定は、編集領域すべての文字に影響します。
+  デフォルトは偽です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontColor.html b/docs/kr2doc/contents/f_Pad_fontColor.html new file mode 100644 index 0000000..8d5e301 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontColor.html @@ -0,0 +1,37 @@ + + + + + + + fontColor - フォントの色 + + + + + + + + + +

Pad.fontColor

+
+
機能/意味
+
+フォントの色
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントの色を0xRRGGBB形式で表します。値を設定することもできます。
+  デフォルトは0xffffff(白)です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontFace.html b/docs/kr2doc/contents/f_Pad_fontFace.html new file mode 100644 index 0000000..417750f --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontFace.html @@ -0,0 +1,37 @@ + + + + + + + fontFace - フォント名 + + + + + + + + + +

Pad.fontFace

+
+
機能/意味
+
+フォント名
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォント名を表します。値を設定することもできます。
+  デフォルトは"MS 明朝"です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontHeight.html b/docs/kr2doc/contents/f_Pad_fontHeight.html new file mode 100644 index 0000000..4d9da1b --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontHeight.html @@ -0,0 +1,37 @@ + + + + + + + fontHeight - フォントの高さ + + + + + + + + + +

Pad.fontHeight

+
+
機能/意味
+
+フォントの高さ
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントの高さをピクセル単位で指定します。値を設定することもできます。
+  デフォルトは12です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontItalic.html b/docs/kr2doc/contents/f_Pad_fontItalic.html new file mode 100644 index 0000000..9ddb5cc --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontItalic.html @@ -0,0 +1,38 @@ + + + + + + + fontItalic - 斜体 + + + + + + + + + +

Pad.fontItalic

+
+
機能/意味
+
+斜体
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントを斜体にするかどうかを表します。値を設定することもできます。
+  この設定は、編集領域すべての文字に影響します。
+  デフォルトは偽です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontSize.html b/docs/kr2doc/contents/f_Pad_fontSize.html new file mode 100644 index 0000000..56eb1e9 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontSize.html @@ -0,0 +1,37 @@ + + + + + + + fontSize - フォントのサイズ + + + + + + + + + +

Pad.fontSize

+
+
機能/意味
+
+フォントのサイズ
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントの大きさポイント単位で指定します。値を設定することもできます。
+  デフォルトは9です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontStrikeOut.html b/docs/kr2doc/contents/f_Pad_fontStrikeOut.html new file mode 100644 index 0000000..9cbac1b --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontStrikeOut.html @@ -0,0 +1,38 @@ + + + + + + + fontStrikeOut - 取消線 + + + + + + + + + +

Pad.fontStrikeOut

+
+
機能/意味
+
+取消線
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントに取消線を引くかどうかを表します。値を設定することもできます。
+  この設定は、編集領域すべての文字に影響します。
+  デフォルトは偽です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_fontUnderline.html b/docs/kr2doc/contents/f_Pad_fontUnderline.html new file mode 100644 index 0000000..3d4937a --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_fontUnderline.html @@ -0,0 +1,38 @@ + + + + + + + fontUnderline - アンダーライン + + + + + + + + + +

Pad.fontUnderline

+
+
機能/意味
+
+アンダーライン
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォントにアンダーラインを引くかどうかを表します。値を設定することもできます。
+  この設定は、編集領域すべての文字に影響します。
+  デフォルトは偽です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_height.html b/docs/kr2doc/contents/f_Pad_height.html new file mode 100644 index 0000000..4217998 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_height.html @@ -0,0 +1,36 @@ + + + + + + + height - ウィンドウの高さ + + + + + + + + + +

Pad.height

+
+
機能/意味
+
+ウィンドウの高さ
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの高さを表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_left.html b/docs/kr2doc/contents/f_Pad_left.html new file mode 100644 index 0000000..6c38b9e --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_left.html @@ -0,0 +1,36 @@ + + + + + + + left - ウィンドウの左端位置 + + + + + + + + + +

Pad.left

+
+
機能/意味
+
+ウィンドウの左端位置
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの左端位置を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_readOnly.html b/docs/kr2doc/contents/f_Pad_readOnly.html new file mode 100644 index 0000000..1d502c6 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_readOnly.html @@ -0,0 +1,37 @@ + + + + + + + readOnly - 読み込み専用かどうか + + + + + + + + + +

Pad.readOnly

+
+
機能/意味
+
+読み込み専用かどうか
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  内容が読み込み専用かどうかを表します。値を設定することもできます。
+  真を指定すると内容の編集はできなくなりますが、textプロパティでのテキストの設定はできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_showScrollBars.html b/docs/kr2doc/contents/f_Pad_showScrollBars.html new file mode 100644 index 0000000..602856f --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_showScrollBars.html @@ -0,0 +1,42 @@ + + + + + + + showScrollBars - スクロールバーの表示状態 + + + + + + + + + +

Pad.showScrollBars

+
+
機能/意味
+
+スクロールバーの表示状態
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  スクロールバーの表示状態を表します。
+ 以下のいずれかの値を採ることができます。
+ ssNone スクロールバーを表示しない
+ ssHorizontal 水平スクロールバーのみを表示する
+ ssVertical 垂直スクロールバーのみを表示する
+ ssBoth 水平・垂直両方のスクロールバーを表示する
+ デフォルトはssBothです。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_showStatusBar.html b/docs/kr2doc/contents/f_Pad_showStatusBar.html new file mode 100644 index 0000000..b75e402 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_showStatusBar.html @@ -0,0 +1,37 @@ + + + + + + + showStatusBar - ステータスバーを表示するかどうか + + + + + + + + + +

Pad.showStatusBar

+
+
機能/意味
+
+ステータスバーを表示するかどうか
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ステータスバーを表示するかどうかを表します。値を設定することもできます。
+ デフォルトは真です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_statusText.html b/docs/kr2doc/contents/f_Pad_statusText.html new file mode 100644 index 0000000..fbfdcfc --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_statusText.html @@ -0,0 +1,36 @@ + + + + + + + statusText - ステータスバーに表示するテキスト + + + + + + + + + +

Pad.statusText

+
+
機能/意味
+
+ステータスバーに表示するテキスト
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ステータスバーに表示するテキストを表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_text.html b/docs/kr2doc/contents/f_Pad_text.html new file mode 100644 index 0000000..2b0b652 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_text.html @@ -0,0 +1,36 @@ + + + + + + + text - 内容 + + + + + + + + + +

Pad.text

+
+
機能/意味
+
+内容
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パッドの内容(テキストエディタの内容)を表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_title.html b/docs/kr2doc/contents/f_Pad_title.html new file mode 100644 index 0000000..9c89bb0 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_title.html @@ -0,0 +1,36 @@ + + + + + + + title - タイトル + + + + + + + + + +

Pad.title

+
+
機能/意味
+
+タイトル
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パッドのタイトル(ウィンドウのタイトル)を表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_top.html b/docs/kr2doc/contents/f_Pad_top.html new file mode 100644 index 0000000..52087e5 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_top.html @@ -0,0 +1,36 @@ + + + + + + + top - ウィンドウの上端位置 + + + + + + + + + +

Pad.top

+
+
機能/意味
+
+ウィンドウの上端位置
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの上端位置を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_visible.html b/docs/kr2doc/contents/f_Pad_visible.html new file mode 100644 index 0000000..1eac085 --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 表示されているかどうか + + + + + + + + + +

Pad.visible

+
+
機能/意味
+
+表示されているかどうか
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パッドが表示されているかどうかを表します。値を設定することもできます。
+  真を指定すると表示されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_width.html b/docs/kr2doc/contents/f_Pad_width.html new file mode 100644 index 0000000..e8e1bdd --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_width.html @@ -0,0 +1,36 @@ + + + + + + + width - ウィンドウの幅 + + + + + + + + + +

Pad.width

+
+
機能/意味
+
+ウィンドウの幅
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの幅を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Pad_wordWrap.html b/docs/kr2doc/contents/f_Pad_wordWrap.html new file mode 100644 index 0000000..a8f59ef --- /dev/null +++ b/docs/kr2doc/contents/f_Pad_wordWrap.html @@ -0,0 +1,41 @@ + + + + + + + wordWrap - 右端で折り返すかどうか + + + + + + + + + +

Pad.wordWrap

+
+
機能/意味
+
+右端で折り返すかどうか
+
タイプ
+
+Padクラスのプロパティ (読み書き可能)
+
+
説明
+
+  内容を右端で折り返すかどうかを表します。値を設定することもできます。
+ 真にすると、文字列表示領域の右端で文字列が自動的に折り返されます。
+ ただし、文字としての改行コードが挿入されるわけではなく、 + あくまで表示上改行されるだけです。この場合、水平スクロールバーは無効になります。
+ 偽の場合、表示領域を超える文字列があっても折り返されません。
+ デフォルトは偽です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Plugins.html b/docs/kr2doc/contents/f_Plugins.html new file mode 100644 index 0000000..bf57060 --- /dev/null +++ b/docs/kr2doc/contents/f_Plugins.html @@ -0,0 +1,45 @@ + + + + + + + Plugins + + + + + + + + +

Plugins

+ Plugins クラスは プラグインに関する管理を行うクラスです。このクラスからオブジェクトを作成することはできません。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+getList ( リストの取得 )
+link ( プラグインの接続 )
+unlink ( プラグインの切り離し )
+
+
プロパティ
+
+なし +
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Plugins_getList.html b/docs/kr2doc/contents/f_Plugins_getList.html new file mode 100644 index 0000000..d8a5931 --- /dev/null +++ b/docs/kr2doc/contents/f_Plugins_getList.html @@ -0,0 +1,47 @@ + + + + + + + getList - リストの取得 + + + + + + + + + +

Plugins.getList

+
+
機能/意味
+
+リストの取得
+
タイプ
+
+Pluginsクラスのメソッド
+
+
構文
+
+getList()
+
+
引数
+
+なし
+
+
戻り値
+
+リンクされているプラグイン名が格納された配列
+
説明
+
+  プラグインのリストを取得します。返される配列は、リンクした順番でプラグイン名が列挙された物です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Plugins_link.html b/docs/kr2doc/contents/f_Plugins_link.html new file mode 100644 index 0000000..d3c17ad --- /dev/null +++ b/docs/kr2doc/contents/f_Plugins_link.html @@ -0,0 +1,52 @@ + + + + + + + link - プラグインの接続 + + + + + + + + + +

Plugins.link

+
+
機能/意味
+
+プラグインの接続
+
タイプ
+
+Pluginsクラスのメソッド
+
+
構文
+
+link(name)
+
+
引数
+
+ + + +
name  接続するプラグインを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたプラグインを吉里吉里本体に接続します ( 読み込みます )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Plugins_unlink.html b/docs/kr2doc/contents/f_Plugins_unlink.html new file mode 100644 index 0000000..5c8824f --- /dev/null +++ b/docs/kr2doc/contents/f_Plugins_unlink.html @@ -0,0 +1,52 @@ + + + + + + + unlink - プラグインの切り離し + + + + + + + + + +

Plugins.unlink

+
+
機能/意味
+
+プラグインの切り離し
+
タイプ
+
+Pluginsクラスのメソッド
+
+
構文
+
+unlink(name)
+
+
引数
+
+ + + +
name  切り離すプラグインを指定します。
+
+
+
戻り値
+
+ 切り離しに成功すれば真、失敗すれば偽
+
説明
+
+  指定されたプラグインを切り離します。
+  プラグインの中には、解放に応じない物もあります ( オブジェクトが使用中の時など )。解放に応じず、失敗すれば偽が返ります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts.html b/docs/kr2doc/contents/f_Scripts.html new file mode 100644 index 0000000..deb3e21 --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts.html @@ -0,0 +1,48 @@ + + + + + + + Scripts + + + + + + + + +

Scripts

+ Scripts クラスは TJS2 に関するメソッドやプロパティを管理します。このクラスからオブジェクトを作成することはできません。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+dump ( コンテキストのダンプ )
+eval ( 式の評価 )
+evalStorage ( ストレージ上の式の評価 )
+exec ( スクリプトの実行 )
+execStorage ( ストレージ上のスクリプトの実行 )
+getTraceString ( 呼び出し履歴の取得 )
+
+
プロパティ
+
+なし +
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_dump.html b/docs/kr2doc/contents/f_Scripts_dump.html new file mode 100644 index 0000000..48921d0 --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_dump.html @@ -0,0 +1,51 @@ + + + + + + + dump - コンテキストのダンプ + + + + + + + + + +

Scripts.dump

+
+
機能/意味
+
+コンテキストのダンプ
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+dump()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  現時点で TJS2 に読み込まれているスクリプトブロック内の各コンテキストの内容の詳細を + ローカルファイルに出力します。主に VM コードの逆アセンブル結果が出力されます。
+  出力ファイルは、吉里吉里の実行可能ファイルと同じフォルダに出力され、そのファイル名は + 吉里吉里の実行可能ファイルに .dump.txt が付加されたものになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_eval.html b/docs/kr2doc/contents/f_Scripts_eval.html new file mode 100644 index 0000000..026dbff --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_eval.html @@ -0,0 +1,58 @@ + + + + + + + eval - 式の評価 + + + + + + + + + +

Scripts.eval

+
+
機能/意味
+
+式の評価
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+eval(expression)
+
+
引数
+
+ + + +
expression  実行する式を文字列で指定します。
+
+
+
戻り値
+
+式を評価した結果が戻ります。
+
説明
+
+  expression で指定された文字列を TJS2 式として実行します。
+  スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの + 呼び出し側で捕捉することができます。
+
+
参照
+
+Scripts.execStorage
+Scripts.exec
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_evalStorage.html b/docs/kr2doc/contents/f_Scripts_evalStorage.html new file mode 100644 index 0000000..afd3a6f --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_evalStorage.html @@ -0,0 +1,57 @@ + + + + + + + evalStorage - ストレージ上の式の評価 + + + + + + + + + +

Scripts.evalStorage

+
+
機能/意味
+
+ストレージ上の式の評価
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+evalStorage(storage)
+
+
引数
+
+ + + +
storage  評価するストレージを指定します。
+
+
+
戻り値
+
+式を評価した結果が戻ります。
+
説明
+
+  指定されたストレージを読み込み、その内容を TJS2 式として評価します。
+  スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの + 呼び出し側で捕捉することができます。
+
+
参照
+
+Scripts.execStorage
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_exec.html b/docs/kr2doc/contents/f_Scripts_exec.html new file mode 100644 index 0000000..8942733 --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_exec.html @@ -0,0 +1,58 @@ + + + + + + + exec - スクリプトの実行 + + + + + + + + + +

Scripts.exec

+
+
機能/意味
+
+スクリプトの実行
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+exec(script)
+
+
引数
+
+ + + +
script  実行するスクリプトを文字列で指定します。
+
+
+
戻り値
+
+スクリプトを実行した結果が戻ります。
+
説明
+
+  script で指定された文字列を TJS2 スクリプトとして実行します。
+  スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの + 呼び出し側で捕捉することができます。
+
+
参照
+
+Scripts.execStorage
+Scripts.eval
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_execStorage.html b/docs/kr2doc/contents/f_Scripts_execStorage.html new file mode 100644 index 0000000..1cbcb8b --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_execStorage.html @@ -0,0 +1,57 @@ + + + + + + + execStorage - ストレージ上のスクリプトの実行 + + + + + + + + + +

Scripts.execStorage

+
+
機能/意味
+
+ストレージ上のスクリプトの実行
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+execStorage(storage)
+
+
引数
+
+ + + +
storage  実行するストレージを指定します。
+
+
+
戻り値
+
+スクリプトを実行した結果が戻ります。
+
説明
+
+  指定されたストレージを読み込み、その内容を TJS2 スクリプトとして実行します。
+  スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの + 呼び出し側で捕捉することができます。
+
+
参照
+
+Scripts.evalStorage
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Scripts_getTraceString.html b/docs/kr2doc/contents/f_Scripts_getTraceString.html new file mode 100644 index 0000000..ebaac95 --- /dev/null +++ b/docs/kr2doc/contents/f_Scripts_getTraceString.html @@ -0,0 +1,53 @@ + + + + + + + getTraceString - 呼び出し履歴の取得 + + + + + + + + + +

Scripts.getTraceString

+
+
機能/意味
+
+呼び出し履歴の取得
+
タイプ
+
+Scriptsクラスのメソッド
+
+
構文
+
+getTraceString(limit=0)
+
+
引数
+
+ + + +
limit  履歴を取得する最大呼び出し深さを指定します。この引数を省略するか 0 を指定すると、取得できる限りの履歴を取得します。
+
+
+
戻り値
+
+呼び出し履歴を文字列化した物
+
説明
+
+  メソッドの呼び出し履歴を文字列として取得します。このメソッドが呼ばれた時点での履歴を取得することができます。
+  このメソッドを使用するには、コマンドラインオプションで -debug (デバッグモード) が有効になっていなければなりません。デバッグモードが無効の場合はこのメソッドは空文字列を返します。
+  返される文字列はたとえば 'messagelayer.tjs(1561)[(function) addButton] <-- mainwindow.tjs(4463)[(function expression) (anonymous)] <-- conductor.tjs(427)[(function) onTag] <-- conductor.tjs(95)[(function) timerCallback]' のような物です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages.html b/docs/kr2doc/contents/f_Storages.html new file mode 100644 index 0000000..a0c6efd --- /dev/null +++ b/docs/kr2doc/contents/f_Storages.html @@ -0,0 +1,54 @@ + + + + + + + Storages + + + + + + + + +

Storages

+ Storages クラスは 吉里吉里本体のストレージシステムに関するメソッドやプロパティを持ったクラスです。このクラスからオブジェクトを作成することはできません。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+addAutoPath ( 自動検索パスへの追加 )
+chopStorageExt ( ストレージ名の拡張子の切り落とし )
+extractStorageExt ( ストレージ名の拡張子の抽出 )
+extractStorageName ( ストレージ名の抽出 )
+extractStoragePath ( ストレージ名のパスの抽出 )
+getFullPath ( 完全な統一ストレージ名の取得 )
+getLocalName ( ローカルファイル名の取得 )
+getPlacedPath ( ストレージの検索 )
+isExistentStorage ( ストレージの存在確認 )
+removeAutoPath ( 自動検索パスの削除 )
+searchCD ( CD の検索 )
+selectFile ( ファイル選択ダイアログボックスを表示 )
+
+
プロパティ
+
+なし +
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_addAutoPath.html b/docs/kr2doc/contents/f_Storages_addAutoPath.html new file mode 100644 index 0000000..6200787 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_addAutoPath.html @@ -0,0 +1,63 @@ + + + + + + + addAutoPath - 自動検索パスへの追加 + + + + + + + + + +

Storages.addAutoPath

+
+
機能/意味
+
+自動検索パスへの追加
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+addAutoPath(path)
+
+
引数
+
+ + + +
path  自動検索パスに追加するパスを指定します。
+  パスの最後は、アーカイブ内のルートフォルダを指定するときは '>'、通常のフォルダを + 指定するときは '/' で終わる必要があります + ( 例 : "Archive/arc.xp3>""System/" ) 。
+  2.19 beta 14 よりアーカイブの区切り文字が '#' から '>' に変わりました。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  自動検索パスに、指定したパスを追加します。吉里吉里は、利用可能なストレージを + 検索するとき、この自動検索パスに登録されたパスを探します。
+  自動検索パスは、後に指定したものがより優先されて検索されます。
+  また、プロジェクトフォルダはもっとも優先されて検索されます。
+
+
参照
+
+Storages.removeAutoPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_chopStorageExt.html b/docs/kr2doc/contents/f_Storages_chopStorageExt.html new file mode 100644 index 0000000..822eb40 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_chopStorageExt.html @@ -0,0 +1,57 @@ + + + + + + + chopStorageExt - ストレージ名の拡張子の切り落とし + + + + + + + + + +

Storages.chopStorageExt

+
+
機能/意味
+
+ストレージ名の拡張子の切り落とし
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+chopStorageExt(storage)
+
+
引数
+
+ + + +
storage  拡張子部分を切り落としたいストレージ名を指定します。
+
+
+
戻り値
+
+拡張子部分が切り落とされたストレージ名が返ります。
+
説明
+
+  指定されたストレージ名から拡張子の部分を切り落として返します。
+  たとえば "file://home/dee/hoge.txt" を渡した場合、"file://home/dee/hoge" が返 + ります。 +
+
参照
+
+Storages.extractStorageExt
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_extractStorageExt.html b/docs/kr2doc/contents/f_Storages_extractStorageExt.html new file mode 100644 index 0000000..1d9d75d --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_extractStorageExt.html @@ -0,0 +1,58 @@ + + + + + + + extractStorageExt - ストレージ名の拡張子の抽出 + + + + + + + + + +

Storages.extractStorageExt

+
+
機能/意味
+
+ストレージ名の拡張子の抽出
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+extractStorageExt(storage)
+
+
引数
+
+ + + +
storage  拡張子部分を抽出したいストレージ名を指定します。
+
+
+
戻り値
+
+拡張子部分が返ります。拡張子部分は . (ドット)も含みます。拡張子が + なかった場合は空文字列が返ります。
+
説明
+
+  指定されたストレージ名から拡張子の部分を抽出して返します。
+
+
参照
+
+Storages.extractStorageName
+Storages.extractStoragePath
+Storages.chopStorageExt
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_extractStorageName.html b/docs/kr2doc/contents/f_Storages_extractStorageName.html new file mode 100644 index 0000000..09e2a7a --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_extractStorageName.html @@ -0,0 +1,57 @@ + + + + + + + extractStorageName - ストレージ名の抽出 + + + + + + + + + +

Storages.extractStorageName

+
+
機能/意味
+
+ストレージ名の抽出
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+extractStorageName(storage)
+
+
引数
+
+ + + +
storage  ストレージ名を抽出したいストレージ名を指定します。
+
+
+
戻り値
+
+ストレージ名が返ります。ストレージ名がなかった場合は空文字列が返ります。
+
説明
+
+  指定されたストレージ名から、ストレージ名の部分 ( パスを除く ) を抽出して返します。
+  たとえば "System/hoge.txt" を渡した場合、"hoge.txt" が返ります。
+
+
参照
+
+Storages.extractStorageExt
+Storages.extractStoragePath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_extractStoragePath.html b/docs/kr2doc/contents/f_Storages_extractStoragePath.html new file mode 100644 index 0000000..757dc52 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_extractStoragePath.html @@ -0,0 +1,58 @@ + + + + + + + extractStoragePath - ストレージ名のパスの抽出 + + + + + + + + + +

Storages.extractStoragePath

+
+
機能/意味
+
+ストレージ名のパスの抽出
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+extractStoragePath(storage)
+
+
引数
+
+ + + +
storage  パスを抽出したいストレージ名を指定します。
+
+
+
戻り値
+
+パスが返ります。パスがなかった場合は空文字列が返ります。
+
説明
+
+  指定されたストレージ名から、パスの部分を抽出して返します。
+  たとえば "file://home/dee/hoge.txt" を渡した場合、"file://home/dee/" が + 返ります。
+
+
参照
+
+Storages.extractStorageExt
+Storages.extractStorageName
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_getFullPath.html b/docs/kr2doc/contents/f_Storages_getFullPath.html new file mode 100644 index 0000000..2612018 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_getFullPath.html @@ -0,0 +1,57 @@ + + + + + + + getFullPath - 完全な統一ストレージ名の取得 + + + + + + + + + +

Storages.getFullPath

+
+
機能/意味
+
+完全な統一ストレージ名の取得
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+getFullPath(path)
+
+
引数
+
+ + + +
path  完全な統一ストレージ名にしたいストレージ名を指定します。
+
+
+
戻り値
+
+完全な統一ストレージ名
+
説明
+
+  path で指定されたストレージ名を完全な統一ストレージ名に変換します。
+  冗長なパスアクセス ( たとえば system/flags/../data/ など ) はすべて圧縮されます。
+  カレントメディア、カレントフォルダが指定されていなければ、補完します。
+
+
参照
+
+Storages.getPlacedPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_getLocalName.html b/docs/kr2doc/contents/f_Storages_getLocalName.html new file mode 100644 index 0000000..4d6d0c0 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_getLocalName.html @@ -0,0 +1,52 @@ + + + + + + + getLocalName - ローカルファイル名の取得 + + + + + + + + + +

Storages.getLocalName

+
+
機能/意味
+
+ローカルファイル名の取得
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+getLocalName(path)
+
+
引数
+
+ + + +
path  ローカルファイル名 に変換したい統一ストレージ名を指定します。
+
+
+
戻り値
+
+ローカルファイル名が返ります。ローカルファイル名に変換できなかった場合は空文字が返るか、 + 例外が発生します。
+
説明
+
+  指定された統一ストレージ名を、OS ネイティブの形式 ( ローカルファイル名 ) に変換して返します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_getPlacedPath.html b/docs/kr2doc/contents/f_Storages_getPlacedPath.html new file mode 100644 index 0000000..e0083fa --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_getPlacedPath.html @@ -0,0 +1,56 @@ + + + + + + + getPlacedPath - ストレージの検索 + + + + + + + + + +

Storages.getPlacedPath

+
+
機能/意味
+
+ストレージの検索
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+getPlacedPath(storage)
+
+
引数
+
+ + + +
storage  検索したいストレージ名を指定します。
+
+
+
戻り値
+
+発見された場所が統一ストレージ名で返ります。見つからなかった場合は空文字列が返ります。
+
説明
+
+  storage で指定されたストレージを自動検索パスから検索します。
+
+
参照
+
+Storages.getFullPath
+Storages.isExistentStorage
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_isExistentStorage.html b/docs/kr2doc/contents/f_Storages_isExistentStorage.html new file mode 100644 index 0000000..078a711 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_isExistentStorage.html @@ -0,0 +1,56 @@ + + + + + + + isExistentStorage - ストレージの存在確認 + + + + + + + + + +

Storages.isExistentStorage

+
+
機能/意味
+
+ストレージの存在確認
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+isExistentStorage(storage)
+
+
引数
+
+ + + +
storage  存在を確認したいストレージ名を指定します。
+
+
+
戻り値
+
+存在を確認できれば真、なければ偽が返ります。
+
説明
+
+  storage で指定したストレージが存在するかどうかを確認します。getPlacedPath を用いるよりは高速 + です。
+
+
参照
+
+Storages.getPlacedPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_removeAutoPath.html b/docs/kr2doc/contents/f_Storages_removeAutoPath.html new file mode 100644 index 0000000..5fb4555 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_removeAutoPath.html @@ -0,0 +1,56 @@ + + + + + + + removeAutoPath - 自動検索パスの削除 + + + + + + + + + +

Storages.removeAutoPath

+
+
機能/意味
+
+自動検索パスの削除
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+removeAutoPath(path)
+
+
引数
+
+ + + +
path  自動検索から削除するパスを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  自動検索パスから、指定したパスを削除します。
+
+
参照
+
+Storages.addAutoPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_searchCD.html b/docs/kr2doc/contents/f_Storages_searchCD.html new file mode 100644 index 0000000..0018efa --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_searchCD.html @@ -0,0 +1,53 @@ + + + + + + + searchCD - CD の検索 + + + + + + + + + +

Storages.searchCD

+
+
機能/意味
+
+CD の検索
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+searchCD(volume)
+
+
引数
+
+ + + +
volume  検索するCDのボリュームラベルを指定します。
+
+
+
戻り値
+
+見つかった CD-ROM ドライブのドライブ文字が返ります。
+
説明
+
+  指定されたボリュームラベルを持つ CD ドライブを探して、そのドライブ文字 ( 'H' など ) を返し + ます。
+  もちろん、ドライブには該当する CD-ROM が挿入されていなければなりません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Storages_selectFile.html b/docs/kr2doc/contents/f_Storages_selectFile.html new file mode 100644 index 0000000..8d32e17 --- /dev/null +++ b/docs/kr2doc/contents/f_Storages_selectFile.html @@ -0,0 +1,105 @@ + + + + + + + selectFile - ファイル選択ダイアログボックスを表示 + + + + + + + + + +

Storages.selectFile

+
+
機能/意味
+
+ファイル選択ダイアログボックスを表示
+
タイプ
+
+Storagesクラスのメソッド
+
+
構文
+
+selectFile(params)
+
+
引数
+
+ + + +
params  データの受け渡しに用いる辞書配列を指定します。
+  このメソッドに渡すとき、以下のメンバを指定することができます。また、 + いくつかのメンバはこのメソッドが終わると値が変更されます。
+
+
filter
 フィルタ文字列を配列で渡します。
+  フィルタ文字列は、フィルタの説明と フィルタを | (半角縦棒) で区切って指定 + するもので、フィルタにはワイルドカードを指定します。一つのフィルタに複数の + 拡張子が対応する場合は ; (半角セミコロン) で区切ります。
+  複数のフィルタを指定するには配列で指定します。
+  省略するとフィルタは用いません。
+
+ 例 :
+ ["画像ファイル(*.bmp;*.png;*.jpg;*.jpeg;*.eri;*.tlg)|*.bmp;*.png;*.jpg;*.jpeg;*.eri;*.tlg",
+ "スクリプトファイル(*.tjs;*.ks)|*.tjs;*.ks"]
+

+
filterIndex
 選択されているフィルタの番号 ( filter で指定したもの ) を指定します。
+  1 を指定すると、filter で指定された最初のフィルタが初期状態において + 選択されています。2 を指定すると2番目のフィルタが選択さている状態に + なります ( 0 から始まるインデックス番号ではないことに注意してください; + 先頭は 1 です )。
+  省略すると先頭のフィルタが選択されます。
+  また、ユーザが OK ボタンを押した場合、最後にダイアログボックス上で + 選ばれていたフィルタのインデックスがこのメンバに設定されます。
+

+
name
 ファイル名を指定します。省略したり、空文字列を指定すると初期状態ではなにもファイルを選択 + されていない状態にすることができます。
+  また、ユーザが OK ボタンを押した場合、選択されたファイルがこのメンバに + 設定されます。
+

+
initialDir
 初期状態で表示するフォルダを指定します。
+  省略するとカレントディレクトリが使用されます。
+

+
title
 ダイアログボックスのタイトルを表示します。
+  省略されるとデフォルトの「開く」や「名前を付けて保存」になります + ( save メンバの設定によります )。 +

+
save
 ダイアログボックスの種類を指定します。
+  false(デフォルト) の場合、「開く」のダイアログボックスが使われます。
+  true の場合、「名前を付けて保存」のダイアログボックスが使われます。
+

+
defaultExt
 デフォルトの拡張子を指定します。ユーザが拡張子を指定しなかった場合に + 自動的にこの拡張子を付加します。ここで指定する拡張子には . (ピリオド)を + 指定しないでください。
+  省略すると、拡張子が付加されることはありません。
+
+
+
戻り値
+
+ユーザがファイルを選択して OK ボタンを押せば真、キャンセルボタンを押せば偽が戻ります。
+
説明
+
+  ファイル選択ダイアログボックスを開きます。
+ 例:
var params = %[
+filter : [ "テキストファイル(*.txt)|*.txt", "バイナリファイル(*.bin)|*.bin" ],
+filterIndex : 1,
+name : "",
+initialDir : System.exePath,
+title : "ファイルを開く",
+save : false,
+];
+if(Storages.selectFile(params))
+System.inform("選択したファイルは : " + params.name);
+        
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System.html b/docs/kr2doc/contents/f_System.html new file mode 100644 index 0000000..8128fdd --- /dev/null +++ b/docs/kr2doc/contents/f_System.html @@ -0,0 +1,82 @@ + + + + + + + System + + + + + + + + +

System

+ System クラスは 吉里吉里本体や、吉里吉里が実行されている環境に関する情報を取得したり、設定したりするためのクラスです。このクラスからオブジェクトを作成することはできません。
+
+

メンバ

+
+
コンストラクタ
+
+なし +
+
メソッド
+
+addContinuousHandler ( Continuous ハンドラの追加 )
+assignMessage ( メッセージ割り当ての変更 )
+createAppLock ( 二重起動のチェック )
+createUUID ( UUID 文字列の生成 )
+doCompact ( メモリのコンパクト化 )
+exit ( 吉里吉里の同期終了 )
+getArgument ( コマンドラインオプションの取得 )
+getKeyState ( キー状態の取得 )
+getTickCount ( ティックカウントの取得 )
+inform ( メッセージの表示 )
+inputString ( 文字列の入力 )
+readRegValue ( レジストリの読み込み )
+removeContinuousHandler ( Continuous ハンドラの削除 )
+setArgument ( コマンドラインオプションの設定 )
+shellExecute ( ファイル/プログラムの実行 )
+terminate ( 吉里吉里の非同期終了 )
+toActualColor ( 色定数の実際の色の取得 )
+touchImages ( 画像のキャッシュへの読み込み )
+
+
プロパティ
+
+appDataPath ( ユーザのホームディレクトリのパス )
+dataPath ( データ保存場所のパス )
+desktopHeight ( デスクトップ高さ )
+desktopLeft ( デスクトップ左端位置 )
+desktopTop ( デスクトップ上端位置 )
+desktopWidth ( デスクトップ幅 )
+drawThreadNum ( 描画に使用するスレッドの数 )
+eventDisabled ( イベント配信が停止されているかどうか )
+exceptionHandler ( 捕捉されなかった例外のためのハンドラ関数 )
+exeName ( 吉里吉里本体のパス )
+exePath ( 吉里吉里本体のあるフォルダのパス )
+exitOnWindowClose ( メインウィンドウが閉じたときに終了するかどうか )
+graphicCacheLimit ( 画像キャッシュ制限 )
+onActivate ( アプリケーションがアクティブになったとき )
+onDeactivate ( アプリケーションが非アクティブになったとき )
+osName ( OS 名 )
+personalPath ( マイドキュメントのパス )
+platformName ( プラットフォーム名 )
+screenHeight ( 画面高さ )
+screenWidth ( 画面幅 )
+title ( タイトル )
+versionInformation ( バージョン情報文字列 )
+versionString ( バージョン文字列 )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_addContinuousHandler.html b/docs/kr2doc/contents/f_System_addContinuousHandler.html new file mode 100644 index 0000000..38a401e --- /dev/null +++ b/docs/kr2doc/contents/f_System_addContinuousHandler.html @@ -0,0 +1,57 @@ + + + + + + + addContinuousHandler - Continuous ハンドラの追加 + + + + + + + + + +

System.addContinuousHandler

+
+
機能/意味
+
+Continuous ハンドラの追加
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+addContinuousHandler(callback)
+
+
引数
+
+ + + +
callback  ハンドラとなる関数を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Continuous ハンドラを登録します。
+  Continuous ハンドラは、「できる限り頻繁に」呼び出されるイベントハンドラです。
+  他にする処理がない場合、吉里吉里は Continuous ハンドラを呼び出し続けます。 + 他にイベントなどが起きた場合はそちらが優先されます。
+  ただし、コマンドラインオプションの -contfreq で呼び出しの頻度が指定されている + 場合はそれに従います。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_appDataPath.html b/docs/kr2doc/contents/f_System_appDataPath.html new file mode 100644 index 0000000..7e076ab --- /dev/null +++ b/docs/kr2doc/contents/f_System_appDataPath.html @@ -0,0 +1,47 @@ + + + + + + + appDataPath - ユーザのホームディレクトリのパス + + + + + + + + + +

System.appDataPath

+
+
機能/意味
+
+ユーザのホームディレクトリのパス
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ユーザのホームディレクトリのパスを表します。Windows の場合、レジストリの + HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders の + AppData で表されるフォルダが返されます。このフォルダがない場合は System.exePath と同じ + フォルダを返します。
+
+ これは、通常、以下の通りになります。 +
+
Windows 95, 98, 98SE, ME でマルチユーザ環境でない場合
C:\Windows\Application Data\ ( C:\Windows の部分は Windows をインストールした場所です )
Windows 95 (初期型でない場合), 98, 98SE, ME でマルチユーザ環境の場合
C:\Windows\Profiles\<ユーザ名>\Application Data\ ( C:\Windows の部分は Windows をインストールした場所です )
Windows NT 4.0 の場合
C:\WINNT\Profiles\<ユーザ名>\Application Data\ ( C:\WINNT の部分は Windows をインストールした場所です )
Windows 2000, XP 以降 の場合
C:\Documents and Settings\<ユーザ名>\Application Data\ ( C: の部分は環境によって異なります )
何らかの理由で レジストリキー ( 上記参照 ) を読み出せなかった場合か、初期の Windows 95
吉里吉里の実行可能ファイルのあるフォルダ (System.exePath)になります
+
参照
+
+System.exePath
+System.personalPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_assignMessage.html b/docs/kr2doc/contents/f_System_assignMessage.html new file mode 100644 index 0000000..3125a5e --- /dev/null +++ b/docs/kr2doc/contents/f_System_assignMessage.html @@ -0,0 +1,58 @@ + + + + + + + assignMessage - メッセージ割り当ての変更 + + + + + + + + + +

System.assignMessage

+
+
機能/意味
+
+メッセージ割り当ての変更
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+assignMessage(id, msg)
+
+
引数
+
+ + + + + +
id  割り当てるメッセージ ID を指定します。
+
msg  id で指定された ID に割り当てるメッセージを指定します。
+
+
+
戻り値
+
+ID が存在し、メッセージの割り当てが成功すれば真、そうでなければ偽が戻ります。
+
説明
+
+  メッセージ割り当てを変更します。
+  吉里吉里が内蔵しているメッセージをこのメソッドで別のメッセージに変更することができます。
+  通常、メッセージマップファイル内に記述します ( 起動の仕方 参照 )。
+  設定可能な ID と、それに現在割り当てられているメッセージの一覧を取得するには コントローラ から + 「メッセージマップファイルの作成」を実行してください。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_createAppLock.html b/docs/kr2doc/contents/f_System_createAppLock.html new file mode 100644 index 0000000..48dc42c --- /dev/null +++ b/docs/kr2doc/contents/f_System_createAppLock.html @@ -0,0 +1,56 @@ + + + + + + + createAppLock - 二重起動のチェック + + + + + + + + + +

System.createAppLock

+
+
機能/意味
+
+二重起動のチェック
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+createAppLock(key)
+
+
引数
+
+ + + +
key  チェックを行うためのキー文字列を指定します。同じキー文字列をほかの + 実行中の吉里吉里がこのメソッドに指定していた場合、false が戻ります。
+  キー文字列には基本的には TJS の変数の命名規則と同じ文字のみが使えると + 考えてください。
+  キー文字列は十分にユニークな物である必要があります。
+
+
+
戻り値
+
+すでに同じキー文字列が指定された吉里吉里が実行中の場合は false、そうでなければ true が戻ります。
+
説明
+
+  他に同じキー文字列を指定された吉里吉里が実行中ならば false、そうでなければ true が戻ります。
+  二重起動の防止に用います。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_createUUID.html b/docs/kr2doc/contents/f_System_createUUID.html new file mode 100644 index 0000000..68e172d --- /dev/null +++ b/docs/kr2doc/contents/f_System_createUUID.html @@ -0,0 +1,53 @@ + + + + + + + createUUID - UUID 文字列の生成 + + + + + + + + + +

System.createUUID

+
+
機能/意味
+
+UUID 文字列の生成
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+createUUID()
+
+
引数
+
+なし
+
+
戻り値
+
+生成された UUID 文字列が "e8b2a2b5-5ceb-4f75-a08b-1f1bdfdca4f1" の形式 + (ハイフンを除く各英数字は16進数の数字) で戻ります。
+
説明
+
+  UUID 文字列を生成して返します。このメソッドはランダムビット列を元に生成された + 128bitの UUID (universal unique identifier) を生成します。
+  吉里吉里に実装されている UUID 生成アルゴリズムは、 + ある程度、環境ノイズを拾ってランダムビット列を生成しますが、 + 高度なセキュリティが要求されるような用途に使用することはおすすめしません。しかし、 + 他の UUID とは「非常に非常に高い確率で重ならない」と考えられます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_dataPath.html b/docs/kr2doc/contents/f_System_dataPath.html new file mode 100644 index 0000000..9364205 --- /dev/null +++ b/docs/kr2doc/contents/f_System_dataPath.html @@ -0,0 +1,38 @@ + + + + + + + dataPath - データ保存場所のパス + + + + + + + + + +

System.dataPath

+
+
機能/意味
+
+データ保存場所のパス
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  コマンドラインオプションの -datapath で指定したディレクトリを表します。
+  標準では、ログなどがすべてここに出力されます。
+  ユーザスクリプトがデータを保存する場合は、ここに保存することを推奨します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_desktopHeight.html b/docs/kr2doc/contents/f_System_desktopHeight.html new file mode 100644 index 0000000..cbe68bd --- /dev/null +++ b/docs/kr2doc/contents/f_System_desktopHeight.html @@ -0,0 +1,44 @@ + + + + + + + desktopHeight - デスクトップ高さ + + + + + + + + + +

System.desktopHeight

+
+
機能/意味
+
+デスクトップ高さ
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  デスクトップ ( ウィンドウを表示可能な領域 ) の高さをピクセル単位で表します。
+
+
参照
+
+System.screenWidth
+System.screenHeight
+System.desktopLeft
+System.desktopTop
+System.desktopWidth
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_desktopLeft.html b/docs/kr2doc/contents/f_System_desktopLeft.html new file mode 100644 index 0000000..d168c20 --- /dev/null +++ b/docs/kr2doc/contents/f_System_desktopLeft.html @@ -0,0 +1,44 @@ + + + + + + + desktopLeft - デスクトップ左端位置 + + + + + + + + + +

System.desktopLeft

+
+
機能/意味
+
+デスクトップ左端位置
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  デスクトップ ( ウィンドウを表示可能な領域 ) の左端位置をピクセル単位で表します。
+
+
参照
+
+System.screenWidth
+System.screenHeight
+System.desktopTop
+System.desktopWidth
+System.desktopHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_desktopTop.html b/docs/kr2doc/contents/f_System_desktopTop.html new file mode 100644 index 0000000..75106f5 --- /dev/null +++ b/docs/kr2doc/contents/f_System_desktopTop.html @@ -0,0 +1,44 @@ + + + + + + + desktopTop - デスクトップ上端位置 + + + + + + + + + +

System.desktopTop

+
+
機能/意味
+
+デスクトップ上端位置
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  デスクトップ ( ウィンドウを表示可能な領域 ) の上端位置をピクセル単位で表します。
+
+
参照
+
+System.screenWidth
+System.screenHeight
+System.desktopLeft
+System.desktopWidth
+System.desktopHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_desktopWidth.html b/docs/kr2doc/contents/f_System_desktopWidth.html new file mode 100644 index 0000000..c476b03 --- /dev/null +++ b/docs/kr2doc/contents/f_System_desktopWidth.html @@ -0,0 +1,44 @@ + + + + + + + desktopWidth - デスクトップ幅 + + + + + + + + + +

System.desktopWidth

+
+
機能/意味
+
+デスクトップ幅
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  デスクトップ ( ウィンドウを表示可能な領域 ) の幅をピクセル単位で表します。
+
+
参照
+
+System.screenWidth
+System.screenHeight
+System.desktopLeft
+System.desktopTop
+System.desktopHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_doCompact.html b/docs/kr2doc/contents/f_System_doCompact.html new file mode 100644 index 0000000..c4b137a --- /dev/null +++ b/docs/kr2doc/contents/f_System_doCompact.html @@ -0,0 +1,59 @@ + + + + + + + doCompact - メモリのコンパクト化 + + + + + + + + + +

System.doCompact

+
+
機能/意味
+
+メモリのコンパクト化
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+doCompact(level=clAll)
+
+
引数
+
+ + + +
level  レベルを指定します。
+  clIdle を指定すると、システムがアイドル状態 (システムが比較的動作をしていない状態) に実行されるコンパクト化と同じ処理が行われます。現バージョンでは TJS2 のガベージコレクションが行われます。
+  clDeactivate を指定すると、吉里吉里が非アクティブになったとき (他のアプリケーションがアクティブになったとき) に実行されるコンパクト化と同じ処理が行われます。現バージョンではレイヤの演算用の一時画像バッファ、レイヤキャッシュ、XP3 アーカイブのセグメント(ストレージの断片) キャッシュ、自動検索パスのキャッシュがクリアされます。
+  clMinimize を指定すると、吉里吉里が最小化されたときに実行されるコンパクト化と同じ処理が行われます。現バージョンでは、描画文字のキャッシュ、画像キャッシュがクリアされます。
+  clAll を指定すると、上記のコンパクト化の全てが実行されます。
+  コンパクト化のレベルは、clIdle < clDeactivate < clMinimize < clAll の順に強くなります。より上位のレベルを指定すると、下位のレベルで行われるコンパクト化も行われます。たとえば、clDeactivate を実行すると、clIdle での処理も実行されます。
+  引数を省略すると clAll が指定された物と見なされます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メモリのコンパクト化を行います。コンパクト化とは、使用していないメモリや各種キャッシュ用メモリを解放して、メモリ使用量を減らす処理です。
+  吉里吉里は自動でこれを行うので通常はあまり気にする必要はありませんが、強制的にプログラム側の処理で行いたい場合にこのメソッドを使用することができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_drawThreadNum.html b/docs/kr2doc/contents/f_System_drawThreadNum.html new file mode 100644 index 0000000..fa27db1 --- /dev/null +++ b/docs/kr2doc/contents/f_System_drawThreadNum.html @@ -0,0 +1,40 @@ + + + + + + + drawThreadNum - 描画に使用するスレッドの数 + + + + + + + + + +

System.drawThreadNum

+
+
機能/意味
+
+描画に使用するスレッドの数
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  吉里吉里のレイヤシステムが描画時に使用するスレッド数を表します。値を設定することもできます。
+  dtnAuto を指定すると、OSの認識するプロセッサ数と同数のスレッドが自動的に割り当てられます。
+  描画スレッドを複数設定することで、マルチコア環境での描画パフォーマンスを向上させられる可能性がありますが、逆にパフォーマンスが低下する場合もあります。
+  描画面積が大きい処理、Affine系の高負荷な処理、演算の重いレイヤ合成処理などに適用することで、良好な結果を得られる可能性があります。
+  マルチスレッドを使用するように設定しても、描画処理の負荷が軽くマルチスレッド化の効果が得られないとシステムが判断した場合は、マルチスレッドで実行されない場合があります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_eventDisabled.html b/docs/kr2doc/contents/f_System_eventDisabled.html new file mode 100644 index 0000000..ccc860a --- /dev/null +++ b/docs/kr2doc/contents/f_System_eventDisabled.html @@ -0,0 +1,39 @@ + + + + + + + eventDisabled - イベント配信が停止されているかどうか + + + + + + + + + +

System.eventDisabled

+
+
機能/意味
+
+イベント配信が停止されているかどうか
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  吉里吉里のイベント配信が停止されている場合に true になります。値を設定することもで + きます。
+  イベント配信が停止されると、吉里吉里上のイベントは発生しなくなるか、発生が延期されま + す ( イベントの種類によって挙動は異なります )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_exceptionHandler.html b/docs/kr2doc/contents/f_System_exceptionHandler.html new file mode 100644 index 0000000..4e59ae6 --- /dev/null +++ b/docs/kr2doc/contents/f_System_exceptionHandler.html @@ -0,0 +1,71 @@ + + + + + + + exceptionHandler - 捕捉されなかった例外のためのハンドラ関数 + + + + + + + + + +

System.exceptionHandler

+
+
機能/意味
+
+捕捉されなかった例外のためのハンドラ関数
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  捕捉されなかった例外 (どこにも捕捉されずに吉里吉里本体に渡された例外) を処理する関数を表します。
+  null を指定すると、デフォルトの動作になります。
+  デフォルトの動作とは、 +
  1. 非同期イベントの配信を停止する (System.eventDisabled を 真 に設定)
  2. ログをファイルに出力開始する (Debug.logAsError を呼ぶ)
  3. エラーを通知するダイアログボックスを表示し、スクリプトエディタでその箇所を示す
 です。
+  ハンドラ関数は引数を一つ取り、それが例外オブジェクトになります。
+  ハンドラ関数が指定されないか、あるいはハンドラ関数が null であるか、あるいはハンドラ関数が偽を返すと、デフォルトの動作が行われます。
+  ハンドラ関数が真を返すと上記のデフォルトの動作は行われません。
+  ハンドラ関数を実行中に非同期イベントが発生する可能性を考慮してください。吉里吉里本体が非同期イベントを処理できてしまうと、例外ハンドラを実行中に再び予期せぬ例外が発生する可能性があります。これを避けるため、通常、ハンドラ関数内でなにかを待つような処理をする場合 (吉里吉里が非同期イベントを処理する機会がある場合 )、非同期イベントの発生を停止させます。
+ 例:
System.exceptionHandler = function (e)
+{
+    // どこにも捕捉されない例外がシステム側で捕捉された場合、この関数が
+    // 呼ばれる。e は例外オブジェクト。
+    if(e instanceof "ConductorException")
+    {
+        // コンダクタの投げた例外の場合
+        Debug.logAsError(); // ログのファイルへの書き出し動作の開始など
+        var event_disabled = System.eventDisabled;
+        System.eventDisabled = true;
+            // エラーの理由を表示させている間にイベントが発生すると
+            // やっかいなのでいったんイベント発生を停止させる
+        System.inform(e.message);
+        System.eventDisabled = event_disabled;
+            // イベントを発生するかどうかを元の状態に
+        return true; // true を返すと本体側で例外の処理は行わなくなる
+    }
+    else
+    {
+        return false; // false を返すと通常の例外処理
+    }
+};
+        
+
+
参照
+
+System.eventDisabled
+Debug.logAsError
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_exeName.html b/docs/kr2doc/contents/f_System_exeName.html new file mode 100644 index 0000000..17b2d45 --- /dev/null +++ b/docs/kr2doc/contents/f_System_exeName.html @@ -0,0 +1,36 @@ + + + + + + + exeName - 吉里吉里本体のパス + + + + + + + + + +

System.exeName

+
+
機能/意味
+
+吉里吉里本体のパス
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里本体へのパス名を表します。パス名は統一ストレージ名で表現されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_exePath.html b/docs/kr2doc/contents/f_System_exePath.html new file mode 100644 index 0000000..c3febb3 --- /dev/null +++ b/docs/kr2doc/contents/f_System_exePath.html @@ -0,0 +1,41 @@ + + + + + + + exePath - 吉里吉里本体のあるフォルダのパス + + + + + + + + + +

System.exePath

+
+
機能/意味
+
+吉里吉里本体のあるフォルダのパス
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里本体が設置してあるパスを表します。パス名は統一ストレージ名で表現されます。
+
+
参照
+
+System.appDataPath
+System.personalPath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_exit.html b/docs/kr2doc/contents/f_System_exit.html new file mode 100644 index 0000000..1b99a41 --- /dev/null +++ b/docs/kr2doc/contents/f_System_exit.html @@ -0,0 +1,50 @@ + + + + + + + exit - 吉里吉里の同期終了 + + + + + + + + + +

System.exit

+
+
機能/意味
+
+吉里吉里の同期終了
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+exit()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  吉里吉里を終了させます。
+  このメソッドは System.terminate と異なり、呼び出した時点で終了します。そのため、 + このメソッドは戻ることはありません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_exitOnWindowClose.html b/docs/kr2doc/contents/f_System_exitOnWindowClose.html new file mode 100644 index 0000000..765b1d6 --- /dev/null +++ b/docs/kr2doc/contents/f_System_exitOnWindowClose.html @@ -0,0 +1,37 @@ + + + + + + + exitOnWindowClose - メインウィンドウが閉じたときに終了するかどうか + + + + + + + + + +

System.exitOnWindowClose

+
+
機能/意味
+
+メインウィンドウが閉じたときに終了するかどうか
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  メインウィンドウ(一番最初に作成したWindowクラスのインスタンス)が閉じたときに終了するかどうかを表します。値を設定することもできます。デフォルトは真です。
+  メインウィンドウが閉じ、ほかのデバッグ関連ウィンドウも表示していない場合は吉里吉里は終了すること無くシステムに残り、制御不能に陥る可能性がありますので注意してください(タスクマネージャからプロセスを終了させるしか無くなる可能性があります)。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_getArgument.html b/docs/kr2doc/contents/f_System_getArgument.html new file mode 100644 index 0000000..bc19196 --- /dev/null +++ b/docs/kr2doc/contents/f_System_getArgument.html @@ -0,0 +1,62 @@ + + + + + + + getArgument - コマンドラインオプションの取得 + + + + + + + + + +

System.getArgument

+
+
機能/意味
+
+コマンドラインオプションの取得
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+getArgument(name)
+
+
引数
+
+ + + +
name  取得するコマンドラインオプション名を指定します。最初に '-' + ( ハイフン ) をつけてください ( 例 : '-nosplash' )。
+
+
+
戻り値
+
+コマンドラインオプションが指定されていればその値、指定されていなければ + void が返ります。
+
説明
+
+  コマンドラインオプションは、
+ -name=value
+ または
+ -name
+  の形式で吉里吉里に渡されている必要があります。前者の場合は値として value が + 返り、前者の場合は値として 'yes' が返ります。
+
+
参照
+
+System.setArgument
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_getKeyState.html b/docs/kr2doc/contents/f_System_getKeyState.html new file mode 100644 index 0000000..736b698 --- /dev/null +++ b/docs/kr2doc/contents/f_System_getKeyState.html @@ -0,0 +1,52 @@ + + + + + + + getKeyState - キー状態の取得 + + + + + + + + + +

System.getKeyState

+
+
機能/意味
+
+キー状態の取得
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+getKeyState(code)
+
+
引数
+
+ + + +
code  状態を取得する仮想キーコード を指定します。
+
+
+
戻り値
+
+キーが押されていれば真、押されていなければ偽になります。
+
説明
+
+  code で指定したキーコードに対応するキーが、このメソッドを呼んだ時点で押されているかどうかを + 取得します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_getTickCount.html b/docs/kr2doc/contents/f_System_getTickCount.html new file mode 100644 index 0000000..ca1080a --- /dev/null +++ b/docs/kr2doc/contents/f_System_getTickCount.html @@ -0,0 +1,48 @@ + + + + + + + getTickCount - ティックカウントの取得 + + + + + + + + + +

System.getTickCount

+
+
機能/意味
+
+ティックカウントの取得
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+getTickCount()
+
+
引数
+
+なし
+
+
戻り値
+
+ティックカウント(64bitの整数)が戻ります。
+
説明
+
+  ティックカウントは 1/1000 秒ごとにカウントアップする数値です。二つの時点でこのメソッドを + 用いてティックカウントを取得し、その差をとれば、二つの時点の時間差を知ることができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_graphicCacheLimit.html b/docs/kr2doc/contents/f_System_graphicCacheLimit.html new file mode 100644 index 0000000..5326a49 --- /dev/null +++ b/docs/kr2doc/contents/f_System_graphicCacheLimit.html @@ -0,0 +1,40 @@ + + + + + + + graphicCacheLimit - 画像キャッシュ制限 + + + + + + + + + +

System.graphicCacheLimit

+
+
機能/意味
+
+画像キャッシュ制限
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  吉里吉里の画像キャッシュ制限をバイト単位で表します。値を設定することもできます。
+  gcsAuto を指定すると、マシンに搭載されているメモリ量に応じて自動的に + 値が設定されます。
+  ルール画像や領域画像は、幅×高さ で表されるバイト数を消費します。それ以外の画像は + 幅×高さ×4 で表されるバイト数を消費します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_inform.html b/docs/kr2doc/contents/f_System_inform.html new file mode 100644 index 0000000..8edf156 --- /dev/null +++ b/docs/kr2doc/contents/f_System_inform.html @@ -0,0 +1,56 @@ + + + + + + + inform - メッセージの表示 + + + + + + + + + +

System.inform

+
+
機能/意味
+
+メッセージの表示
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+inform(text, caption="")
+
+
引数
+
+ + + + + +
text  表示するメッセージを指定します。
+
caption  ウィンドウのキャプションとなる文字列を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ユーザにメッセージを示すためのウィンドウを表示します。
+  ウィンドウはモーダルで表示されます ( つまり、表示中は他のウィンドウは操作できない )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_inputString.html b/docs/kr2doc/contents/f_System_inputString.html new file mode 100644 index 0000000..c822c00 --- /dev/null +++ b/docs/kr2doc/contents/f_System_inputString.html @@ -0,0 +1,59 @@ + + + + + + + inputString - 文字列の入力 + + + + + + + + + +

System.inputString

+
+
機能/意味
+
+文字列の入力
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+inputString(caption, prompt, initialString)
+
+
引数
+
+ + + + + + + +
caption  ウィンドウのキャプションとして表示する文字列を指定します。
+
prompt  ウィンドウのプロンプト ( 入力を催促するためにユーザに表示する文字列 ) + を指定します。
+
initialString  入力ウィンドウにあらかじめ表示しておく文字列を指定します。
+
+
+
戻り値
+
+入力された文字列が戻ります。キャンセルされた場合は void が戻ります。
+
説明
+
+  文字列を入力するためのウィンドウを開き、ユーザに文字列の入力を求めます。
+  ウィンドウはモーダルで表示されます ( つまり、表示中は他のウィンドウは操作できない )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_onActivate.html b/docs/kr2doc/contents/f_System_onActivate.html new file mode 100644 index 0000000..4edd9b8 --- /dev/null +++ b/docs/kr2doc/contents/f_System_onActivate.html @@ -0,0 +1,46 @@ + + + + + + + onActivate - アプリケーションがアクティブになったとき + + + + + + + + + +

System.onActivate

+
+
機能/意味
+
+アプリケーションがアクティブになったとき
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  アプリケーションがアクティブになったときに呼び出されるイベント関数を表します。
+  null を指定すると関数は呼び出されません。
+  通常のイベントハンドラと異なり、このイベントを受け取りたい場合は、呼び出したい関数をこのプロパティに設定してください。
+  Window.onActivate は、同じアプリケーション内のそれぞれのウィンドウがアクティブになったときに発生しますが、このイベントは、アプリケーション自体がアクティブになった場合に発生します。
+  このイベントは、アプリケーションが既にアクティブの場合にも発生する可能性があるので注意してください (完全に onActivate → onDeactivate → onActivate → …… の順に発生する保証がない )。
+
+
参照
+
+System.onDeactivate
+Window.onActivate
+Window.onDeactivate
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_onDeactivate.html b/docs/kr2doc/contents/f_System_onDeactivate.html new file mode 100644 index 0000000..dbbb56b --- /dev/null +++ b/docs/kr2doc/contents/f_System_onDeactivate.html @@ -0,0 +1,46 @@ + + + + + + + onDeactivate - アプリケーションが非アクティブになったとき + + + + + + + + + +

System.onDeactivate

+
+
機能/意味
+
+アプリケーションが非アクティブになったとき
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  アプリケーションが非アクティブになったときに呼び出されるイベント関数を表します。
+  null を指定すると関数は呼び出されません。
+  通常のイベントハンドラと異なり、このイベントを受け取りたい場合は、呼び出したい関数をこのプロパティに設定してください。
+  Window.onDeactivate は、同じアプリケーション内のそれぞれのウィンドウが非アクティブになったときに発生しますが、このイベントは、アプリケーション自体が非アクティブになった場合に発生します。
+  このイベントは、アプリケーションが既に非アクティブの場合にも発生する可能性があるので注意してください (完全に onActivate → onDeactivate → onActivate → …… の順に発生する保証がない )。
+
+
参照
+
+System.onActivate
+Window.onActivate
+Window.onDeactivate
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_osName.html b/docs/kr2doc/contents/f_System_osName.html new file mode 100644 index 0000000..80b6d2f --- /dev/null +++ b/docs/kr2doc/contents/f_System_osName.html @@ -0,0 +1,36 @@ + + + + + + + osName - OS 名 + + + + + + + + + +

System.osName

+
+
機能/意味
+
+OS 名
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里が動作している OS の名前を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_personalPath.html b/docs/kr2doc/contents/f_System_personalPath.html new file mode 100644 index 0000000..37290e7 --- /dev/null +++ b/docs/kr2doc/contents/f_System_personalPath.html @@ -0,0 +1,44 @@ + + + + + + + personalPath - マイドキュメントのパス + + + + + + + + + +

System.personalPath

+
+
機能/意味
+
+マイドキュメントのパス
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ユーザのマイドキュメントのパスを表します。Windows の場合、レジストリの + HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders の + Personal で表されるフォルダが返されます。通常これは「マイドキュメント」フォルダを指します。これは、Windows 95/NT4.0 では Windows をインストールしたフォルダ下の "Personal" フォルダの場合があります。
+ このフォルダがない場合(Windows 95 の初期のバージョンなど)は System.exePath と同じフォルダを返します。
+
+
参照
+
+System.appDataPath
+System.exePath
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_platformName.html b/docs/kr2doc/contents/f_System_platformName.html new file mode 100644 index 0000000..23fc6f0 --- /dev/null +++ b/docs/kr2doc/contents/f_System_platformName.html @@ -0,0 +1,36 @@ + + + + + + + platformName - プラットフォーム名 + + + + + + + + + +

System.platformName

+
+
機能/意味
+
+プラットフォーム名
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里が動作しているプラットフォーム名を表します。Windows の場合は 'Win32' となります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_readRegValue.html b/docs/kr2doc/contents/f_System_readRegValue.html new file mode 100644 index 0000000..42bcb91 --- /dev/null +++ b/docs/kr2doc/contents/f_System_readRegValue.html @@ -0,0 +1,64 @@ + + + + + + + readRegValue - レジストリの読み込み + + + + + + + + + +

System.readRegValue

+
+
機能/意味
+
+レジストリの読み込み
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+readRegValue(key)
+
+
引数
+
+ + + +
key  読み込むレジストリキーを指定します。
+
+
+
戻り値
+
+実行に成功すればレジストリの値、失敗すれば void が返ります。
+
説明
+
+  key で指定した Windows レジストリを読み込みます。
+  レジストリキーは、以下のルートキー名で始めることができます。
+ HKEY_CLASSES_ROOT
+HKEY_CURRENT_CONFIG
+HKEY_CURRENT_USER
+ HKEY_LOCAL_MACHINE
+HKEY_USERS
+HKEY_PERFORMANCE_DATA
+ HKEY_DYN_DATA
+
 たとえば、以下のような文字列を key に指定することができます。
+ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\hoeg\installdir
+
+  数値、単一文字列のみを読み込むことができます。数値の場合は整数型、文字列の場合は文字列型 + の結果が返ります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_removeContinuousHandler.html b/docs/kr2doc/contents/f_System_removeContinuousHandler.html new file mode 100644 index 0000000..48faaf2 --- /dev/null +++ b/docs/kr2doc/contents/f_System_removeContinuousHandler.html @@ -0,0 +1,52 @@ + + + + + + + removeContinuousHandler - Continuous ハンドラの削除 + + + + + + + + + +

System.removeContinuousHandler

+
+
機能/意味
+
+Continuous ハンドラの削除
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+removeContinuousHandler(callback)
+
+
引数
+
+ + + +
callback  ハンド関数を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Continuous ハンドラを削除します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_screenHeight.html b/docs/kr2doc/contents/f_System_screenHeight.html new file mode 100644 index 0000000..7c236f7 --- /dev/null +++ b/docs/kr2doc/contents/f_System_screenHeight.html @@ -0,0 +1,44 @@ + + + + + + + screenHeight - 画面高さ + + + + + + + + + +

System.screenHeight

+
+
機能/意味
+
+画面高さ
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  画面サイズ ( 画面解像度 ) の縦サイズをピクセル単位で表します。
+
+
参照
+
+System.screenWidth
+System.desktopLeft
+System.desktopTop
+System.desktopWidth
+System.desktopHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_screenWidth.html b/docs/kr2doc/contents/f_System_screenWidth.html new file mode 100644 index 0000000..0ea414d --- /dev/null +++ b/docs/kr2doc/contents/f_System_screenWidth.html @@ -0,0 +1,44 @@ + + + + + + + screenWidth - 画面幅 + + + + + + + + + +

System.screenWidth

+
+
機能/意味
+
+画面幅
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  画面サイズ ( 画面解像度 ) の横サイズをピクセル単位で表します。
+
+
参照
+
+System.screenHeight
+System.desktopLeft
+System.desktopTop
+System.desktopWidth
+System.desktopHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_setArgument.html b/docs/kr2doc/contents/f_System_setArgument.html new file mode 100644 index 0000000..8aeb684 --- /dev/null +++ b/docs/kr2doc/contents/f_System_setArgument.html @@ -0,0 +1,62 @@ + + + + + + + setArgument - コマンドラインオプションの設定 + + + + + + + + + +

System.setArgument

+
+
機能/意味
+
+コマンドラインオプションの設定
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+setArgument(name, value)
+
+
引数
+
+ + + + + +
name  設定するコマンドラインオプション名を指定します。最初に '-' + ( ハイフン ) をつけてください ( 例 : '-contfreq' )。
+
value  設定する値を指定します。 ( 例 : '60' )。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  動的にコマンドラインオプションを設定します。すべてのコマンドラインオプションが設定可能な訳ではありません。
+  設定可能なコマンドラインオプションについては コマンドラインオプション を参照してください。ここで動的に変更可能という表記のないオプションについては変更を行わないでください。
+  このメソッドは、そのオプションが動的に変更可能かどうかやオプションの存在、値の有効性などをチェックしません。値の設定には十分気をつけてください。
+
+
参照
+
+System.getArgument
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_shellExecute.html b/docs/kr2doc/contents/f_System_shellExecute.html new file mode 100644 index 0000000..75e6c3e --- /dev/null +++ b/docs/kr2doc/contents/f_System_shellExecute.html @@ -0,0 +1,57 @@ + + + + + + + shellExecute - ファイル/プログラムの実行 + + + + + + + + + +

System.shellExecute

+
+
機能/意味
+
+ファイル/プログラムの実行
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+shellExecute(target, param="")
+
+
引数
+
+ + + + + +
target  実行するファイルやソフトウェアを指定します。
+  ファイルを指定された場合は、それに関連づけられたプログラムが起動します。
+
param  実行するソフトウェアに渡すパラメータを指定します。
+  target 引数にファイルを指定した場合はこの引数を省略するか、あるいは空文字列を + 指定してください。
+
+
+
戻り値
+
+実行に成功すれば真、失敗すれば偽が返ります。
+
説明
+
+  target で指定したファイルやソフトウェアを実行します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_terminate.html b/docs/kr2doc/contents/f_System_terminate.html new file mode 100644 index 0000000..b05f22f --- /dev/null +++ b/docs/kr2doc/contents/f_System_terminate.html @@ -0,0 +1,50 @@ + + + + + + + terminate - 吉里吉里の非同期終了 + + + + + + + + + +

System.terminate

+
+
機能/意味
+
+吉里吉里の非同期終了
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+terminate()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  吉里吉里を終了させます。
+  このメソッドを呼び出してもすぐには吉里吉里は終了しません。
+  すべてのイベントハンドラから吉里吉里に制御が戻った際に終了します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_title.html b/docs/kr2doc/contents/f_System_title.html new file mode 100644 index 0000000..19647f1 --- /dev/null +++ b/docs/kr2doc/contents/f_System_title.html @@ -0,0 +1,41 @@ + + + + + + + title - タイトル + + + + + + + + + +

System.title

+
+
機能/意味
+
+タイトル
+
タイプ
+
+Systemクラスのプロパティ (読み書き可能)
+
+
説明
+
+  タイトルを文字列で表します。値を設定することもできます。
+  タイトルは Windows の場合、タスクバーに表示されます。
+
+
参照
+
+Window.caption
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_toActualColor.html b/docs/kr2doc/contents/f_System_toActualColor.html new file mode 100644 index 0000000..beda70c --- /dev/null +++ b/docs/kr2doc/contents/f_System_toActualColor.html @@ -0,0 +1,52 @@ + + + + + + + toActualColor - 色定数の実際の色の取得 + + + + + + + + + +

System.toActualColor

+
+
機能/意味
+
+色定数の実際の色の取得
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+toActualColor(color)
+
+
引数
+
+ + + +
color  色定数を指定します ( 色定数一覧 を参照 )。
+  通常の 0xRRGGBB 形式の色を指定した場合はそのままの値が返ります。
+
+
+
戻り値
+
+指定された色定数が表す実際の色が 0xRRGGBB 形式で返ります。
+
説明
+
+  色定数を実際の色に変換し、0xRRGGBB 形式で返します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_touchImages.html b/docs/kr2doc/contents/f_System_touchImages.html new file mode 100644 index 0000000..a4a6a51 --- /dev/null +++ b/docs/kr2doc/contents/f_System_touchImages.html @@ -0,0 +1,89 @@ + + + + + + + touchImages - 画像のキャッシュへの読み込み + + + + + + + + + +

System.touchImages

+
+
機能/意味
+
+画像のキャッシュへの読み込み
+
タイプ
+
+Systemクラスのメソッド
+
+
構文
+
+touchImages(storages, limitbytes=0, timeout=0)
+
+
引数
+
+ + + + + + + +
storages  キャッシュに入れたい画像ストレージ名を配列(Arrayクラスのオブジェクト)で渡します。
+  先に書いた物ほど優先されます。
+  吉里吉里は、Layer.loadImages の第1引数に指定された + 文字列をそのままキーにしてキャッシュを管理するため、 + キャッシュを意味のある物にするには、 + ここで指定する画像ストレージ名は Layer.loadImages の第1引数に指定するものと + 同一である必要があります。
+
limitbytes  このメソッドの呼び出しで使用するキャッシュ容量の制限値をバイト単位で指定します。
+  0 を指定すると、キャッシュをすべて使用します。
+  正の数を指定すると、そのバイト数までキャッシュを使用しようとします。
+  負の数を指定すると、現在のキャッシュの + 制限値 ( System.graphicCacheLimit ) からその数値が加算された数 ( ただし + 「負の数」を加算するので実際は減算 ) が制限値として使用されます。その結果制限値が + 0 または負になってしまった場合は、このメソッドは何もせずに終了します。たとえば、 + -2*1024*1024 を指定すれば、現在のキャッシュ制限値から 2MB が引かれた数値が指定さ + れたとみなされます。これは、キャッシュの残り容量に余裕を残したい場合に便利です。
+
timeout  タイムアウト ( 時間制限 ) を ms 単位で指定します。0 を指定すると無制限と + なります。
+  このメソッドはこの引数で指定された時間が経過すると、以降の画像の読み込みを中止し、 + 戻ります。ただし、ある画像の読み込み中にタイムアウトになっても、その画像の読み + 込みが終了するまでは戻りません。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  このメソッドは、指定された画像をキャッシュに入れようと試行します。ただし、このメソッドは + キャッシュに画像を入れようと努力はしますが、実際に画像がキャッシュにはいる保証 + はありません。画像キャッシュの制限値をすぎたり、タイムアウトすると画像読み込みを中断します。 + 画像は、storages引数に指定した物のうち、最初に書いた物ほどキャッシュに入る可能性が大きくなり + ます ( 優先されます )。すでに指定された画像がキャッシュに入っていた場合は、キャッシュ中での + 生存の順位を引き上げるだけの動作をします。
+  このメソッドは、画像読み込み中のエラーはすべて無視します。
+  現バージョンでは、このメソッドでキャッシュに入れることのできる画像は、通常 + Layer.loadImages で読み込み可能な画像で、かつカラーキーを指定しない画像 + です ( アルファチャンネル付き画像は問題ありません )。ユニバーサルトランジションのルール画像や、 + 領域画像は読み込む動作はしますが、キャッシュとして有効なデータにはなりません ( 読み込んだ + データは無駄になります ) ので、指定しないようにしてください。
+  画像がキャッシュで使用するバイト数については System.graphicCacheLimit を参照 + してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_versionInformation.html b/docs/kr2doc/contents/f_System_versionInformation.html new file mode 100644 index 0000000..8f17fd7 --- /dev/null +++ b/docs/kr2doc/contents/f_System_versionInformation.html @@ -0,0 +1,39 @@ + + + + + + + versionInformation - バージョン情報文字列 + + + + + + + + + +

System.versionInformation

+
+
機能/意味
+
+バージョン情報文字列
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里本体のバージョン情報文字列を得ることができます。
+  バージョン情報文字列は System.versionString よりも長い形式で、
+ 以下のようになります。
+ 吉里吉里[きりきり] 2 実行コア/2.25.3.889 (SVN revision:764; Compiled on Mar 26 2005 23:54:10) TJS2/2.4.15 Copyright (C) 1997-2006 W.Dee and contributors All rights reserved.
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_System_versionString.html b/docs/kr2doc/contents/f_System_versionString.html new file mode 100644 index 0000000..02c2970 --- /dev/null +++ b/docs/kr2doc/contents/f_System_versionString.html @@ -0,0 +1,38 @@ + + + + + + + versionString - バージョン文字列 + + + + + + + + + +

System.versionString

+
+
機能/意味
+
+バージョン文字列
+
タイプ
+
+Systemクラスのプロパティ (読み出し専用)
+
+
説明
+
+  吉里吉里本体のバージョン文字列を得ることができます。
+  バージョン文字列は以下のような形式です。
+ 2.25.3.889
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer.html b/docs/kr2doc/contents/f_Timer.html new file mode 100644 index 0000000..41ce24b --- /dev/null +++ b/docs/kr2doc/contents/f_Timer.html @@ -0,0 +1,46 @@ + + + + + + + Timer + + + + + + + + +

Timer

+ Timer クラスは、一定時間ごとにイベントを発生するためのクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+Timer
+
+
メソッド
+
+なし +
+
プロパティ
+
+capacity ( イベントの最大発生許容量 )
+enabled ( イベントを発生させるかどうか )
+interval ( イベントの発生周期 )
+mode ( モード )
+
+
イベント
+
+onTimer ( タイマー周期が来た )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_Timer.html b/docs/kr2doc/contents/f_Timer_Timer.html new file mode 100644 index 0000000..a35f629 --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_Timer.html @@ -0,0 +1,58 @@ + + + + + + + Timer - Timer オブジェクトの構築 + + + + + + + + + +

Timer.Timer

+
+
機能/意味
+
+Timer オブジェクトの構築
+
タイプ
+
+Timerクラスのコンストラクタ
+
+
構文
+
+Timer(owner, actionname="action")
+
+
引数
+
+ + + + + +
owner  イベントの発生先を指定します。
+
actionname  owner で指定したイベントの発生先オブジェクトで、イベントを受け取るメソッド名を + 指定します。空文字列を指定すると owner はメソッドとみなされ、イベントの周期ごとに + owner が直接呼ばれます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Timer クラスのオブジェクトを構築します。
+  初期状態では interval プロパティは 1000、enabled プロパティは偽になっています。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_capacity.html b/docs/kr2doc/contents/f_Timer_capacity.html new file mode 100644 index 0000000..df1f50d --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_capacity.html @@ -0,0 +1,43 @@ + + + + + + + capacity - イベントの最大発生許容量 + + + + + + + + + +

Timer.capacity

+
+
機能/意味
+
+イベントの最大発生許容量
+
タイプ
+
+Timerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  どれだけのイベントを、一時期に発生させることができるかを指定します。値を設定することもできます。
+  タイマの周期よりも長い処理が行われた時など、タイマイベントを処理しきれない場合があります。 + このとき、タイマはイベントをイベントキューには溜めますが、そのイベントキューに溜めるイベントの数には上限があります。 + このプロパティはその最大数を指定します。
+  イベントを処理する段階になった場合、吉里吉里はキューに溜まった数のイベントを一時期に処理しようとします。
+  1を指定すると、イベントキューには最大1個までしかイベントが溜まりません。0 を指定するとイベントキューに溜まるイベントの数に + 制限はなくなりますが、あまりにイベントが溜まりすぎると、フリーズしたようになる可能性があるので注意してください。
+  デフォルトは 6 です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_enabled.html b/docs/kr2doc/contents/f_Timer_enabled.html new file mode 100644 index 0000000..f8deb02 --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_enabled.html @@ -0,0 +1,37 @@ + + + + + + + enabled - イベントを発生させるかどうか + + + + + + + + + +

Timer.enabled

+
+
機能/意味
+
+イベントを発生させるかどうか
+
タイプ
+
+Timerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  イベントを発生させるかどうかを表します。値を設定することもできます。
+  真ならばイベントが発生します。偽ならばイベントは発生しません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_interval.html b/docs/kr2doc/contents/f_Timer_interval.html new file mode 100644 index 0000000..3e82d81 --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_interval.html @@ -0,0 +1,42 @@ + + + + + + + interval - イベントの発生周期 + + + + + + + + + +

Timer.interval

+
+
機能/意味
+
+イベントの発生周期
+
タイプ
+
+Timerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  イベントの発生周期を表します。値を設定することもできます。
+  単位は ms ( ミリ秒 ) で、指定された時間ごとにイベントが発生します。
+  実数で発生周期を指定することもできます。現バージョンでは、1/65536ミリ秒精度で + 指定することができます (小数点以下の数値は、この精度に丸められます)。
+  1/65536ミリ秒程度の精度があると言っても、実際にこの精度でイベントハンドラが呼び出される保証はありません。 + 実際には、イベントが呼び出されるタイミングには3〜10ms程度のぶれがあります。 + しかし、平均的・長期的にはこのプロパティで指定した周期でイベントが発生するように自動的に調整が行われます。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_mode.html b/docs/kr2doc/contents/f_Timer_mode.html new file mode 100644 index 0000000..9229f37 --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_mode.html @@ -0,0 +1,44 @@ + + + + + + + mode - モード + + + + + + + + + +

Timer.mode

+
+
機能/意味
+
+モード
+
タイプ
+
+Timerクラスのプロパティ (読み書き可能)
+
+
説明
+
+  動作のモードを表します。値を設定することもできます。
+  以下の値のいずれかを指定します。
+ atmNormal : 通常のイベント配信の優先度でイベントが配信されます。
+ atmExclusive : 他の非同期イベントよりも優先されて配信されます
+ atmAtIdle : アイドル状態 ( 他に配信するイベントが無くなったとき ) に配信されます。
+
+
参照
+
+AsyncTrigger.mode
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Timer_onTimer.html b/docs/kr2doc/contents/f_Timer_onTimer.html new file mode 100644 index 0000000..c26bb84 --- /dev/null +++ b/docs/kr2doc/contents/f_Timer_onTimer.html @@ -0,0 +1,44 @@ + + + + + + + onTimer - タイマー周期が来た + + + + + + + + + +

Timer.onTimer

+
+
機能/意味
+
+タイマー周期が来た
+
タイプ
+
+Timerクラスのイベント
+
+
構文
+
+onTimer()
+
+
引数
+
+なし
+
+
説明
+
+  タイマーの周期ごとに呼ばれます。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay.html b/docs/kr2doc/contents/f_VideoOverlay.html new file mode 100644 index 0000000..a866971 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay.html @@ -0,0 +1,111 @@ + + + + + + + VideoOverlay + + + + + + + + +

VideoOverlay

+ VideoOverlay クラスは、MPEG I や WMV、 SWF (Macromedia Flash) などを表示するため表示領域を作成するクラスです。また、WMV/MPEG I 再生時は、吉里吉里のレイヤに表示を行うことができます。
+ WMV/MPEG I を再生するときは、吉里吉里実行可能ファイルと同じ場所に、krmovie.dll が必要になります。
+ SWF を再生する場合は、吉里吉里実行可能ファイルと同じ場所に krflash.dll が必要になります。
+ SWF では、いくつかのメソッドやプロパティが使用できない可能性があります。
+
+ レイヤでの再生を除き、WMV/MPEG I のオーバーレイによる再生や Flash の再生では、VideoOverlay クラスの表示領域は、すべてのレイヤよりも手前に表示され、透過することはできません。
+ レイヤでの再生は、オーバーレイでの再生に比べ、再生時のプロセッサの負荷は高くなる傾向にあります。
+
+

メンバ

+
+
コンストラクタ
+
+VideoOverlay
+
+
メソッド
+
+cancelPeriodEvent ( 指定フレームでのイベント発生の解除 )
+cancelSegmentLoop ( フレーム間ループの解除 )
+close ( メディアを閉じる )
+open ( メディアを開く )
+pause ( 一時停止 )
+play ( 再生開始 )
+prepare ( 再生準備 )
+resetMixingLayer ( ミキシング対象レイヤの設定解除 )
+rewind ( 巻き戻し )
+selectAudioStream ( 音声ストリームの選択 )
+setBounds ( 再生矩形の位置とサイズを指定 )
+setMixingLayer ( ミキシング対象レイヤの設定 )
+setPeriodEvent ( 指定フレームでのイベント発生の指定 )
+setPos ( 再生矩形の左上位置を指定 )
+setSegmentLoop ( フレーム間ループの設定 )
+setSize ( 再生矩形のサイズを指定 )
+stop ( 再生停止 )
+
+
プロパティ
+
+audioBalance ( 音声バランス(パニング) )
+audioVolume ( 音声ボリューム )
+brightness ( ビデオの輝度 )
+brightnessDefaultValue ( ビデオの輝度既定値 )
+brightnessRangeMax ( ビデオの輝度レンジ最大値 )
+brightnessRangeMin ( ビデオの輝度レンジ最小値 )
+brightnessStepSize ( ビデオの輝度増減ステップ値 )
+contrast ( ビデオのコントラスト )
+contrastDefaultValue ( ビデオのコントラスト既定値 )
+contrastRangeMax ( ビデオのコントラストレンジ最大値 )
+contrastRangeMin ( ビデオのコントラストレンジ最小値 )
+contrastStepSize ( ビデオのコントラスト増減ステップ値 )
+enabledAudioStream ( 再生対象音声ストリーム番号 )
+fps ( フレームレート )
+frame ( 現在のフレーム )
+height ( 再生矩形の縦幅 )
+hue ( ビデオの色相 )
+hueDefaultValue ( ビデオの色相既定値 )
+hueRangeMax ( ビデオの色相レンジ最大値 )
+hueRangeMin ( ビデオの色相レンジ最小値 )
+hueStepSize ( ビデオの色相増減ステップ値 )
+layer1 ( 描画レイヤ指定1 )
+layer2 ( 描画レイヤ指定2 )
+left ( 再生矩形の左端位置 )
+loop ( ループ再生をするかどうか )
+mixingMovieAlpha ( ビデオの透明度 )
+mixingMovieBGColor ( ビデオの背景色 )
+mode ( オーバーレイorレイヤ描画の指定 )
+numberOfAudioStream ( 音声ストリーム数 )
+numberOfFrame ( 全フレーム数 )
+periodEventFrame ( ピリオドイベントフレーム )
+playRate ( 再生速度 )
+position ( 再生位置 )
+saturation ( ビデオの彩度 )
+saturationDefaultValue ( ビデオの彩度既定値 )
+saturationRangeMax ( ビデオの彩度レンジ最大値 )
+saturationRangeMin ( ビデオの彩度レンジ最小値 )
+saturationStepSize ( ビデオの彩度増減ステップ値 )
+segmentLoopEndFrame ( セグメントループの開始フレーム )
+segmentLoopStartFrame ( セグメントループの開始フレーム )
+top ( 再生矩形の上端位置 )
+totalTime ( 合計時間 )
+visible ( 可視かどうか )
+width ( 再生矩形の横幅 )
+
+
イベント
+
+onCallbackCommand ( コールバックコマンドが発生した )
+onFrameUpdate ( ビデオフレームが更新された )
+onPeriod ( Periodイベントが発生した )
+onStatusChanged ( ステータスが変更された )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_VideoOverlay.html b/docs/kr2doc/contents/f_VideoOverlay_VideoOverlay.html new file mode 100644 index 0000000..62f28a2 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_VideoOverlay.html @@ -0,0 +1,53 @@ + + + + + + + VideoOverlay - VideoOverlay オブジェクトの構築 + + + + + + + + + +

VideoOverlay.VideoOverlay

+
+
機能/意味
+
+VideoOverlay オブジェクトの構築
+
タイプ
+
+VideoOverlayクラスのコンストラクタ
+
+
構文
+
+VideoOverlay(window)
+
+
引数
+
+ + + +
window  このレイヤを保有することになるウィンドウ ( Window クラスの + オブジェクト ) を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  VideoOverlay クラスのオブジェクトを構築します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_audioBalance.html b/docs/kr2doc/contents/f_VideoOverlay_audioBalance.html new file mode 100644 index 0000000..e3fa028 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_audioBalance.html @@ -0,0 +1,40 @@ + + + + + + + audioBalance - 音声バランス(パニング) + + + + + + + + + +

VideoOverlay.audioBalance

+
+
機能/意味
+
+音声バランス(パニング)
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ パン (音像位置) を表します。値を設定することもできます。
+ 音の聞こえる左右の位置を指定することができます。
+ -100000 〜 0 〜 100000 の数値で指定し、 -100000 が 完全に左、0 が中央、100000 が完全に右になります。
+ ステレオのソースを再生する場合は、パンは、左右どちらかのチャンネルを減衰させることで実現されます(0を指定すると両チャンネルが出力され、-100000を指定すると左チャンネルのみが出力される)。
+ この機能は、SWF再生時には利用できません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_audioVolume.html b/docs/kr2doc/contents/f_VideoOverlay_audioVolume.html new file mode 100644 index 0000000..012769a --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_audioVolume.html @@ -0,0 +1,38 @@ + + + + + + + audioVolume - 音声ボリューム + + + + + + + + + +

VideoOverlay.audioVolume

+
+
機能/意味
+
+音声ボリューム
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ 再生する音量を表します。値を設定することもできます。
+ 0 〜 100000 の数値で指定し、 0 が完全ミュート、100000 が 100% の音量となります。
+ この機能は、SWF再生時には利用できません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_brightness.html b/docs/kr2doc/contents/f_VideoOverlay_brightness.html new file mode 100644 index 0000000..f0bebd9 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_brightness.html @@ -0,0 +1,37 @@ + + + + + + + brightness - ビデオの輝度 + + + + + + + + + +

VideoOverlay.brightness

+
+
機能/意味
+
+ビデオの輝度
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ビデオの輝度を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_brightnessDefaultValue.html b/docs/kr2doc/contents/f_VideoOverlay_brightnessDefaultValue.html new file mode 100644 index 0000000..a54a110 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_brightnessDefaultValue.html @@ -0,0 +1,37 @@ + + + + + + + brightnessDefaultValue - ビデオの輝度既定値 + + + + + + + + + +

VideoOverlay.brightnessDefaultValue

+
+
機能/意味
+
+ビデオの輝度既定値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 輝度の既定値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMax.html b/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMax.html new file mode 100644 index 0000000..4288169 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMax.html @@ -0,0 +1,37 @@ + + + + + + + brightnessRangeMax - ビデオの輝度レンジ最大値 + + + + + + + + + +

VideoOverlay.brightnessRangeMax

+
+
機能/意味
+
+ビデオの輝度レンジ最大値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 輝度の幅の最大値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMin.html b/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMin.html new file mode 100644 index 0000000..e2fd369 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_brightnessRangeMin.html @@ -0,0 +1,37 @@ + + + + + + + brightnessRangeMin - ビデオの輝度レンジ最小値 + + + + + + + + + +

VideoOverlay.brightnessRangeMin

+
+
機能/意味
+
+ビデオの輝度レンジ最小値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 輝度の幅の最小値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_brightnessStepSize.html b/docs/kr2doc/contents/f_VideoOverlay_brightnessStepSize.html new file mode 100644 index 0000000..d13b86b --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_brightnessStepSize.html @@ -0,0 +1,38 @@ + + + + + + + brightnessStepSize - ビデオの輝度増減ステップ値 + + + + + + + + + +

VideoOverlay.brightnessStepSize

+
+
機能/意味
+
+ビデオの輝度増減ステップ値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ brightnessRangeMin から brightnessRangeMax への有効な増分を表します。
+ この値の単位で輝度を変更できます。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_cancelPeriodEvent.html b/docs/kr2doc/contents/f_VideoOverlay_cancelPeriodEvent.html new file mode 100644 index 0000000..bdc5c83 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_cancelPeriodEvent.html @@ -0,0 +1,53 @@ + + + + + + + cancelPeriodEvent - 指定フレームでのイベント発生の解除 + + + + + + + + + +

VideoOverlay.cancelPeriodEvent

+
+
機能/意味
+
+指定フレームでのイベント発生の解除
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+cancelPeriodEvent()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ setPeriodEventメソッドで設定したイベント発生を解除します。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.setPeriodEvent
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_cancelSegmentLoop.html b/docs/kr2doc/contents/f_VideoOverlay_cancelSegmentLoop.html new file mode 100644 index 0000000..3e1a819 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_cancelSegmentLoop.html @@ -0,0 +1,53 @@ + + + + + + + cancelSegmentLoop - フレーム間ループの解除 + + + + + + + + + +

VideoOverlay.cancelSegmentLoop

+
+
機能/意味
+
+フレーム間ループの解除
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+cancelSegmentLoop()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ setSegmentLoopメソッドで指定したセグメント間ループを解除します。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.setSegmentLoop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_close.html b/docs/kr2doc/contents/f_VideoOverlay_close.html new file mode 100644 index 0000000..dfb7d69 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_close.html @@ -0,0 +1,53 @@ + + + + + + + close - メディアを閉じる + + + + + + + + + +

VideoOverlay.close

+
+
機能/意味
+
+メディアを閉じる
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+close()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ メディアを閉じます。
+ メディアを再生するために確保されていたリソースなどもすべて解放します。
+
+
参照
+
+VideoOverlay.setSegmentLoop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_contrast.html b/docs/kr2doc/contents/f_VideoOverlay_contrast.html new file mode 100644 index 0000000..b42c018 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_contrast.html @@ -0,0 +1,37 @@ + + + + + + + contrast - ビデオのコントラスト + + + + + + + + + +

VideoOverlay.contrast

+
+
機能/意味
+
+ビデオのコントラスト
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ビデオのコントラストを表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_contrastDefaultValue.html b/docs/kr2doc/contents/f_VideoOverlay_contrastDefaultValue.html new file mode 100644 index 0000000..b542cad --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_contrastDefaultValue.html @@ -0,0 +1,37 @@ + + + + + + + contrastDefaultValue - ビデオのコントラスト既定値 + + + + + + + + + +

VideoOverlay.contrastDefaultValue

+
+
機能/意味
+
+ビデオのコントラスト既定値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ コントラストの既定値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMax.html b/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMax.html new file mode 100644 index 0000000..4c5dcfc --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMax.html @@ -0,0 +1,37 @@ + + + + + + + contrastRangeMax - ビデオのコントラストレンジ最大値 + + + + + + + + + +

VideoOverlay.contrastRangeMax

+
+
機能/意味
+
+ビデオのコントラストレンジ最大値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ コントラストの幅の最大値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMin.html b/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMin.html new file mode 100644 index 0000000..4abebec --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_contrastRangeMin.html @@ -0,0 +1,37 @@ + + + + + + + contrastRangeMin - ビデオのコントラストレンジ最小値 + + + + + + + + + +

VideoOverlay.contrastRangeMin

+
+
機能/意味
+
+ビデオのコントラストレンジ最小値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ コントラストの幅の最小値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_contrastStepSize.html b/docs/kr2doc/contents/f_VideoOverlay_contrastStepSize.html new file mode 100644 index 0000000..3ef1654 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_contrastStepSize.html @@ -0,0 +1,38 @@ + + + + + + + contrastStepSize - ビデオのコントラスト増減ステップ値 + + + + + + + + + +

VideoOverlay.contrastStepSize

+
+
機能/意味
+
+ビデオのコントラスト増減ステップ値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ contrastRangeMin から contrastRangeMax への有効な増分を表します。
+ この値の単位でコントラストを変更できます。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_enabledAudioStream.html b/docs/kr2doc/contents/f_VideoOverlay_enabledAudioStream.html new file mode 100644 index 0000000..7076c04 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_enabledAudioStream.html @@ -0,0 +1,43 @@ + + + + + + + enabledAudioStream - 再生対象音声ストリーム番号 + + + + + + + + + +

VideoOverlay.enabledAudioStream

+
+
機能/意味
+
+再生対象音声ストリーム番号
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ MPEGファイルのみで利用可能です。 + 再生対象のオーディオストリーム番号を取得できます。 + オーディオストリームが見付からない場合は-1を返します。 +
+
参照
+
+VideoOverlay.selectAudioStream
+VideoOverlay.numberOfAudioStream
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_fps.html b/docs/kr2doc/contents/f_VideoOverlay_fps.html new file mode 100644 index 0000000..54f88ab --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_fps.html @@ -0,0 +1,37 @@ + + + + + + + fps - フレームレート + + + + + + + + + +

VideoOverlay.fps

+
+
機能/意味
+
+フレームレート
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ フレームレート(フレーム/秒)を表します。
+ SWF 再生中では無効です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_frame.html b/docs/kr2doc/contents/f_VideoOverlay_frame.html new file mode 100644 index 0000000..a77c4ca --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_frame.html @@ -0,0 +1,42 @@ + + + + + + + frame - 現在のフレーム + + + + + + + + + +

VideoOverlay.frame

+
+
機能/意味
+
+現在のフレーム
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ メディアの再生位置をフレーム単位で表します。値を設定することもできます。
+ SWF 再生中では無効です。
+
+
参照
+
+VideoOverlay.position
+VideoOverlay.numberOfFrame
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_height.html b/docs/kr2doc/contents/f_VideoOverlay_height.html new file mode 100644 index 0000000..641eccc --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_height.html @@ -0,0 +1,43 @@ + + + + + + + height - 再生矩形の縦幅 + + + + + + + + + +

VideoOverlay.height

+
+
機能/意味
+
+再生矩形の縦幅
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生矩形の縦幅を表します。値を設定することもできます。
+  このプロパティは、現バージョンではレイヤ再生時は使用できません(常にサイズはビデオのサイズと同じになります)。
+ +
+
参照
+
+VideoOverlay.width
+VideoOverlay.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_hue.html b/docs/kr2doc/contents/f_VideoOverlay_hue.html new file mode 100644 index 0000000..df5416b --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_hue.html @@ -0,0 +1,37 @@ + + + + + + + hue - ビデオの色相 + + + + + + + + + +

VideoOverlay.hue

+
+
機能/意味
+
+ビデオの色相
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ビデオの色相を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_hueDefaultValue.html b/docs/kr2doc/contents/f_VideoOverlay_hueDefaultValue.html new file mode 100644 index 0000000..a1f3e2e --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_hueDefaultValue.html @@ -0,0 +1,37 @@ + + + + + + + hueDefaultValue - ビデオの色相既定値 + + + + + + + + + +

VideoOverlay.hueDefaultValue

+
+
機能/意味
+
+ビデオの色相既定値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 色相の既定値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_hueRangeMax.html b/docs/kr2doc/contents/f_VideoOverlay_hueRangeMax.html new file mode 100644 index 0000000..d050cda --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_hueRangeMax.html @@ -0,0 +1,37 @@ + + + + + + + hueRangeMax - ビデオの色相レンジ最大値 + + + + + + + + + +

VideoOverlay.hueRangeMax

+
+
機能/意味
+
+ビデオの色相レンジ最大値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 色相の幅の最大値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_hueRangeMin.html b/docs/kr2doc/contents/f_VideoOverlay_hueRangeMin.html new file mode 100644 index 0000000..65c1ad9 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_hueRangeMin.html @@ -0,0 +1,37 @@ + + + + + + + hueRangeMin - ビデオの色相レンジ最小値 + + + + + + + + + +

VideoOverlay.hueRangeMin

+
+
機能/意味
+
+ビデオの色相レンジ最小値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 色相の幅の最小値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_hueStepSize.html b/docs/kr2doc/contents/f_VideoOverlay_hueStepSize.html new file mode 100644 index 0000000..891b12b --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_hueStepSize.html @@ -0,0 +1,38 @@ + + + + + + + hueStepSize - ビデオの色相増減ステップ値 + + + + + + + + + +

VideoOverlay.hueStepSize

+
+
機能/意味
+
+ビデオの色相増減ステップ値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ hueRangeMin から hueRangeMax への有効な増分を表します。
+ この値の単位で色相を変更できます。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_layer1.html b/docs/kr2doc/contents/f_VideoOverlay_layer1.html new file mode 100644 index 0000000..915c493 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_layer1.html @@ -0,0 +1,37 @@ + + + + + + + layer1 - 描画レイヤ指定1 + + + + + + + + + +

VideoOverlay.layer1

+
+
機能/意味
+
+描画レイヤ指定1
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤ描画モード時、描画するレイヤを表します。値を設定することもできます。
+  layer1 プロパティと layer2 プロパティを異なるレイヤに設定することにより、同時に2つのレイヤに同じ動画を表示させることができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_layer2.html b/docs/kr2doc/contents/f_VideoOverlay_layer2.html new file mode 100644 index 0000000..01685b2 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_layer2.html @@ -0,0 +1,36 @@ + + + + + + + layer2 - 描画レイヤ指定2 + + + + + + + + + +

VideoOverlay.layer2

+
+
機能/意味
+
+描画レイヤ指定2
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ レイヤ描画モード時、描画するレイヤを表します。値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_left.html b/docs/kr2doc/contents/f_VideoOverlay_left.html new file mode 100644 index 0000000..ffc5f7a --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_left.html @@ -0,0 +1,41 @@ + + + + + + + left - 再生矩形の左端位置 + + + + + + + + + +

VideoOverlay.left

+
+
機能/意味
+
+再生矩形の左端位置
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生矩形の左端位置を表します。値を設定することもできます。
+
+
参照
+
+VideoOverlay.top
+VideoOverlay.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_loop.html b/docs/kr2doc/contents/f_VideoOverlay_loop.html new file mode 100644 index 0000000..073e5ad --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_loop.html @@ -0,0 +1,38 @@ + + + + + + + loop - ループ再生をするかどうか + + + + + + + + + +

VideoOverlay.loop

+
+
機能/意味
+
+ループ再生をするかどうか
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ループ再生の有効無効を表します。値を設定することもできます。
+ 真ならばループ、偽ならば非ループです。
+ この機能は、SWF再生時には利用できません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_mixingMovieAlpha.html b/docs/kr2doc/contents/f_VideoOverlay_mixingMovieAlpha.html new file mode 100644 index 0000000..2e7ecb1 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_mixingMovieAlpha.html @@ -0,0 +1,37 @@ + + + + + + + mixingMovieAlpha - ビデオの透明度 + + + + + + + + + +

VideoOverlay.mixingMovieAlpha

+
+
機能/意味
+
+ビデオの透明度
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ 0.0(完全に透明)〜1.0(完全に不透明)の範囲でビデオの透明度を表します。
+ ミキサーモードでのみ利用可能です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_mixingMovieBGColor.html b/docs/kr2doc/contents/f_VideoOverlay_mixingMovieBGColor.html new file mode 100644 index 0000000..936bc90 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_mixingMovieBGColor.html @@ -0,0 +1,37 @@ + + + + + + + mixingMovieBGColor - ビデオの背景色 + + + + + + + + + +

VideoOverlay.mixingMovieBGColor

+
+
機能/意味
+
+ビデオの背景色
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ビデオの背景色を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_mode.html b/docs/kr2doc/contents/f_VideoOverlay_mode.html new file mode 100644 index 0000000..38a2fce --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_mode.html @@ -0,0 +1,38 @@ + + + + + + + mode - オーバーレイorレイヤ描画の指定 + + + + + + + + + +

VideoOverlay.mode

+
+
機能/意味
+
+オーバーレイorレイヤ描画の指定
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ オーバーレイモードであるか、レイヤ描画モードであるか、ミキサーモードであるかを表します。値を設定することもできます。
+ オーバーレイモードの場合は vomOverlay、レイヤ描画モードの場合は vomLayer 、ミキサーモードの場合は vomMixer となります。
+ SWF 再生中では無効です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_numberOfAudioStream.html b/docs/kr2doc/contents/f_VideoOverlay_numberOfAudioStream.html new file mode 100644 index 0000000..d555937 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_numberOfAudioStream.html @@ -0,0 +1,42 @@ + + + + + + + numberOfAudioStream - 音声ストリーム数 + + + + + + + + + +

VideoOverlay.numberOfAudioStream

+
+
機能/意味
+
+音声ストリーム数
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ MPEGファイルのみで利用可能です。 + オーディオストリーム数を取得できます。 +
+
参照
+
+VideoOverlay.selectAudioStream
+VideoOverlay.enabledAudioStream
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_numberOfFrame.html b/docs/kr2doc/contents/f_VideoOverlay_numberOfFrame.html new file mode 100644 index 0000000..e5eae5d --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_numberOfFrame.html @@ -0,0 +1,37 @@ + + + + + + + numberOfFrame - 全フレーム数 + + + + + + + + + +

VideoOverlay.numberOfFrame

+
+
機能/意味
+
+全フレーム数
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 全フレーム数を表します。
+ SWF 再生中では無効です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_onCallbackCommand.html b/docs/kr2doc/contents/f_VideoOverlay_onCallbackCommand.html new file mode 100644 index 0000000..cfa1c42 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_onCallbackCommand.html @@ -0,0 +1,53 @@ + + + + + + + onCallbackCommand - コールバックコマンドが発生した + + + + + + + + + +

VideoOverlay.onCallbackCommand

+
+
機能/意味
+
+コールバックコマンドが発生した
+
タイプ
+
+VideoOverlayクラスのイベント
+
+
構文
+
+onCallbackCommand(command, arg)
+
+
引数
+
+ + + + + +
command  コマンド名を表す文字列です。
+
arg  コマンドに対する引数を表す文字列です。
+
+
+
説明
+
+ SWF 再生中に、Get URL アクション (指定 URL を開くアクション) が実行されたときに発生します。
+ SWF コンテンツ上で、このアクションの URL として 「FSCommand:(コマンド名)」 を指定し、 + ターゲットウィンドウに引数を指定するとこのイベントを発生させることができます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_onFrameUpdate.html b/docs/kr2doc/contents/f_VideoOverlay_onFrameUpdate.html new file mode 100644 index 0000000..d5b12e1 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_onFrameUpdate.html @@ -0,0 +1,51 @@ + + + + + + + onFrameUpdate - ビデオフレームが更新された + + + + + + + + + +

VideoOverlay.onFrameUpdate

+
+
機能/意味
+
+ビデオフレームが更新された
+
タイプ
+
+VideoOverlayクラスのイベント
+
+
構文
+
+onFrameUpdate(frame)
+
+
引数
+
+ + + +
frame ビデオのフレーム番号
+
+
+
説明
+
+ ビデオフレームが更新された後に呼び出されるメソッドです。
+ 引数であるframeは現在表示されているビデオフレームと完全に一致しているとは限りません。
+ レイヤ描画モード、ミキサーモード時のみ利用可能です。
+ この機能は、SWF再生時には利用できません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_onPeriod.html b/docs/kr2doc/contents/f_VideoOverlay_onPeriod.html new file mode 100644 index 0000000..fde9ef1 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_onPeriod.html @@ -0,0 +1,61 @@ + + + + + + + onPeriod - Periodイベントが発生した + + + + + + + + + +

VideoOverlay.onPeriod

+
+
機能/意味
+
+Periodイベントが発生した
+
タイプ
+
+VideoOverlayクラスのイベント
+
+
構文
+
+onPeriod(type)
+
+
引数
+
+ + + +
type  Periodイベントのタイプを表します。
+  以下のいずれかです。
+ perLoop : (通常の)ループの終端に達した
+ perSegLoop : セグメントループの終端に達した
+ perPeriod : setPeriodEvent メソッドで指定されたフレームに達した
+ perPrepare : prepare メソッドによる再生準備が完了した
+
+
+
説明
+
+ ループの終端や、 setPeriodEventによって指定されたフレームに達した場合、または prepare メソッドにより再生準備が完了した場合に呼び出されるメソッドです。
+ ループの終端や、 setPeriodEvent によって指定されたフレームに達した場合にこのイベントが呼ばれる時点では、再生状況によっては、すでに再生位置が指定された位置を超えている場合があります。現在の実際の再生位置を取得するには frame プロパティを参照してください。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.setPeriodEvent
+VideoOverlay.prepare
+VideoOverlay.frame
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_onStatusChanged.html b/docs/kr2doc/contents/f_VideoOverlay_onStatusChanged.html new file mode 100644 index 0000000..0b1d018 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_onStatusChanged.html @@ -0,0 +1,54 @@ + + + + + + + onStatusChanged - ステータスが変更された + + + + + + + + + +

VideoOverlay.onStatusChanged

+
+
機能/意味
+
+ステータスが変更された
+
タイプ
+
+VideoOverlayクラスのイベント
+
+
構文
+
+onStatusChanged(status)
+
+
引数
+
+ + + +
status  ステータス文字列を表します。
+  以下のいずれかです。
+ "unload" : メディアが開かれてない
+ "play" : メディアは再生中である
+ "stop" : メディアは停止中である
+ "pause" : メディアは一時停止中である
+
+
+
説明
+
+ このオブジェクトのステータスが変更されたときに発生します。
+ SWF再生時には再生の停止や一時停止に関する機能は利用できません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_open.html b/docs/kr2doc/contents/f_VideoOverlay_open.html new file mode 100644 index 0000000..f2500f9 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_open.html @@ -0,0 +1,54 @@ + + + + + + + open - メディアを開く + + + + + + + + + +

VideoOverlay.open

+
+
機能/意味
+
+メディアを開く
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+open(storage)
+
+
引数
+
+ + + +
storage  指定されたメディアを開きます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 指定されたメディアを開きます。
+ 現バージョンで再生可能なのは MPEG I (拡張子 .mpeg または .mpg または .mpv)、WMV、Macromedia Flash (拡張子 .swf) です。
+ ビデオのみの (オーディオとマルチプレクシングされていない) MPEG I ストリームの拡張子は .mpv にしてください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_pause.html b/docs/kr2doc/contents/f_VideoOverlay_pause.html new file mode 100644 index 0000000..3362a12 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_pause.html @@ -0,0 +1,48 @@ + + + + + + + pause - 一時停止 + + + + + + + + + +

VideoOverlay.pause

+
+
機能/意味
+
+一時停止
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+pause()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を一時停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_periodEventFrame.html b/docs/kr2doc/contents/f_VideoOverlay_periodEventFrame.html new file mode 100644 index 0000000..297a3ad --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_periodEventFrame.html @@ -0,0 +1,37 @@ + + + + + + + periodEventFrame - ピリオドイベントフレーム + + + + + + + + + +

VideoOverlay.periodEventFrame

+
+
機能/意味
+
+ピリオドイベントフレーム
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ periodイベントを発生させるフレームです。
+ 未設定の場合は負の値となります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_play.html b/docs/kr2doc/contents/f_VideoOverlay_play.html new file mode 100644 index 0000000..016dc12 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_play.html @@ -0,0 +1,48 @@ + + + + + + + play - 再生開始 + + + + + + + + + +

VideoOverlay.play

+
+
機能/意味
+
+再生開始
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+play()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_playRate.html b/docs/kr2doc/contents/f_VideoOverlay_playRate.html new file mode 100644 index 0000000..9fc7591 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_playRate.html @@ -0,0 +1,40 @@ + + + + + + + playRate - 再生速度 + + + + + + + + + +

VideoOverlay.playRate

+
+
機能/意味
+
+再生速度
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ メディアの再生速度を設定します。
+ 1.0 を指定すると通常の再生速度、0.5 では半分の再生速度、2では2倍の再生速度となります。
+ 設定可能値はDirectShowのフィルタによって決まります。
+ 参考 : 音声付のMPEGファイルの場合、0.0より大きい値から2.0までの値が設定可能です。音声なしのMPEGファイルの場合、0.0より大きい値からdoubleの範囲内(たぶん)で設定可能ですが、実際の再生速度は処理速度によって上限が決まります。
+ SWF 再生中では無効です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_position.html b/docs/kr2doc/contents/f_VideoOverlay_position.html new file mode 100644 index 0000000..83b5f75 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_position.html @@ -0,0 +1,42 @@ + + + + + + + position - 再生位置 + + + + + + + + + +

VideoOverlay.position

+
+
機能/意味
+
+再生位置
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ メディアの再生位置を ms 単位で表します。値を設定することもできます。
+ SWF 再生中では無効です。
+
+
参照
+
+VideoOverlay.frame
+VideoOverlay.totalTime
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_prepare.html b/docs/kr2doc/contents/f_VideoOverlay_prepare.html new file mode 100644 index 0000000..be98694 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_prepare.html @@ -0,0 +1,54 @@ + + + + + + + prepare - 再生準備 + + + + + + + + + +

VideoOverlay.prepare

+
+
機能/意味
+
+再生準備
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+prepare()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ メディアの1フレーム目を指定されているレイヤーに描画し、描画終了時にonPeriodイベントを発生させます。 + prepareメソッド コール後の再生は、onPeriodイベントを待機してから行ってください。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.onPeriod
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_resetMixingLayer.html b/docs/kr2doc/contents/f_VideoOverlay_resetMixingLayer.html new file mode 100644 index 0000000..f43de99 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_resetMixingLayer.html @@ -0,0 +1,49 @@ + + + + + + + resetMixingLayer - ミキシング対象レイヤの設定解除 + + + + + + + + + +

VideoOverlay.resetMixingLayer

+
+
機能/意味
+
+ミキシング対象レイヤの設定解除
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+resetMixingLayer()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ ビデオとレイヤーのミキシングを解除します。
+ ミキサーモードでのみ利用可能です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_rewind.html b/docs/kr2doc/contents/f_VideoOverlay_rewind.html new file mode 100644 index 0000000..5965863 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_rewind.html @@ -0,0 +1,48 @@ + + + + + + + rewind - 巻き戻し + + + + + + + + + +

VideoOverlay.rewind

+
+
機能/意味
+
+巻き戻し
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+rewind()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ メディアの再生位置を先頭に移動します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_saturation.html b/docs/kr2doc/contents/f_VideoOverlay_saturation.html new file mode 100644 index 0000000..b42b758 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_saturation.html @@ -0,0 +1,37 @@ + + + + + + + saturation - ビデオの彩度 + + + + + + + + + +

VideoOverlay.saturation

+
+
機能/意味
+
+ビデオの彩度
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+ ビデオの彩度を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_saturationDefaultValue.html b/docs/kr2doc/contents/f_VideoOverlay_saturationDefaultValue.html new file mode 100644 index 0000000..4d06732 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_saturationDefaultValue.html @@ -0,0 +1,37 @@ + + + + + + + saturationDefaultValue - ビデオの彩度既定値 + + + + + + + + + +

VideoOverlay.saturationDefaultValue

+
+
機能/意味
+
+ビデオの彩度既定値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 彩度の既定値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMax.html b/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMax.html new file mode 100644 index 0000000..acb542a --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMax.html @@ -0,0 +1,37 @@ + + + + + + + saturationRangeMax - ビデオの彩度レンジ最大値 + + + + + + + + + +

VideoOverlay.saturationRangeMax

+
+
機能/意味
+
+ビデオの彩度レンジ最大値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 彩度の幅の最大値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMin.html b/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMin.html new file mode 100644 index 0000000..2f987b0 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_saturationRangeMin.html @@ -0,0 +1,37 @@ + + + + + + + saturationRangeMin - ビデオの彩度レンジ最小値 + + + + + + + + + +

VideoOverlay.saturationRangeMin

+
+
機能/意味
+
+ビデオの彩度レンジ最小値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 彩度の幅の最小値を表します。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_saturationStepSize.html b/docs/kr2doc/contents/f_VideoOverlay_saturationStepSize.html new file mode 100644 index 0000000..2b3cd2a --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_saturationStepSize.html @@ -0,0 +1,38 @@ + + + + + + + saturationStepSize - ビデオの彩度増減ステップ値 + + + + + + + + + +

VideoOverlay.saturationStepSize

+
+
機能/意味
+
+ビデオの彩度増減ステップ値
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ saturationRangeMin から saturationRangeMax への有効な増分を表します。
+ この値の単位で彩度を変更できます。
+ ミキサーモードでのみ利用可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_segmentLoopEndFrame.html b/docs/kr2doc/contents/f_VideoOverlay_segmentLoopEndFrame.html new file mode 100644 index 0000000..b02f1e3 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_segmentLoopEndFrame.html @@ -0,0 +1,40 @@ + + + + + + + segmentLoopEndFrame - セグメントループの開始フレーム + + + + + + + + + +

VideoOverlay.segmentLoopEndFrame

+
+
機能/意味
+
+セグメントループの開始フレーム
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ セグメントループの始端フレームです。 +
+
参照
+
+VideoOverlay.setSegmentLoop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_segmentLoopStartFrame.html b/docs/kr2doc/contents/f_VideoOverlay_segmentLoopStartFrame.html new file mode 100644 index 0000000..32eb2ae --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_segmentLoopStartFrame.html @@ -0,0 +1,41 @@ + + + + + + + segmentLoopStartFrame - セグメントループの開始フレーム + + + + + + + + + +

VideoOverlay.segmentLoopStartFrame

+
+
機能/意味
+
+セグメントループの開始フレーム
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ セグメントループの始端フレームです。
+
+
参照
+
+VideoOverlay.setSegmentLoop
+VideoOverlay.cancelSegmentLoop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_selectAudioStream.html b/docs/kr2doc/contents/f_VideoOverlay_selectAudioStream.html new file mode 100644 index 0000000..1019769 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_selectAudioStream.html @@ -0,0 +1,58 @@ + + + + + + + selectAudioStream - 音声ストリームの選択 + + + + + + + + + +

VideoOverlay.selectAudioStream

+
+
機能/意味
+
+音声ストリームの選択
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+selectAudioStream(streamNumber)
+
+
引数
+
+ + + +
streamNumber 音声ストリーム番号を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 指定した音声ストリーム番号を有効にします。
+ 音声ストリームを複数含まないビデオでは使用できません。 +
+
参照
+
+VideoOverlay.numberOfAudioStream
+VideoOverlay.enabledAudioStream
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setBounds.html b/docs/kr2doc/contents/f_VideoOverlay_setBounds.html new file mode 100644 index 0000000..5d58372 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setBounds.html @@ -0,0 +1,64 @@ + + + + + + + setBounds - 再生矩形の位置とサイズを指定 + + + + + + + + + +

VideoOverlay.setBounds

+
+
機能/意味
+
+再生矩形の位置とサイズを指定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setBounds(left, top, width, height)
+
+
引数
+
+ + + + + + + + + +
left  メディアを再生するための矩形領域の左端位置を指定します。
+
top  メディアを再生するための矩形領域の上端位置を指定します。
+
width  メディアを再生するための矩形領域の横幅を指定します。
+
height  メディアを再生するための矩形領域の縦幅を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを再生するための矩形領域の位置とサイズを指定します。
+  座標は、ウィンドウのクライアント ( レイヤを表示可能な領域 ) 内での座標で、ピクセル単位で + 指定します。
+  現バージョンでは、レイヤ再生時にはこのメソッドで指定できるのは位置だけで、サイズは無視されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setMixingLayer.html b/docs/kr2doc/contents/f_VideoOverlay_setMixingLayer.html new file mode 100644 index 0000000..259fc4f --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setMixingLayer.html @@ -0,0 +1,58 @@ + + + + + + + setMixingLayer - ミキシング対象レイヤの設定 + + + + + + + + + +

VideoOverlay.setMixingLayer

+
+
機能/意味
+
+ミキシング対象レイヤの設定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setMixingLayer(layer)
+
+
引数
+
+ + + +
layer レイヤー
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 指定したレイヤーとビデオのミキシングを行います。
+ ミキシングはこのメソッドが呼び出された時のレイヤー画像と行われます。
+ レイヤー画像の更新を反映するには、再度このメソッドを呼び出す必要があります。
+ VideOverlay.OnFrameUpdate を使用して、 + レイヤー画像が更新されたことを調べてこのメソッドを呼び出すようにすれば、自動的に更新が反映されるようになります。 + onFrameUpdateで毎フレームこのメソッドを呼び出した場合、かなり負荷がかかりますのでそれは避けた方が良いです。
+ ミキサーモードでのみ利用可能です。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setPeriodEvent.html b/docs/kr2doc/contents/f_VideoOverlay_setPeriodEvent.html new file mode 100644 index 0000000..b1bb263 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setPeriodEvent.html @@ -0,0 +1,59 @@ + + + + + + + setPeriodEvent - 指定フレームでのイベント発生の指定 + + + + + + + + + +

VideoOverlay.setPeriodEvent

+
+
機能/意味
+
+指定フレームでのイベント発生の指定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setPeriodEvent(eventFrame)
+
+
引数
+
+ + + +
eventFrame onPeriodイベントを発生させるフレームを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 指定したフレームでonPeriodイベントを発生させます。
+ onPeriodイベントは、一度発生すると解除されます。再び発生させたい場合は再度このメソッドで設定してください。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.cancelPeriodEvent
+VideoOverlay.onPeriod
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setPos.html b/docs/kr2doc/contents/f_VideoOverlay_setPos.html new file mode 100644 index 0000000..cc43958 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setPos.html @@ -0,0 +1,57 @@ + + + + + + + setPos - 再生矩形の左上位置を指定 + + + + + + + + + +

VideoOverlay.setPos

+
+
機能/意味
+
+再生矩形の左上位置を指定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setPos(left, top)
+
+
引数
+
+ + + + + +
left  メディアを再生するための矩形領域の左端位置を指定します。
+
top  メディアを再生するための矩形領域の上端位置を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを再生するための矩形領域の左上位置を指定します。
+  座標は、ウィンドウのクライアント ( レイヤを表示可能な領域 ) 内での座標で、ピクセル単位で + 指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setSegmentLoop.html b/docs/kr2doc/contents/f_VideoOverlay_setSegmentLoop.html new file mode 100644 index 0000000..41d8391 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setSegmentLoop.html @@ -0,0 +1,67 @@ + + + + + + + setSegmentLoop - フレーム間ループの設定 + + + + + + + + + +

VideoOverlay.setSegmentLoop

+
+
機能/意味
+
+フレーム間ループの設定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setSegmentLoop(comeFrame, goFrame)
+
+
引数
+
+ + + + + +
comeFrame  ループ移動先フレーム(ループの始端フレーム)。再生がgoFrameに達したとき、再生ヘッドはこのフレームに移動します。
+
goFrame  ループ終点フレーム(ループの終端フレーム)。このフレームの1つ前のフレームの表示が終了した時、再生ヘッドはcomeFrameへ移動します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+ 指定されたフレーム間でループ処理を行います。
+ ループ終端(goFrame)では、onPeriodイベントが発生します。
+ comeFrameのフレームにはムービーファイルにキーフレームを設定しておく必要があります。
+ 設定されていない場合は、 + ループ終点から始点へ移動時に指定されたフレームに最も近いキーフレームへ再生位置が移動することになります。
+ この機能は、SWF再生時には利用できません。 +
+
参照
+
+VideoOverlay.cancelSegmentLoop
+VideoOverlay.onPeriod
+VideoOverlay.segmentLoopStartFrame
+VideoOverlay.segmentLoopEndFrame
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_setSize.html b/docs/kr2doc/contents/f_VideoOverlay_setSize.html new file mode 100644 index 0000000..878295f --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_setSize.html @@ -0,0 +1,56 @@ + + + + + + + setSize - 再生矩形のサイズを指定 + + + + + + + + + +

VideoOverlay.setSize

+
+
機能/意味
+
+再生矩形のサイズを指定
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+setSize(width, height)
+
+
引数
+
+ + + + + +
width  メディアを再生するための矩形領域の横幅を指定します。
+
height  メディアを再生するための矩形領域の縦幅を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを再生するための矩形領域のサイズをピクセル単位で指定します。
+  現バージョンでは、レイヤ再生時にはこのメソッドを使用することはできません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_stop.html b/docs/kr2doc/contents/f_VideoOverlay_stop.html new file mode 100644 index 0000000..17d5d8a --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_stop.html @@ -0,0 +1,48 @@ + + + + + + + stop - 再生停止 + + + + + + + + + +

VideoOverlay.stop

+
+
機能/意味
+
+再生停止
+
タイプ
+
+VideoOverlayクラスのメソッド
+
+
構文
+
+stop()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_top.html b/docs/kr2doc/contents/f_VideoOverlay_top.html new file mode 100644 index 0000000..3e20090 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_top.html @@ -0,0 +1,41 @@ + + + + + + + top - 再生矩形の上端位置 + + + + + + + + + +

VideoOverlay.top

+
+
機能/意味
+
+再生矩形の上端位置
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生矩形の上端位置を表します。値を設定することもできます。
+
+
参照
+
+VideoOverlay.left
+VideoOverlay.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_totalTime.html b/docs/kr2doc/contents/f_VideoOverlay_totalTime.html new file mode 100644 index 0000000..9443888 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_totalTime.html @@ -0,0 +1,37 @@ + + + + + + + totalTime - 合計時間 + + + + + + + + + +

VideoOverlay.totalTime

+
+
機能/意味
+
+合計時間
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み出し専用)
+
+
説明
+
+ 合計時間をms単位で表します。
+ SWF 再生中では無効です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_visible.html b/docs/kr2doc/contents/f_VideoOverlay_visible.html new file mode 100644 index 0000000..a3d7a31 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - 可視かどうか + + + + + + + + + +

VideoOverlay.visible

+
+
機能/意味
+
+可視かどうか
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生領域が可視かどうかを指定します。値を設定することもできます。
+  真ならば可視、偽ならば不可視です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_VideoOverlay_width.html b/docs/kr2doc/contents/f_VideoOverlay_width.html new file mode 100644 index 0000000..e3ff444 --- /dev/null +++ b/docs/kr2doc/contents/f_VideoOverlay_width.html @@ -0,0 +1,42 @@ + + + + + + + width - 再生矩形の横幅 + + + + + + + + + +

VideoOverlay.width

+
+
機能/意味
+
+再生矩形の横幅
+
タイプ
+
+VideoOverlayクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生矩形の横幅を表します。値を設定することもできます。
+  このプロパティは、現バージョンではレイヤ再生時は使用できません(常にサイズはビデオのサイズと同じになります)。
+
+
参照
+
+VideoOverlay.height
+VideoOverlay.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder.html new file mode 100644 index 0000000..e23dae9 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder.html @@ -0,0 +1,48 @@ + + + + + + + WaveSoundBuffer.PhaseVocoder + + + + + + + + +

WaveSoundBuffer.PhaseVocoder

+ WaveSoundBuffer.PhaseVocoder クラスは、このインスタンスを WaveSoundBuffer.filters に登録して使用するためのフィルタで、Phase Vocoder (位相ボコーダ) の機能を提供します。
+ Phase Vocoder では、再生速度を保ったままでの音程の変更 (ピッチ・シフタ) や、音程を保ったままでの再生速度の変更 (タイム・シフタ) を行うことができます。
+
+

メンバ

+
+
コンストラクタ
+
+PhaseVocoder
+
+
メソッド
+
+なし +
+
プロパティ
+
+interface ( インターフェースオブジェクトを取得 )
+overlap ( オーバーラップカウント )
+pitch ( 周波数軸方向のスケール )
+time ( 時間軸方向のスケール )
+window ( ウィンドウサイズ )
+
+
イベント
+
+なし +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_PhaseVocoder.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_PhaseVocoder.html new file mode 100644 index 0000000..ae140b6 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_PhaseVocoder.html @@ -0,0 +1,50 @@ + + + + + + + PhaseVocoder - PhaseVocoder オブジェクトの構築 + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.PhaseVocoder

+
+
機能/意味
+
+PhaseVocoder オブジェクトの構築
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのコンストラクタ
+
+
構文
+
+PhaseVocoder()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  WaveSoundBuffer.PhaseVocoder クラスのオブジェクトを構築します。
+  作成したインスタンスは WaveSoundBuffer.filters で WaveSoundBuffer の + インスタンスに登録してください。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_interface.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_interface.html new file mode 100644 index 0000000..514e0d8 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_interface.html @@ -0,0 +1,36 @@ + + + + + + + interface - インターフェースオブジェクトを取得 + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.interface

+
+
機能/意味
+
+インターフェースオブジェクトを取得
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのプロパティ (読み書き可能)
+
+
説明
+
+  内部的に使用されます。スクリプトからは使用しないでください。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_overlap.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_overlap.html new file mode 100644 index 0000000..00dad20 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_overlap.html @@ -0,0 +1,41 @@ + + + + + + + overlap - オーバーラップカウント + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.overlap

+
+
機能/意味
+
+オーバーラップカウント
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのプロパティ (読み書き可能)
+
+
説明
+
+  オーバーラップカウント (オーバーサンプリング係数) を表します。
+  0か2〜32の間の2の累乗の数値を指定してください。デフォルトは0です。
+  0を指定すると、現在のtimeプロパティの値に従って、適切な値が設定されます。
+  この数値を大きくすると、時間軸方向の分解能が高くなります。とくに再生速度を遅くする場合は多めの数値をしていすると良いでしょう。
+  値を大きくするとCPUをより使用するようになります。
+  このプロパティへの変更はリアルタイムに反映されますが、バッファリングの関係で、実際にそれが再生されるまでに2秒程度の時間がかかります。また、切り替わり時にノイズが乗る事があります。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_pitch.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_pitch.html new file mode 100644 index 0000000..018b90b --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_pitch.html @@ -0,0 +1,42 @@ + + + + + + + pitch - 周波数軸方向のスケール + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.pitch

+
+
機能/意味
+
+周波数軸方向のスケール
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのプロパティ (読み書き可能)
+
+
説明
+
+  周波数軸方向のスケールを表します。値を設定することもできます。
+  指定可能な数値は 0.0 を超える数値です。
+  1.0 を指定すると 周波数軸方向のスケールは変わりません(音程は変わりません)。
+  たとえば 1.0594630943593 を指定すると、半音分、音程があがります。
+  たとえば 0.9438743126817 を指定すると、半音分、音程が下がります。
+  time プロパティも pitch プロパティも 1 の場合でも Phase Vocoder フィルタは動作し、音質は多少劣化し、CPU 時間も使用します。両方とも 1 のまま使うのであれば、フィルタ配列からこのフィルタをはずしておいたほうがよいでしょう。
+  このプロパティへの変更はリアルタイムに反映されますが、バッファリングの関係で、実際にそれが再生されるまでに2秒程度の時間がかかります。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_time.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_time.html new file mode 100644 index 0000000..af4d029 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_time.html @@ -0,0 +1,42 @@ + + + + + + + time - 時間軸方向のスケール + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.time

+
+
機能/意味
+
+時間軸方向のスケール
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのプロパティ (読み書き可能)
+
+
説明
+
+  時間軸方向のスケールを表します。値を設定することもできます。
+  指定可能な数値は 0 を超える実数です。ただし、あまりに小さい数値はCPU負荷が高くなり、最悪の場合は再生ができない場合があります。また、1.95を超えたあたりから音質が悪くなり、overlapを大きくしても音質を改善できない場合があります(内部アルゴリズムの特性に起因しています)。
+  1.0 を指定すると 時間軸方向のスケールは変わりません(再生速度は変わりません)。
+  たとえば 1.5 を指定すると、時間軸方向のスケールが1.5倍になり、遅く再生されます (再生に1.5倍の時間がかかるようになります)。
+  たとえば 0.5 を指定すると、時間軸方向のスケールが0.5倍になり、速く再生されます (倍速で再生されます)。 +  time プロパティも pitch プロパティも 1 の場合でも Phase Vocoder フィルタは動作し、音質は多少劣化し、CPU 時間も使用します。両方とも 1 のまま使うのであれば、フィルタ配列からこのフィルタをはずしておいたほうがよいでしょう。
+  このプロパティへの変更はリアルタイムに反映されますが、バッファリングの関係で、実際にそれが再生されるまでに2秒程度の時間がかかります。また、切り替わり時にノイズが乗る事があります。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_window.html b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_window.html new file mode 100644 index 0000000..cb49174 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.PhaseVocoder_window.html @@ -0,0 +1,41 @@ + + + + + + + window - ウィンドウサイズ + + + + + + + + + +

WaveSoundBuffer.PhaseVocoder.window

+
+
機能/意味
+
+ウィンドウサイズ
+
タイプ
+
+WaveSoundBuffer.PhaseVocoderクラスのプロパティ (読み書き可能)
+
+
説明
+
+  PhaseVocoder内部で使用している FFT (高速フーリエ変換) のウィンドウサイズ(フレームサイズ)を表します。 +  64〜32768の間の2の累乗の数値を指定してください。デフォルトは4096です。
+  この数値を大きくすると、周波数軸方向の分解能は高くなります(音程が狂いにくくなります)が、時間軸方向の分解能が低くなります(音のアタックがにぶくなります)。
+  値を大きくするとCPUをより使用するようになります。音質を落とさずにすむ、最低の値を探してください。
+  44.1KHzの音声ではウィンドウサイズ=256ぐらいがよいでしょう。楽曲ではウィンドウサイズ=4096ぐらいが良いでしょう。
+  このプロパティへの変更は、WaveSoundBuffer.openメソッドが実行されたときに反映されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer.html b/docs/kr2doc/contents/f_WaveSoundBuffer.html new file mode 100644 index 0000000..c6a547d --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer.html @@ -0,0 +1,69 @@ + + + + + + + WaveSoundBuffer + + + + + + + + +

WaveSoundBuffer

+ WaveSoundBuffer クラスは、PCMの再生を管理するクラスです。
+ WaveSoundBuffer クラスでは、ループチューナ で作成した .sli ファイルを読み込み、処理することができます。詳しくはループチューナの説明をご覧ください。
+
+

メンバ

+
+
コンストラクタ
+
+WaveSoundBuffer
+
+
メソッド
+
+fade ( フェードを開始する )
+freeDirectSound ( DirectSound の解放 )
+getVisBuffer ( 視覚化用データの取得 )
+open ( メディアを開く )
+play ( メディアを再生する )
+stop ( メディアを停止する )
+stopFade ( フェードを停止する )
+
+
プロパティ
+
+bits ( 量子化ビット数 )
+channels ( チャンネル数 )
+filters ( フィルタ配列 )
+flags ( フラグ )
+frequency ( サンプリング周波数 )
+globalFocusMode ( フォーカスモード )
+globalVolume ( 大域音量 )
+labels ( ラベル )
+looping ( ループ再生を行うかどうか )
+pan ( パン )
+paused ( 一時停止状態かどうか )
+position ( 再生位置 )
+samplePosition ( 再生位置 )
+status ( ステータス )
+totalTime ( メディアの再生時間 )
+useVisBuffer ( 視覚化用バッファを使用するかどうか )
+volume ( 音量 )
+volume2 ( 第2音量 )
+
+
イベント
+
+onFadeCompleted ( フェードが終了した )
+onLabel ( ラベルを通過した )
+onStatusChanged ( ステータスが変更された )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_WaveSoundBuffer.html b/docs/kr2doc/contents/f_WaveSoundBuffer_WaveSoundBuffer.html new file mode 100644 index 0000000..74ee07d --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_WaveSoundBuffer.html @@ -0,0 +1,53 @@ + + + + + + + WaveSoundBuffer - WaveSoundBuffer オブジェクトの構築 + + + + + + + + + +

WaveSoundBuffer.WaveSoundBuffer

+
+
機能/意味
+
+WaveSoundBuffer オブジェクトの構築
+
タイプ
+
+WaveSoundBufferクラスのコンストラクタ
+
+
構文
+
+WaveSoundBuffer(owner)
+
+
引数
+
+ + + +
owner  イベントの発生先を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  WaveSoundBuffer クラスのオブジェクトを構築します。
+  イベントが発生すると owner で指定したオブジェクトの action メソッドを呼び出します。owner に null を指定すると action メソッドは呼ばれません。通常は Window クラスのオブジェクトを owner に指定します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_bits.html b/docs/kr2doc/contents/f_WaveSoundBuffer_bits.html new file mode 100644 index 0000000..5b2f489 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_bits.html @@ -0,0 +1,38 @@ + + + + + + + bits - 量子化ビット数 + + + + + + + + + +

WaveSoundBuffer.bits

+
+
機能/意味
+
+量子化ビット数
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在再生中のサウンドの量子化ビット数を表します。
+  CD と同じ量子化ビット数の場合は 16 になります。
+  メディアが開かれていない状態では正常な値を返さない可能性があります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_channels.html b/docs/kr2doc/contents/f_WaveSoundBuffer_channels.html new file mode 100644 index 0000000..ff93493 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_channels.html @@ -0,0 +1,38 @@ + + + + + + + channels - チャンネル数 + + + + + + + + + +

WaveSoundBuffer.channels

+
+
機能/意味
+
+チャンネル数
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在再生中のサウンドのチャンネル数を表します。
+  モノラルの場合は 1、ステレオの場合は 2 になります。
+  メディアが開かれていない状態では正常な値を返さない可能性があります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_fade.html b/docs/kr2doc/contents/f_WaveSoundBuffer_fade.html new file mode 100644 index 0000000..e88157f --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_fade.html @@ -0,0 +1,60 @@ + + + + + + + fade - フェードを開始する + + + + + + + + + +

WaveSoundBuffer.fade

+
+
機能/意味
+
+フェードを開始する
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+fade(to, time, delay=0)
+
+
引数
+
+ + + + + + + +
to  到達させる音量を指定します。
+  音量の指定については WaveSoundBuffer.volume プロパティを参照して + ください。
+
time  フェードにかける時間を ms 単位で指定します。
+
delay  フェード開始までの待ち時間を ms 単位で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  フェード ( 連続的な音量の変化 ) を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_filters.html b/docs/kr2doc/contents/f_WaveSoundBuffer_filters.html new file mode 100644 index 0000000..c43f9e7 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_filters.html @@ -0,0 +1,46 @@ + + + + + + + filters - フィルタ配列 + + + + + + + + + +

WaveSoundBuffer.filters

+
+
機能/意味
+
+フィルタ配列
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  インサーションフィルタオブジェクトを保持している配列(Arrayクラスのインスタンス)です。
+  この配列にフィルタオブジェクトを登録することにより、再生中にリアルタイムで音声に対して + 様々な効果をかけることができます。
+  フィルタ配列への変更が反映されるのは、WaveSoundBuffer.openメソッドが実行された + 時だけです。それまでは、この配列への変更を行っても反映はされません。
+例:
var buf = new WaveSoundBuffer(window);
+(略)
+buf.filters.clear(); // フィルタ配列をクリア
+buf.filters.add(new WaveSoundBuffer.PhaseVocoder()); // PhaseVocoderフィルタを追加
+buf.filters[0].time = 0.5; // 倍速再生
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_flags.html b/docs/kr2doc/contents/f_WaveSoundBuffer_flags.html new file mode 100644 index 0000000..4fa3be1 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_flags.html @@ -0,0 +1,48 @@ + + + + + + + flags - フラグ + + + + + + + + + +

WaveSoundBuffer.flags

+
+
機能/意味
+
+フラグ
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  フラグを表すオブジェクトを得ることができます。
+  このオブジェクトには 0 〜 15 のプロパティがあり、それぞれ各フラグの値を表しています。プロパティには間接メンバ選択演算子 ('[ ]' 演算子) を用いてアクセスすることができます。これらのプロパティには値を設定することもできます。値は 0 〜 9999 の範囲であり、これを下回ったり、上回ることはできません。
+  このオブジェクトの count プロパティは常に 16 を返します。
+  このオブジェクトには reset メソッドがあり、このメソッドを実行すると、全てのフラグが 0 にリセットされます。
+  メディアを開いていない場合は、このオブジェクトのプロパティに値を設定しても無視されます。
+  このオブジェクトは一見配列オブジェクトにも見えますが、いわゆるTJSの配列オブジェクト('Array' クラスのオブジェクト) ではありません。
+  フラグは WaveSoundBuffer.open メソッドで全て 0 にリセットされます。
+例:
var buf = new WaveSoundBuffer(window);
+(略)
+buf.flags.reset(); // 全てのフラグを 0 にリセット
+var cnt = buf.flags.count; // cnt には 16 が入る
+buf.flags[4] = 34; // 4番のフラグに34を代入
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_freeDirectSound.html b/docs/kr2doc/contents/f_WaveSoundBuffer_freeDirectSound.html new file mode 100644 index 0000000..b682a4f --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_freeDirectSound.html @@ -0,0 +1,52 @@ + + + + + + + freeDirectSound - DirectSound の解放 + + + + + + + + + +

WaveSoundBuffer.freeDirectSound

+
+
機能/意味
+
+DirectSound の解放
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+freeDirectSound()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  DirectSound を解放します。すべての WaveSoundBuffer クラスのオブジェクトは停止状態に + なります。
+  DirectSound と WaveMapper ( MCI 等 ) による再生を同時に行えない環境などで DirectSound を + 解放するためにこのメソッドを使います。
+  このメソッドは WaveSoundBuffer クラス上にしか存在しません (WaveSoundBufferから作られたオブジェクト上にこのメソッドはありません)。使用する際は WaveSoundBuffer.freeDirectSound(); としてください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_frequency.html b/docs/kr2doc/contents/f_WaveSoundBuffer_frequency.html new file mode 100644 index 0000000..6dd34d7 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_frequency.html @@ -0,0 +1,39 @@ + + + + + + + frequency - サンプリング周波数 + + + + + + + + + +

WaveSoundBuffer.frequency

+
+
機能/意味
+
+サンプリング周波数
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  現在再生中のサウンドのサンプリング周波数を表します。値を設定することもできます。
+  CD と同じサンプリング周波数の場合は 44100 になります。
+  メディアが開かれていない状態では正常な値を返さない可能性があります。
+  値を設定すると、その周波数で再生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_getVisBuffer.html b/docs/kr2doc/contents/f_WaveSoundBuffer_getVisBuffer.html new file mode 100644 index 0000000..d3e244d --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_getVisBuffer.html @@ -0,0 +1,79 @@ + + + + + + + getVisBuffer - 視覚化用データの取得 + + + + + + + + + +

WaveSoundBuffer.getVisBuffer

+
+
機能/意味
+
+視覚化用データの取得
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+getVisBuffer(buffer, numsamples, channel, ahead=0)
+
+
引数
+
+ + + + + + + + + +
buffer  出力データを書き込むバッファを指定します。
+  バッファは 16bit 符号付き整数の配列で、numsamples 引数および channels 引数 + で指定したサンプルが書き込まれるのに十分な個数 ( numsamples * channels 以上 ) + である必要があります。
+  channels に 1 以外を指定した場合は、各チャネルのサンプルはインターリーブされて + ( ステレオならば 右 左 右 左 ・・・・の順に ) 格納されます。
+  配列の先頭要素へのポインタを指定する必要がありますが、整数型にキャストして + 渡してください。
+
numsamples  取得するサンプル数を指定します。
+
channel  取得するチャンネル数を指定します。
+  1 を指定すると、モノラルの場合はそのまま、そうでない場合は 1チャンネルにダウンミックス + されたデータを得ることができます。
+  1 以外の数値を指定する場合は、再生中のサウンドと同じチャンネル数を指定する必要がありま + す。このばあいは、そのままのデータを得ることができます。
+
ahead  先読みするサンプル数を指定します。
+  現在の再生位置から、この引数で指定したサンプル数だけ先にあるサンプルから取得することができます。
+  0 を指定するか、この引数を省略すると、現在の再生位置からの取得になります。
+
+
+
戻り値
+
+取得できたサンプル数が戻ります。
+
説明
+
+  視覚化用に PCM データを取得します。
+  現在の再生位置から PCM データを読み込み、buffer 引数で指定した配列に書き込みます。
+  ただし、バッファの状態や再生形式によっては正常にデータを読み込めない可能性もあります。
+  このメソッドは C や C++ 等で書かれたプラグインから利用されることを想定してますので、たとえば + buffer 引数に TJS の配列を指定する、などのようなことはできません。
+  このメソッドを使用するには WaveSoundBuffer.useVisBuffer プロパティを真に指定する + 必要があります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_globalFocusMode.html b/docs/kr2doc/contents/f_WaveSoundBuffer_globalFocusMode.html new file mode 100644 index 0000000..edc027e --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_globalFocusMode.html @@ -0,0 +1,42 @@ + + + + + + + globalFocusMode - フォーカスモード + + + + + + + + + +

WaveSoundBuffer.globalFocusMode

+
+
機能/意味
+
+フォーカスモード
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォーカスモードを表します。値を設定することもできます。
+  フォーカスモードは、アプリケーションが最小化したときや非アクティブになったときにミュートするモードです。
+  sgfmNeverMuteを指定すると、アプリケーションがどのような状態でもミュートはしません。
+  sgfmMuteOnMinimizeを指定すると、アプリケーションが最小化時にミュートします。
+  sgfmMuteOnDeactivateを指定すると、アプリケーションが非アクティブ化したときにミュートします。
+  このプロパティは WaveSoundBuffer クラス上にしか存在しません (WaveSoundBufferから作られたオブジェクト上にこのプロパティはありません)。使用する際は WaveSoundBuffer.globalFocusMode としてください。
+  このプロパティの設定よりも、コマンドラインオプションで指定した '-wsmute' (DirectSound ミュート) の設定が優先されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_globalVolume.html b/docs/kr2doc/contents/f_WaveSoundBuffer_globalVolume.html new file mode 100644 index 0000000..9da5247 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_globalVolume.html @@ -0,0 +1,39 @@ + + + + + + + globalVolume - 大域音量 + + + + + + + + + +

WaveSoundBuffer.globalVolume

+
+
機能/意味
+
+大域音量
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  大域音量 (マスターボリューム)を表します。値を設定することもできます。
+  この音量は、すべての WaveSoundBuffer に影響します。
+  0 〜 100000 の数値で指定し、 0 が完全ミュート、100000 が 100% の音量となります。デフォルトの値は 100000 です。
+  このプロパティは WaveSoundBuffer クラス上にしか存在しません (WaveSoundBufferから作られたオブジェクト上にこのプロパティはありません)。使用する際は WaveSoundBuffer.globalVolume としてください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_labels.html b/docs/kr2doc/contents/f_WaveSoundBuffer_labels.html new file mode 100644 index 0000000..fca791c --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_labels.html @@ -0,0 +1,43 @@ + + + + + + + labels - ラベル + + + + + + + + + +

WaveSoundBuffer.labels

+
+
機能/意味
+
+ラベル
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ラベルを表すオブジェクトを得ることができます。
+  このオブジェクトは辞書配列で、それぞれ、ループ情報中のラベルの名前をメンバ名とした要素が入っています。それぞれの要素も辞書配列で、name メンバはラベルの名前を表し、position メンバはミリ秒単位でのラベルの位置を表し、samplePosition はサンプル数単位でのラベルの位置を表しています。
+  この辞書配列は読み出し専用であると考えてください。値を代入したり、新しいメンバを作成しても反映されることはありません。
+例:
var buf = new WaveSoundBuffer(window);
+(略)
+debug.message(buf.labels['start'].position); // 'start' というラベル名の位置をミリ秒単位で
+debug.message(buf.labels['start'].samplePosition); // 'start' というラベル名の位置をサンプル数単位で
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_looping.html b/docs/kr2doc/contents/f_WaveSoundBuffer_looping.html new file mode 100644 index 0000000..23d45ca --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_looping.html @@ -0,0 +1,38 @@ + + + + + + + looping - ループ再生を行うかどうか + + + + + + + + + +

WaveSoundBuffer.looping

+
+
機能/意味
+
+ループ再生を行うかどうか
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ループ再生を行うかどうかを表します。値を設定することもできます。
+  真を指定するとループ再生がされます。
+  偽を指定しても、再生しているメディアにループ情報があれば、ループ情報が利用されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_onFadeCompleted.html b/docs/kr2doc/contents/f_WaveSoundBuffer_onFadeCompleted.html new file mode 100644 index 0000000..280e415 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_onFadeCompleted.html @@ -0,0 +1,44 @@ + + + + + + + onFadeCompleted - フェードが終了した + + + + + + + + + +

WaveSoundBuffer.onFadeCompleted

+
+
機能/意味
+
+フェードが終了した
+
タイプ
+
+WaveSoundBufferクラスのイベント
+
+
構文
+
+onFadeCompleted()
+
+
引数
+
+なし
+
+
説明
+
+  WaveSoundBuffer.fade メソッドで開始したフェードが終了したときに発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_onLabel.html b/docs/kr2doc/contents/f_WaveSoundBuffer_onLabel.html new file mode 100644 index 0000000..c4eefe7 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_onLabel.html @@ -0,0 +1,48 @@ + + + + + + + onLabel - ラベルを通過した + + + + + + + + + +

WaveSoundBuffer.onLabel

+
+
機能/意味
+
+ラベルを通過した
+
タイプ
+
+WaveSoundBufferクラスのイベント
+
+
構文
+
+onLabel(name)
+
+
引数
+
+ + + +
name  通過したラベル名です。
+
+
+
説明
+
+  再生位置がラベルを通過した際に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_onStatusChanged.html b/docs/kr2doc/contents/f_WaveSoundBuffer_onStatusChanged.html new file mode 100644 index 0000000..ff77d8f --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_onStatusChanged.html @@ -0,0 +1,49 @@ + + + + + + + onStatusChanged - ステータスが変更された + + + + + + + + + +

WaveSoundBuffer.onStatusChanged

+
+
機能/意味
+
+ステータスが変更された
+
タイプ
+
+WaveSoundBufferクラスのイベント
+
+
構文
+
+onStatusChanged(status)
+
+
引数
+
+ + + +
status  新しいステータスです。
+  WaveSoundBuffer.status プロパティを参照してください。
+
+
+
説明
+
+  再生のステータス ( 状態 ) が変わった時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_open.html b/docs/kr2doc/contents/f_WaveSoundBuffer_open.html new file mode 100644 index 0000000..77992ea --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_open.html @@ -0,0 +1,55 @@ + + + + + + + open - メディアを開く + + + + + + + + + +

WaveSoundBuffer.open

+
+
機能/意味
+
+メディアを開く
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+open(storage)
+
+
引数
+
+ + + +
storage +  再生したいストレージを指定します。
+
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  指定されたメディアを開きます。このメソッドは再生を開始しません。
+  指定されたストレージ名に .sli を付加したファイル名があれば、サウンドループ情報として読み込みます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_pan.html b/docs/kr2doc/contents/f_WaveSoundBuffer_pan.html new file mode 100644 index 0000000..546f1b4 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_pan.html @@ -0,0 +1,38 @@ + + + + + + + pan - パン + + + + + + + + + +

WaveSoundBuffer.pan

+
+
機能/意味
+
+パン
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  パン (音像位置) を表します。値を設定することもできます。
+  音の聞こえる左右の位置を指定することができます。
+  -100000 〜 0 〜 100000 の数値で指定し、 -100000 が 完全に左、0 が中央、100000 が完全に右になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_paused.html b/docs/kr2doc/contents/f_WaveSoundBuffer_paused.html new file mode 100644 index 0000000..12a5098 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_paused.html @@ -0,0 +1,39 @@ + + + + + + + paused - 一時停止状態かどうか + + + + + + + + + +

WaveSoundBuffer.paused

+
+
機能/意味
+
+一時停止状態かどうか
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  一時停止状態かどうかを表します。値を設定することもできます。
+  真の場合は一時停止状態です。
+ + +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_play.html b/docs/kr2doc/contents/f_WaveSoundBuffer_play.html new file mode 100644 index 0000000..fbf27db --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_play.html @@ -0,0 +1,48 @@ + + + + + + + play - メディアを再生する + + + + + + + + + +

WaveSoundBuffer.play

+
+
機能/意味
+
+メディアを再生する
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+play()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアの再生を開始します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_position.html b/docs/kr2doc/contents/f_WaveSoundBuffer_position.html new file mode 100644 index 0000000..22f5eea --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_position.html @@ -0,0 +1,38 @@ + + + + + + + position - 再生位置 + + + + + + + + + +

WaveSoundBuffer.position

+
+
機能/意味
+
+再生位置
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生位置を ms 単位で表します。値を設定するとその位置に移動します。
+ + +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_samplePosition.html b/docs/kr2doc/contents/f_WaveSoundBuffer_samplePosition.html new file mode 100644 index 0000000..e1a9197 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_samplePosition.html @@ -0,0 +1,36 @@ + + + + + + + samplePosition - 再生位置 + + + + + + + + + +

WaveSoundBuffer.samplePosition

+
+
機能/意味
+
+再生位置
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生位置をサンプル数単位で表します。値を設定するとその位置に移動します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_status.html b/docs/kr2doc/contents/f_WaveSoundBuffer_status.html new file mode 100644 index 0000000..bdaa012 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_status.html @@ -0,0 +1,40 @@ + + + + + + + status - ステータス + + + + + + + + + +

WaveSoundBuffer.status

+
+
機能/意味
+
+ステータス
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  現在の状態を表します。
+  状態は文字列で表され、以下の値をとります。
+ "unload" : メディアが開かれてない
+ "play" : メディアは再生中である
+ "stop" : メディアは停止中である
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_stop.html b/docs/kr2doc/contents/f_WaveSoundBuffer_stop.html new file mode 100644 index 0000000..3054cf7 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_stop.html @@ -0,0 +1,48 @@ + + + + + + + stop - メディアを停止する + + + + + + + + + +

WaveSoundBuffer.stop

+
+
機能/意味
+
+メディアを停止する
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+stop()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  メディアを停止します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_stopFade.html b/docs/kr2doc/contents/f_WaveSoundBuffer_stopFade.html new file mode 100644 index 0000000..2434e4b --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_stopFade.html @@ -0,0 +1,49 @@ + + + + + + + stopFade - フェードを停止する + + + + + + + + + +

WaveSoundBuffer.stopFade

+
+
機能/意味
+
+フェードを停止する
+
タイプ
+
+WaveSoundBufferクラスのメソッド
+
+
構文
+
+stopFade()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  WaveSoundBuffer.fade メソッドで開始したフェードを強制的に停止します。
+  音量は停止させた時点のままになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_totalTime.html b/docs/kr2doc/contents/f_WaveSoundBuffer_totalTime.html new file mode 100644 index 0000000..eb6b6f4 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_totalTime.html @@ -0,0 +1,38 @@ + + + + + + + totalTime - メディアの再生時間 + + + + + + + + + +

WaveSoundBuffer.totalTime

+
+
機能/意味
+
+メディアの再生時間
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メディアの総再生時間を ms 単位で表します。
+ + +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_useVisBuffer.html b/docs/kr2doc/contents/f_WaveSoundBuffer_useVisBuffer.html new file mode 100644 index 0000000..5da08e9 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_useVisBuffer.html @@ -0,0 +1,40 @@ + + + + + + + useVisBuffer - 視覚化用バッファを使用するかどうか + + + + + + + + + +

WaveSoundBuffer.useVisBuffer

+
+
機能/意味
+
+視覚化用バッファを使用するかどうか
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  視覚化用バッファを使用するかどうか表します。値を設定することもできます。
+  真を指定すると視覚化用バッファが利用可能になり、WaveSoundBuffer.getVisBuffer メソッドが + 利用可能になります。
+  デフォルトでは偽になっています。真を指定すると偽を指定したときよりも多くのメモリと CPU 時間を + 消費するようになるので注意してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_volume.html b/docs/kr2doc/contents/f_WaveSoundBuffer_volume.html new file mode 100644 index 0000000..716ec94 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_volume.html @@ -0,0 +1,37 @@ + + + + + + + volume - 音量 + + + + + + + + + +

WaveSoundBuffer.volume

+
+
機能/意味
+
+音量
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することもできます。
+ 0 〜 100000 の数値で指定し、 0 が完全ミュート、100000 が 100% の音量となります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_WaveSoundBuffer_volume2.html b/docs/kr2doc/contents/f_WaveSoundBuffer_volume2.html new file mode 100644 index 0000000..c5b3917 --- /dev/null +++ b/docs/kr2doc/contents/f_WaveSoundBuffer_volume2.html @@ -0,0 +1,42 @@ + + + + + + + volume2 - 第2音量 + + + + + + + + + +

WaveSoundBuffer.volume2

+
+
機能/意味
+
+第2音量
+
タイプ
+
+WaveSoundBufferクラスのプロパティ (読み書き可能)
+
+
説明
+
+  再生する音量を表します。値を設定することができます。
+  WaveSoundBuffer.volume プロパティと違うのは、このプロパティは + WaveSoundBuffer.fade メソッドでも変化しないということです。
+  最終的な音量は、volume プロパティとこのプロパティの積で決定されます。volume プロパティが + 100000 ( 100% ) で volume2 プロパティも 100000 ( 100% ) ならば 100% × 100% = 100% で + 100% の音量で再生されます。volume プロパティが 50000 ( 50% ) で volume2 プロパティが 75000 ( 75% ) ならば + 50% × 75% = 37.5% で 37.5 % の音量で再生されます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window.html b/docs/kr2doc/contents/f_Window.html new file mode 100644 index 0000000..5926c7a --- /dev/null +++ b/docs/kr2doc/contents/f_Window.html @@ -0,0 +1,108 @@ + + + + + + + Window + + + + + + + + +

Window

+ Window クラスは、ウィンドウを管理するためのクラスです。
+
+

メンバ

+
+
コンストラクタ
+
+Window
+
+
メソッド
+
+add ( 管理オブジェクトの追加 )
+beginMove ( ウィンドウ移動の開始 )
+bringToFront ( ウィンドウを最前面に移動 )
+close ( ウィンドウを閉じる )
+hideMouseCursor ( マウスカーソルを一時的に隠す )
+postInputEvent ( 入力イベントの生成 )
+registerMessageReceiver ( メッセージ受信関数の登録/登録削除 )
+remove ( 管理オブジェクトの削除 )
+removeMaskRegion ( ウィンドウリージョンの解除 )
+setInnerSize ( クライアントサイズの設定 )
+setLayerPos ( レイヤの表示オフセットの設定 )
+setMaskRegion ( ウィンドウリージョンをマスクに従って設定 )
+setMaxSize ( ウィンドウの最大サイズの設定 )
+setMinSize ( ウィンドウの最小サイズの設定 )
+setPos ( ウィンドウ位置の設定 )
+setSize ( ウィンドウサイズの設定 )
+setZoom ( レイヤ拡大倍率の設定 )
+showModal ( モーダルでウィンドウを表示 )
+update ( ウィンドウ内容の強制的な描画 )
+
+
プロパティ
+
+HWND ( ウィンドウハンドル )
+borderStyle ( ウィンドウ外見 )
+caption ( ウィンドウのキャプション )
+drawDevice ( 描画デバイス )
+focusable ( フォーカスを取得可能か )
+focusedLayer ( フォーカスを持っているレイヤオブジェクト )
+fullScreen ( フルスクリーンかどうか )
+height ( ウィンドウの縦幅 )
+imeMode ( デフォルトのIMEモード )
+innerHeight ( クライアント領域の縦幅 )
+innerSunken ( クライアント領域が凹んだような外見を持つかどうか )
+innerWidth ( クライアント領域の横幅 )
+layerLeft ( レイヤの表示オフセットの左端位置 )
+layerTop ( レイヤの表示オフセットの上端位置 )
+left ( ウィンドウの左端位置 )
+mainWindow ( メインウィンドウ )
+maxHeight ( ウィンドウの最大の縦幅 )
+maxWidth ( ウィンドウの最大の横幅 )
+menu ( ルートメニューオブジェクト )
+minHeight ( ウィンドウの最小の縦幅 )
+minWidth ( ウィンドウの最小の横幅 )
+mouseCursorState ( マウスカーソル表示状態 )
+primaryLayer ( プライマリレイヤオブジェクト )
+showScrollBars ( スクロールバーを表示するかどうか )
+stayOnTop ( 常に最上位に表示するかどうか )
+top ( ウィンドウの上端位置 )
+trapKey ( キー入力をトラップするか )
+useMouseKey ( マウスキーを使用するかどうか )
+visible ( ウィンドウが表示されているかどうか )
+width ( ウィンドウの横幅 )
+zoomDenom ( レイヤ拡大倍率(分母) )
+zoomNumer ( レイヤ拡大倍率(分子) )
+
+
イベント
+
+onActivate ( ウィンドウがアクティブになったとき )
+onClick ( ウィンドウがクリックされた )
+onCloseQuery ( ウィンドウを閉じる確認 )
+onDeactivate ( ウィンドウが非アクティブになったとき )
+onDoubleClick ( ウィンドウがダブルクリックされた )
+onFileDrop ( ファイルがドロップされた )
+onKeyDown ( キーが押された )
+onKeyPress ( 文字が入力された )
+onKeyUp ( キーが離された )
+onMouseDown ( マウスのボタンが押された )
+onMouseEnter ( マウスが入ってきた )
+onMouseLeave ( マウスが出ていった )
+onMouseMove ( マウスが移動した )
+onMouseUp ( マウスのボタンが離された )
+onMouseWheel ( マウスホイールが回転した )
+onPopupHide ( ポップアップウィンドウを閉じる )
+onResize ( ウィンドウのサイズが変化した )
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_HWND.html b/docs/kr2doc/contents/f_Window_HWND.html new file mode 100644 index 0000000..1747edf --- /dev/null +++ b/docs/kr2doc/contents/f_Window_HWND.html @@ -0,0 +1,44 @@ + + + + + + + HWND - ウィンドウハンドル + + + + + + + + + +

Window.HWND

+
+
機能/意味
+
+ウィンドウハンドル
+
タイプ
+
+Windowクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ウィンドウハンドルを表します。
+  ここで得られるのは整数ですが、プラグインなどでこの数値を使う場合は HWND 型に + キャストして使ってください。
+  Window.borderStyle など、一部のプロパティは値が変更されるときに + ウィンドウをいったん破棄し、作り替えますので注意してください。
+
+
参照
+
+Window.registerMessageReceiver
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_Window.html b/docs/kr2doc/contents/f_Window_Window.html new file mode 100644 index 0000000..97a0ee1 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_Window.html @@ -0,0 +1,49 @@ + + + + + + + Window - Window オブジェクトの構築 + + + + + + + + + +

Window.Window

+
+
機能/意味
+
+Window オブジェクトの構築
+
タイプ
+
+Windowクラスのコンストラクタ
+
+
構文
+
+Window()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Window クラスのオブジェクトを構築します。
+  ウィンドウは非表示の状態で作成され、位置やサイズは未定義 ( どこかにの位置に適当なサイズ ) です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_add.html b/docs/kr2doc/contents/f_Window_add.html new file mode 100644 index 0000000..adfb8c4 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_add.html @@ -0,0 +1,57 @@ + + + + + + + add - 管理オブジェクトの追加 + + + + + + + + + +

Window.add

+
+
機能/意味
+
+管理オブジェクトの追加
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+add(object)
+
+
引数
+
+ + + +
object  管理されるオブジェクトを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  管理オブジェクトを追加します。ここで指定されたオブジェクトは、ウィンドウが無効化 + されるときに自動的に無効化されるようになります。
+
+
参照
+
+Window.remove
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_beginMove.html b/docs/kr2doc/contents/f_Window_beginMove.html new file mode 100644 index 0000000..685e748 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_beginMove.html @@ -0,0 +1,55 @@ + + + + + + + beginMove - ウィンドウ移動の開始 + + + + + + + + + +

Window.beginMove

+
+
機能/意味
+
+ウィンドウ移動の開始
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+beginMove()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウのマウスでの移動を開始します。通常、ウィンドウのタイトルバーをドラッグすると + ウィンドウを移動することができますが、このメソッドはその動作をシミュレートします。
+  Window.onMouseDown イベントハンドラ内でこのメソッドを呼ぶと、任意の箇所で + ウィンドウをドラッグして移動可能にすることができます。
+
+
参照
+
+Window.onMouseDown
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_borderStyle.html b/docs/kr2doc/contents/f_Window_borderStyle.html new file mode 100644 index 0000000..8512739 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_borderStyle.html @@ -0,0 +1,43 @@ + + + + + + + borderStyle - ウィンドウ外見 + + + + + + + + + +

Window.borderStyle

+
+
機能/意味
+
+ウィンドウ外見
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの外見を表します。値を設定することもできます。
+  以下の値を設定することができます。
+bsDialog : サイズ変更不可の、ダイアログボックスと同様の外見を持ちます。
+bsSingle : サイズ変更不可のウィンドウです。
+bsNone : ボーダーのないウィンドウです。
+bsSizeable : サイズ変更可の一般的なウィンドウです。デフォルトです。
+bsToolWindow : サイズ変更不可のツールウィンドウ(キャプションの小さいウィンドウ) です。
+bsSizeToolWin : bsToolWindow と似ていますが、サイズ変更が可能です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_bringToFront.html b/docs/kr2doc/contents/f_Window_bringToFront.html new file mode 100644 index 0000000..ca3636c --- /dev/null +++ b/docs/kr2doc/contents/f_Window_bringToFront.html @@ -0,0 +1,49 @@ + + + + + + + bringToFront - ウィンドウを最前面に移動 + + + + + + + + + +

Window.bringToFront

+
+
機能/意味
+
+ウィンドウを最前面に移動
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+bringToFront()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウを最前面に移動します。アプリケーションが非アクティブの場合はアプリケーション + 自体もアクティブにします。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_caption.html b/docs/kr2doc/contents/f_Window_caption.html new file mode 100644 index 0000000..6f3f3b0 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_caption.html @@ -0,0 +1,37 @@ + + + + + + + caption - ウィンドウのキャプション + + + + + + + + + +

Window.caption

+
+
機能/意味
+
+ウィンドウのキャプション
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウのキャプション ( タイトルバーのタイトル ) を表します。 + 値を設定することもできます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_close.html b/docs/kr2doc/contents/f_Window_close.html new file mode 100644 index 0000000..b96fd20 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_close.html @@ -0,0 +1,53 @@ + + + + + + + close - ウィンドウを閉じる + + + + + + + + + +

Window.close

+
+
機能/意味
+
+ウィンドウを閉じる
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+close()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Window.showModal メソッドで表示されたウィンドウを閉じます。ウィンドウを閉じる前に Window.onCloseQuery イベントが発生し、ウィンドウを閉じることができるかどうかを確認することができます。
+
+
参照
+
+Window.showModal
+Window.onCloseQuery
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_drawDevice.html b/docs/kr2doc/contents/f_Window_drawDevice.html new file mode 100644 index 0000000..1d1a614 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_drawDevice.html @@ -0,0 +1,42 @@ + + + + + + + drawDevice - 描画デバイス + + + + + + + + + +

Window.drawDevice

+
+
機能/意味
+
+描画デバイス
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  描画デバイスオブジェクトを表します。
+  値を設定することもできます。値を設定すると、以前このウィンドウに指定されていた描画デバイスは自動的に + 無効になります (invalidateされます)。
+  デフォルトでは、Window.PassThroughDrawDevice というクラスのインスタンスが指定されています。
+  Window.PassThroughDrawDevice の詳細については、吉里吉里ソースの core/visual/win32/PassThroughDrawDevice.cpp 内の説明も参照してください。
+  独自の描画デバイス (プラグインで提供される物) を指定する場合は、そのプラグインのドキュメントに + 従ってください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_focusable.html b/docs/kr2doc/contents/f_Window_focusable.html new file mode 100644 index 0000000..9b7094d --- /dev/null +++ b/docs/kr2doc/contents/f_Window_focusable.html @@ -0,0 +1,45 @@ + + + + + + + focusable - フォーカスを取得可能か + + + + + + + + + +

Window.focusable

+
+
機能/意味
+
+フォーカスを取得可能か
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フォーカスを取得可能かどうかを表します。値を設定することもできます。
+  偽に設定すると、フォーカスを取得できなくなる、つまり、ウィンドウがアクティブにならなくなります。副作用として、タイトルバーをつかんでのウィンドウの移動やウィンドウのリサイズ、「×」ボタンを押してウィンドウを閉じる操作もできなくなります。
+  キーボード入力を得たいときは Window.trapKey プロパティを使用することができます。
+  通常、これは、ポップアップメニューのように、もっとも手前に表示されるが、それ自身はフォーカスを得ないウィンドウの実装に用います。
+  現バージョンでは、ウィンドウがフルスクリーン化するとき、あるいはフルスクリーンから復帰するときに、このプロパティの設定内容が失われる可能性があります。
+
+
参照
+
+Window.trapKey
+Window.onPopupHide
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_focusedLayer.html b/docs/kr2doc/contents/f_Window_focusedLayer.html new file mode 100644 index 0000000..955310a --- /dev/null +++ b/docs/kr2doc/contents/f_Window_focusedLayer.html @@ -0,0 +1,39 @@ + + + + + + + focusedLayer - フォーカスを持っているレイヤオブジェクト + + + + + + + + + +

Window.focusedLayer

+
+
機能/意味
+
+フォーカスを持っているレイヤオブジェクト
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  現在 フォーカス を持っているレイヤオブジェクトを表します。 + 値を設定することもできます。
+  null の場合はどのレイヤもフォーカスを持っていません。レイヤオブジェクトを + 設定するとそのレイヤにフォーカスが移ります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_fullScreen.html b/docs/kr2doc/contents/f_Window_fullScreen.html new file mode 100644 index 0000000..7f86745 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_fullScreen.html @@ -0,0 +1,39 @@ + + + + + + + fullScreen - フルスクリーンかどうか + + + + + + + + + +

Window.fullScreen

+
+
機能/意味
+
+フルスクリーンかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  フルスクリーンかどうかを表します。値を設定することもできます。
+  真を指定すると現在のウィンドウのクライアント領域がフルスクリーンになります。フルスクリーン + 時の画面解像度はクライアント領域のサイズになります。
+  偽を指定するとウィンドウ表示になります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_height.html b/docs/kr2doc/contents/f_Window_height.html new file mode 100644 index 0000000..55cb0ba --- /dev/null +++ b/docs/kr2doc/contents/f_Window_height.html @@ -0,0 +1,41 @@ + + + + + + + height - ウィンドウの縦幅 + + + + + + + + + +

Window.height

+
+
機能/意味
+
+ウィンドウの縦幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの縦幅を表します。値を設定することもできます。
+
+
参照
+
+Window.width
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_hideMouseCursor.html b/docs/kr2doc/contents/f_Window_hideMouseCursor.html new file mode 100644 index 0000000..ab91b07 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_hideMouseCursor.html @@ -0,0 +1,50 @@ + + + + + + + hideMouseCursor - マウスカーソルを一時的に隠す + + + + + + + + + +

Window.hideMouseCursor

+
+
機能/意味
+
+マウスカーソルを一時的に隠す
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+hideMouseCursor()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  マウスカーソルを一時的に隠します。マウスを少しでも動かすと + マウスカーソルは再び表示されるようになります。
+  このメソッドは、Window.mouseCursorStatemcsTempHiddenに設定するのと同じ効果を持ちます。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_imeMode.html b/docs/kr2doc/contents/f_Window_imeMode.html new file mode 100644 index 0000000..9074fc6 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_imeMode.html @@ -0,0 +1,39 @@ + + + + + + + imeMode - デフォルトのIMEモード + + + + + + + + + +

Window.imeMode

+
+
機能/意味
+
+デフォルトのIMEモード
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  デフォルトのIMEモードを表します。値を設定することもできます。
+  ここで指定したモードは、どのレイヤにもフォーカスが無い状態に設定されるモードです。
+  未指定の場合は imDisableで、これはどのレイヤにもフォーカスが無い状態では IME は無効状態であるということになります。
+  指定可能な値については Layer.imeMode を参照してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_innerHeight.html b/docs/kr2doc/contents/f_Window_innerHeight.html new file mode 100644 index 0000000..df7db9b --- /dev/null +++ b/docs/kr2doc/contents/f_Window_innerHeight.html @@ -0,0 +1,42 @@ + + + + + + + innerHeight - クライアント領域の縦幅 + + + + + + + + + +

Window.innerHeight

+
+
機能/意味
+
+クライアント領域の縦幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  クライアント領域の縦幅を表します。 + 値を設定することもできます。
+
+
参照
+
+Window.innerWidth
+Window.setInnerSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_innerSunken.html b/docs/kr2doc/contents/f_Window_innerSunken.html new file mode 100644 index 0000000..974eacc --- /dev/null +++ b/docs/kr2doc/contents/f_Window_innerSunken.html @@ -0,0 +1,46 @@ + + + + + + + innerSunken - クライアント領域が凹んだような外見を持つかどうか + + + + + + + + + +

Window.innerSunken

+
+
機能/意味
+
+クライアント領域が凹んだような外見を持つかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウのクライアント領域が凹んだような外見を持つかどうかを表します。 + 値を設定することもできます。
+  真を指定すると凹んだような外見をもち、偽を指定するとフラットな外見を持つようになります。
+  この凹んだような外見のための枠 ( 凹んだような視覚効果を持つ部分 ) はクライアント領域 + には含まれません。
+
+
参照
+
+Window.innerWidth
+Window.innerHeight
+Window.setInnerSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_innerWidth.html b/docs/kr2doc/contents/f_Window_innerWidth.html new file mode 100644 index 0000000..04c7e14 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_innerWidth.html @@ -0,0 +1,42 @@ + + + + + + + innerWidth - クライアント領域の横幅 + + + + + + + + + +

Window.innerWidth

+
+
機能/意味
+
+クライアント領域の横幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  クライアント領域の横幅を表します。 + 値を設定することもできます。
+
+
参照
+
+Window.innerHeight
+Window.setInnerSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_layerLeft.html b/docs/kr2doc/contents/f_Window_layerLeft.html new file mode 100644 index 0000000..fe71ada --- /dev/null +++ b/docs/kr2doc/contents/f_Window_layerLeft.html @@ -0,0 +1,41 @@ + + + + + + + layerLeft - レイヤの表示オフセットの左端位置 + + + + + + + + + +

Window.layerLeft

+
+
機能/意味
+
+レイヤの表示オフセットの左端位置
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示オフセットの左端位置を表します。値を設定することもできます。
+
+
参照
+
+Window.layerTop
+Window.setLayerPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_layerTop.html b/docs/kr2doc/contents/f_Window_layerTop.html new file mode 100644 index 0000000..f7986b4 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_layerTop.html @@ -0,0 +1,41 @@ + + + + + + + layerTop - レイヤの表示オフセットの上端位置 + + + + + + + + + +

Window.layerTop

+
+
機能/意味
+
+レイヤの表示オフセットの上端位置
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの表示オフセットの上端位置を表します。値を設定することもできます。
+
+
参照
+
+Window.layerLeft
+Window.setLayerPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_left.html b/docs/kr2doc/contents/f_Window_left.html new file mode 100644 index 0000000..4e3be56 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_left.html @@ -0,0 +1,42 @@ + + + + + + + left - ウィンドウの左端位置 + + + + + + + + + +

Window.left

+
+
機能/意味
+
+ウィンドウの左端位置
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの左端位置を表します。値を設定することもできます。
+  左端位置はスクリーンの原点 ( 左上隅 ) からの x 座標です。
+
+
参照
+
+Window.top
+Window.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_mainWindow.html b/docs/kr2doc/contents/f_Window_mainWindow.html new file mode 100644 index 0000000..c491124 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_mainWindow.html @@ -0,0 +1,36 @@ + + + + + + + mainWindow - メインウィンドウ + + + + + + + + + +

Window.mainWindow

+
+
機能/意味
+
+メインウィンドウ
+
タイプ
+
+Windowクラスのプロパティ (読み出し専用)
+
+
説明
+
+  メインウィンドウ ( 最初に作成されたウィンドウ ) を表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_maxHeight.html b/docs/kr2doc/contents/f_Window_maxHeight.html new file mode 100644 index 0000000..f102604 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_maxHeight.html @@ -0,0 +1,46 @@ + + + + + + + maxHeight - ウィンドウの最大の縦幅 + + + + + + + + + +

Window.maxHeight

+
+
機能/意味
+
+ウィンドウの最大の縦幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの最大の縦幅を表します。値を設定することもできます。0を指定すると制限は無くなります。
+
+
参照
+
+Window.height
+Window.maxWidth
+Window.minWidth
+Window.minHeight
+Window.setMinSize
+Window.setMaxSize
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_maxWidth.html b/docs/kr2doc/contents/f_Window_maxWidth.html new file mode 100644 index 0000000..c510740 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_maxWidth.html @@ -0,0 +1,46 @@ + + + + + + + maxWidth - ウィンドウの最大の横幅 + + + + + + + + + +

Window.maxWidth

+
+
機能/意味
+
+ウィンドウの最大の横幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの最大の横幅を表します。値を設定することもできます。0を指定すると制限は無くなります。
+
+
参照
+
+Window.width
+Window.maxHeight
+Window.minWidth
+Window.minHeight
+Window.setMinSize
+Window.setMaxSize
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_menu.html b/docs/kr2doc/contents/f_Window_menu.html new file mode 100644 index 0000000..256cf66 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_menu.html @@ -0,0 +1,37 @@ + + + + + + + menu - ルートメニューオブジェクト + + + + + + + + + +

Window.menu

+
+
機能/意味
+
+ルートメニューオブジェクト
+
タイプ
+
+Windowクラスのプロパティ (読み出し専用)
+
+
説明
+
+  ルートメニューオブジェクト ( Menu クラスのオブジェクト ) を表します。
+  このルートメニューオブジェクトの子として登録されたメニューはメニューバーに並ぶことになります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_minHeight.html b/docs/kr2doc/contents/f_Window_minHeight.html new file mode 100644 index 0000000..294b301 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_minHeight.html @@ -0,0 +1,46 @@ + + + + + + + minHeight - ウィンドウの最小の縦幅 + + + + + + + + + +

Window.minHeight

+
+
機能/意味
+
+ウィンドウの最小の縦幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの最小の縦幅を表します。値を設定することもできます。0を指定すると制限は無くなります。
+
+
参照
+
+Window.height
+Window.minWidth
+Window.maxWidth
+Window.maxHeight
+Window.setMinSize
+Window.setMaxSize
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_minWidth.html b/docs/kr2doc/contents/f_Window_minWidth.html new file mode 100644 index 0000000..70417a5 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_minWidth.html @@ -0,0 +1,46 @@ + + + + + + + minWidth - ウィンドウの最小の横幅 + + + + + + + + + +

Window.minWidth

+
+
機能/意味
+
+ウィンドウの最小の横幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの最小の横幅を表します。値を設定することもできます。0を指定すると制限は無くなります。
+
+
参照
+
+Window.width
+Window.minHeight
+Window.maxWidth
+Window.maxHeight
+Window.setMinSize
+Window.setMaxSize
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_mouseCursorState.html b/docs/kr2doc/contents/f_Window_mouseCursorState.html new file mode 100644 index 0000000..aad6a31 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_mouseCursorState.html @@ -0,0 +1,39 @@ + + + + + + + mouseCursorState - マウスカーソル表示状態 + + + + + + + + + +

Window.mouseCursorState

+
+
機能/意味
+
+マウスカーソル表示状態
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  マウスカーソルの表示状態を表します。値を設定することもできます。
+  mcsVisibleを指定すると、マウスカーソルは表示状態になります。これはデフォルトの状態です。
+  mcsTempHiddenを指定すると、マウスカーソルは非表示状態になりますが、少しでもマウスを動かすとmcsVisibleに変わり、表示状態になります。Window.hideMouseCursorメソッドを呼び出すとこの状態になります。
+  mcsHiddenを指定すると、マウスカーソルは非表示状態になります。マウスを動かしても表示状態にはなりません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onActivate.html b/docs/kr2doc/contents/f_Window_onActivate.html new file mode 100644 index 0000000..206570c --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onActivate.html @@ -0,0 +1,51 @@ + + + + + + + onActivate - ウィンドウがアクティブになったとき + + + + + + + + + +

Window.onActivate

+
+
機能/意味
+
+ウィンドウがアクティブになったとき
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onActivate()
+
+
引数
+
+なし
+
+
説明
+
+  ウィンドウがアクティブになったときに呼び出されるイベント関数を表します。
+  このイベントは、ウィンドウが既にアクティブの場合にも発生する可能性があるので注意してください (完全に onActivate → onDeactivate → onActivate → …… の順に発生する保証がない )。
+
+
参照
+
+Window.onDeactivate
+System.onActivate
+System.onDeactivate
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onClick.html b/docs/kr2doc/contents/f_Window_onClick.html new file mode 100644 index 0000000..69925ae --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onClick.html @@ -0,0 +1,56 @@ + + + + + + + onClick - ウィンドウがクリックされた + + + + + + + + + +

Window.onClick

+
+
機能/意味
+
+ウィンドウがクリックされた
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onClick(x, y)
+
+
引数
+
+ + + + + +
x  ウィンドウがクリックされた位置の x 座標 ( クライアント座標での ) の値です。
+
y  ウィンドウがクリックされた位置の y 座標 ( クライアント座標での ) の値です。
+
+
+
説明
+
+  ウィンドウがクリックされた時に発生します。
+
+
参照
+
+Window.onMouseDown
+Window.onDoubleClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onCloseQuery.html b/docs/kr2doc/contents/f_Window_onCloseQuery.html new file mode 100644 index 0000000..670be3e --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onCloseQuery.html @@ -0,0 +1,51 @@ + + + + + + + onCloseQuery - ウィンドウを閉じる確認 + + + + + + + + + +

Window.onCloseQuery

+
+
機能/意味
+
+ウィンドウを閉じる確認
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onCloseQuery(canclose)
+
+
引数
+
+ + + +
canclose  ウィンドウを閉じることができるかどうかが渡されます。下位クラスから上位クラスのイベントハンドラが + 呼ばれる課程で、下位クラスが決定した「ウィンドウを閉じることができるか」が渡されます。
+ +
+
+
説明
+
+  ウィンドウを閉じることができるかどうかを確認するためのイベントです。ウィンドウを閉じることが + できない場合、上位クラスの同メソッドに引数として false を渡してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onDeactivate.html b/docs/kr2doc/contents/f_Window_onDeactivate.html new file mode 100644 index 0000000..15ff9ea --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onDeactivate.html @@ -0,0 +1,51 @@ + + + + + + + onDeactivate - ウィンドウが非アクティブになったとき + + + + + + + + + +

Window.onDeactivate

+
+
機能/意味
+
+ウィンドウが非アクティブになったとき
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onDeactivate()
+
+
引数
+
+なし
+
+
説明
+
+  ウィンドウが非アクティブになったときに呼び出されるイベント関数を表します。
+  このイベントは、ウィンドウが既に非アクティブの場合にも発生する可能性があるので注意してください (完全に onActivate → onDeactivate → onActivate → …… の順に発生する保証がない )。
+
+
参照
+
+Window.onActivate
+System.onActivate
+System.onDeactivate
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onDoubleClick.html b/docs/kr2doc/contents/f_Window_onDoubleClick.html new file mode 100644 index 0000000..42192e9 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onDoubleClick.html @@ -0,0 +1,55 @@ + + + + + + + onDoubleClick - ウィンドウがダブルクリックされた + + + + + + + + + +

Window.onDoubleClick

+
+
機能/意味
+
+ウィンドウがダブルクリックされた
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onDoubleClick(x, y)
+
+
引数
+
+ + + + + +
x  ウィンドウがダブルクリックされた位置の x 座標 ( クライアント座標での ) の値です。
+
y  ウィンドウがダブルクリックされた位置の y 座標 ( クライアント座標での ) の値です。
+
+
+
説明
+
+  ウィンドウがダブルクリックされた時に発生します。
+
+
参照
+
+Window.onClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onFileDrop.html b/docs/kr2doc/contents/f_Window_onFileDrop.html new file mode 100644 index 0000000..48a8813 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onFileDrop.html @@ -0,0 +1,50 @@ + + + + + + + onFileDrop - ファイルがドロップされた + + + + + + + + + +

Window.onFileDrop

+
+
機能/意味
+
+ファイルがドロップされた
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onFileDrop(files)
+
+
引数
+
+ + + +
files  ドロップされたファイル名が格納された配列(Array)オブジェクトです。
+
+
+
説明
+
+  ファイルがエクスプローラなどからウィンドウにドロップされたときに発生します。
+  単一のファイルがドロップされた場合でも引数には配列オブジェクトが渡されます (最初の要素が + そのファイルになります )。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onKeyDown.html b/docs/kr2doc/contents/f_Window_onKeyDown.html new file mode 100644 index 0000000..1073a2a --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onKeyDown.html @@ -0,0 +1,61 @@ + + + + + + + onKeyDown - キーが押された + + + + + + + + + +

Window.onKeyDown

+
+
機能/意味
+
+キーが押された
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onKeyDown(key, shift)
+
+
引数
+
+ + + + + +
key  押されたキーの仮想キーコードの値です。
+
shift  キーが押された時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+  また、キーボードが長時間押され、キーリピートが発生している場合は + 以下の値も組み合わされます。
+ ssRepeat : キーリピートが発生した
+
+
+
説明
+
+  キーが押された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onKeyPress.html b/docs/kr2doc/contents/f_Window_onKeyPress.html new file mode 100644 index 0000000..10adb4b --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onKeyPress.html @@ -0,0 +1,50 @@ + + + + + + + onKeyPress - 文字が入力された + + + + + + + + + +

Window.onKeyPress

+
+
機能/意味
+
+文字が入力された
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onKeyPress(key)
+
+
引数
+
+ + + +
key  入力された文字です。
+
+
+
説明
+
+  文字が入力されたときに発生します。Window.onKeyDown と異なるのは、onKeyDown が + 仮想キーコードを扱うのに対し、このイベントは文字そのものを扱います。押されたキーが + 文字とは関係のないキー (ファンクションキーなど) の場合はこのイベントは発生しません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onKeyUp.html b/docs/kr2doc/contents/f_Window_onKeyUp.html new file mode 100644 index 0000000..1436305 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onKeyUp.html @@ -0,0 +1,58 @@ + + + + + + + onKeyUp - キーが離された + + + + + + + + + +

Window.onKeyUp

+
+
機能/意味
+
+キーが離された
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onKeyUp(key, shift)
+
+
引数
+
+ + + + + +
key  離されたキーの仮想キーコードの値です。
+
shift  キーが離された時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
+
+
説明
+
+  キーが離された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseDown.html b/docs/kr2doc/contents/f_Window_onMouseDown.html new file mode 100644 index 0000000..5c2c805 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseDown.html @@ -0,0 +1,68 @@ + + + + + + + onMouseDown - マウスのボタンが押された + + + + + + + + + +

Window.onMouseDown

+
+
機能/意味
+
+マウスのボタンが押された
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseDown(x, y, button, shift)
+
+
引数
+
+ + + + + + + + + +
x  マウスのボタンが押された位置の x 座標 ( クライアント座標での ) の値です。
+
y  マウスのボタンが押された位置の y 座標 ( クライアント座標での ) の値です。
+
button  押されたマウスボタンです。以下のいずれかの値になります。
+ mbLeft : マウスの左ボタンが押された
+ mbMiddle : マウスの中ボタンが押された
+ mbRight : マウスの右ボタンが押された
+
shift  マウスボタンが押されたときに同時に押されていたシフト系のキーの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+
+
+
説明
+
+  マウスボタンが押された時に発生します。
+
+
参照
+
+Window.onClick
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseEnter.html b/docs/kr2doc/contents/f_Window_onMouseEnter.html new file mode 100644 index 0000000..e4be6d1 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseEnter.html @@ -0,0 +1,48 @@ + + + + + + + onMouseEnter - マウスが入ってきた + + + + + + + + + +

Window.onMouseEnter

+
+
機能/意味
+
+マウスが入ってきた
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseEnter()
+
+
引数
+
+なし
+
+
説明
+
+  マウスがウィンドウのクライアント領域内に入ってきたときに発生します。
+
+
参照
+
+Window.onMouseLeave
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseLeave.html b/docs/kr2doc/contents/f_Window_onMouseLeave.html new file mode 100644 index 0000000..fb3f328 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseLeave.html @@ -0,0 +1,48 @@ + + + + + + + onMouseLeave - マウスが出ていった + + + + + + + + + +

Window.onMouseLeave

+
+
機能/意味
+
+マウスが出ていった
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseLeave()
+
+
引数
+
+なし
+
+
説明
+
+  マウスがウィンドウのクライアント領域内から出ていったときに発生します。
+
+
参照
+
+Window.onMouseEnter
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseMove.html b/docs/kr2doc/contents/f_Window_onMouseMove.html new file mode 100644 index 0000000..b9e9ca7 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseMove.html @@ -0,0 +1,61 @@ + + + + + + + onMouseMove - マウスが移動した + + + + + + + + + +

Window.onMouseMove

+
+
機能/意味
+
+マウスが移動した
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseMove(x, y, shift)
+
+
引数
+
+ + + + + + + +
x  マウスが移動した位置の x 座標 ( クライアント座標での ) の値です。
+
y  マウスが移動した位置の y 座標 ( クライアント座標での ) の値です。
+
shift  マウスが移動していた時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
+
+
説明
+
+  マウスが移動した時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseUp.html b/docs/kr2doc/contents/f_Window_onMouseUp.html new file mode 100644 index 0000000..6eb9b4f --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseUp.html @@ -0,0 +1,64 @@ + + + + + + + onMouseUp - マウスのボタンが離された + + + + + + + + + +

Window.onMouseUp

+
+
機能/意味
+
+マウスのボタンが離された
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseUp(x, y, button, shift)
+
+
引数
+
+ + + + + + + + + +
x  マウスのボタンが離された位置の x 座標 ( クライアント座標での ) の値です。
+
y  マウスのボタンが離された位置の y 座標 ( クライアント座標での ) の値です。
+
button  離されたマウスボタンです。以下のいずれかの値になります。
+ mbLeft : マウスの左ボタンが離された
+ mbMiddle : マウスの中ボタンが離された
+ mbRight : マウスの右ボタンが離された
+
shift  マウスボタンが離された時に同時に押されていたシフト系のキーの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+
+
+
説明
+
+  マウスボタンが離された時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onMouseWheel.html b/docs/kr2doc/contents/f_Window_onMouseWheel.html new file mode 100644 index 0000000..734a7ba --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onMouseWheel.html @@ -0,0 +1,66 @@ + + + + + + + onMouseWheel - マウスホイールが回転した + + + + + + + + + +

Window.onMouseWheel

+
+
機能/意味
+
+マウスホイールが回転した
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onMouseWheel(shift, delta, x, y)
+
+
引数
+
+ + + + + + + + + +
shift  マウスが移動していた時に同時に押されていたシフト系のキーやマウスのボタンの状態です。 + 以下の値のビット OR による組み合わせになります。
+ ssAlt : ALT キーが押されていた
+ ssShift : SHIFT キーが押されていた
+ ssCtrl : CTRL キーが押されていた
+ ssLeft : マウスの左ボタンが押されていた
+ ssMiddle : マウスの中ボタンが押されていた
+ ssRight : マウスの右ボタンが押されていた
+
delta  ホイールの回転角です。上方向(ユーザの反対側の方向)に回された場合は正、 + 下方向(ユーザ側の方向)に回された場合は負の値になります。通常、最小量は 120 + となります。
+
x  ホイールが回転した位置の x 座標 ( クライアント座標での ) の値です。
+
y  ホイールが回転した位置の y 座標 ( クライアント座標での ) の値です。
+
+
+
説明
+
+  マウスホイールが回転した時に発生します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onPopupHide.html b/docs/kr2doc/contents/f_Window_onPopupHide.html new file mode 100644 index 0000000..c9c7c28 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onPopupHide.html @@ -0,0 +1,50 @@ + + + + + + + onPopupHide - ポップアップウィンドウを閉じる + + + + + + + + + +

Window.onPopupHide

+
+
機能/意味
+
+ポップアップウィンドウを閉じる
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onPopupHide()
+
+
引数
+
+なし
+
+
説明
+
+  ポップアップウィンドウが閉じるべき時に発生するイベントです。このイベントは、Window.stayOnTop プロパティが真で、かつ、Window.focusable プロパティが偽の場合、「他のウィンドウがクリックされた」あるいは「他のアプリケーションがアクティブになった」時に発生します。
+  通常は、ここでウィンドウを閉じたり、非表示にする処理を行ってください。
+
+
参照
+
+Window.focusable
+Window.stayOnTop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_onResize.html b/docs/kr2doc/contents/f_Window_onResize.html new file mode 100644 index 0000000..bc87a7a --- /dev/null +++ b/docs/kr2doc/contents/f_Window_onResize.html @@ -0,0 +1,45 @@ + + + + + + + onResize - ウィンドウのサイズが変化した + + + + + + + + + +

Window.onResize

+
+
機能/意味
+
+ウィンドウのサイズが変化した
+
タイプ
+
+Windowクラスのイベント
+
+
構文
+
+onResize()
+
+
引数
+
+なし
+
+
説明
+
+  ウィンドウのサイズが変化した時に発生します。
+  実際のサイズは Window.width プロパティや Window.height プロパティなどで取得してください。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_postInputEvent.html b/docs/kr2doc/contents/f_Window_postInputEvent.html new file mode 100644 index 0000000..79b46e7 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_postInputEvent.html @@ -0,0 +1,61 @@ + + + + + + + postInputEvent - 入力イベントの生成 + + + + + + + + + +

Window.postInputEvent

+
+
機能/意味
+
+入力イベントの生成
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+postInputEvent(eventname, params=null)
+
+
引数
+
+ + + + + +
eventname  イベント名称を指定します。以下の文字列で指定します。
+
params  イベントのパラメータが格納された辞書配列を指定します。
+
  • "onKeyDown" イベントや "onKeyUp" イベントでは、"key" に仮想キーコード、"shift" にシフト状態を格納します。"shift" を省略すると 0 であると見なされます。
  • "onKeyPress" イベントでは "key" に文字を指定します。
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  入力イベントを生成します。現バージョンではキー入力に関する3つのイベントを生成できます。
+  このメソッドは、イベントを非同期イベントとして生成します。つまり、このメソッドは、対応するイベントハンドラの終了を待たずに帰ります。実際にイベントハンドラが呼ばれて処理が行われるのは、いったん吉里吉里に制御が戻った後となります。
+  入力イベントは、Windowクラスのほか、通常の入力イベントと同じく、Layerクラスの該当するイベントとしても発生します。
+ 例:
postInputEvent('onKeyDown', %[key: VK_UP, shift: ssShift]);
+postInputEvent('onKeyUp',   %[key: VK_UP, shift: ssShift]);
+    // 左カーソルキーを押す
+
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_primaryLayer.html b/docs/kr2doc/contents/f_Window_primaryLayer.html new file mode 100644 index 0000000..f41117e --- /dev/null +++ b/docs/kr2doc/contents/f_Window_primaryLayer.html @@ -0,0 +1,36 @@ + + + + + + + primaryLayer - プライマリレイヤオブジェクト + + + + + + + + + +

Window.primaryLayer

+
+
機能/意味
+
+プライマリレイヤオブジェクト
+
タイプ
+
+Windowクラスのプロパティ (読み出し専用)
+
+
説明
+
+  プライマリレイヤオブジェクトを表します。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_registerMessageReceiver.html b/docs/kr2doc/contents/f_Window_registerMessageReceiver.html new file mode 100644 index 0000000..37b90d4 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_registerMessageReceiver.html @@ -0,0 +1,79 @@ + + + + + + + registerMessageReceiver - メッセージ受信関数の登録/登録削除 + + + + + + + + + +

Window.registerMessageReceiver

+
+
機能/意味
+
+メッセージ受信関数の登録/登録削除
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+registerMessageReceiver(mode, func, userdata)
+
+
引数
+
+ + + + + + + +
mode  登録するか、登録削除するかどうかを指定します。
+  wrmRegister を指定すると登録になります。wrmUnregister を + 指定すると登録削除になります。
+  wrm で始まる定数は tp_stub.h に定義されています。
+
func  メッセージ受信関数を指定します。
+  メッセージ受信関数は bool __stdcall func(void *userdata, tTVPWindowMessage *Message) + の形式である必要があり、このメソッドに渡す際にその関数ポインタを整数型にキャストして渡す + 必要があります。
+  構造体 tTVPWindowMessage は tp_stub.h に定義されています。
+  この関数が true を返すと吉里吉里本体側はそのウィンドウメッセージに関知しなくなります。
+
userdata  func 引数で指定された受信関数の userdata 引数に渡すためのデータポインタを指定します。
+  このメソッドに渡す際にはそのポインタを整数型にキャストして渡す必要があります。
+  この引数は mode 引数が wrmRegister でないときは無視されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  このメソッドは C++ 等で記述されたプラグインから利用されることを想定しているメソッドです。TJS2 + からは正常に利用できません。
+  このメソッドでは、このウィンドウを通過するメッセージをトラップするためのメッセージ受信関数を + 登録することができます。メッセージ受信関数では通常のウィンドウメッセージの他、 + TVP_WM_DETACH と TVP_WM_ATTACH という2つの重要なメッセージもトラップすることができ、 + ウィンドウが再構築や破棄されるタイミングにおいて、子ウィンドウを取り外すというような + 用途に使用できます。
+  吉里吉里ソース配布パッケージ中の src/plugins/win32/wmrdump に簡単な使用法の説明があります。
+
+
参照
+
+Window.HWND
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_remove.html b/docs/kr2doc/contents/f_Window_remove.html new file mode 100644 index 0000000..ed8916d --- /dev/null +++ b/docs/kr2doc/contents/f_Window_remove.html @@ -0,0 +1,56 @@ + + + + + + + remove - 管理オブジェクトの削除 + + + + + + + + + +

Window.remove

+
+
機能/意味
+
+管理オブジェクトの削除
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+remove(object)
+
+
引数
+
+ + + +
object  管理オブジェクトのリストから削除するオブジェクトを指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  管理オブジェクトのリストから指定されたオブジェクトを削除します。
+
+
参照
+
+Window.add
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_removeMaskRegion.html b/docs/kr2doc/contents/f_Window_removeMaskRegion.html new file mode 100644 index 0000000..09b4d95 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_removeMaskRegion.html @@ -0,0 +1,52 @@ + + + + + + + removeMaskRegion - ウィンドウリージョンの解除 + + + + + + + + + +

Window.removeMaskRegion

+
+
機能/意味
+
+ウィンドウリージョンの解除
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+removeMaskRegion()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  Window.setMaskRegionで設定したウィンドウリージョンを解除し、ウィンドウを矩形に戻します。
+
+
参照
+
+Window.setMaskRegion
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setInnerSize.html b/docs/kr2doc/contents/f_Window_setInnerSize.html new file mode 100644 index 0000000..87c274f --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setInnerSize.html @@ -0,0 +1,65 @@ + + + + + + + setInnerSize - クライアントサイズの設定 + + + + + + + + + +

Window.setInnerSize

+
+
機能/意味
+
+クライアントサイズの設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setInnerSize(width, height)
+
+
引数
+
+ + + + + +
width  クライアントの横幅を指定します。
+
height  クライアントの縦幅を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウのクライアントサイズを指定します。
+  クライアントは、レイヤを表示可能なウィンドウ内の領域です。
+  このサイズを設定するとウィンドウのサイズもそれに応じて変化します。
+  クライアントのサイズを指定するときには、Window.innerWidth や + Window.innerHeight プロパティを個々に設定するよりも + このメソッドで一気に指定した方が効率的です。
+
+
参照
+
+Window.innerWidth
+Window.innerHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setLayerPos.html b/docs/kr2doc/contents/f_Window_setLayerPos.html new file mode 100644 index 0000000..80bda47 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setLayerPos.html @@ -0,0 +1,62 @@ + + + + + + + setLayerPos - レイヤの表示オフセットの設定 + + + + + + + + + +

Window.setLayerPos

+
+
機能/意味
+
+レイヤの表示オフセットの設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setLayerPos(left, top)
+
+
引数
+
+ + + + + +
left  クライアント領域内でのレイヤの左端位置を指定します。
+
top  クライアント領域内でのレイヤの上端位置を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの表示オフセットを指定します。
+  レイヤの表示オフセットはデフォルトで 0, 0 です。
+  これ以外の値を指定するとそれだけずれた位置にレイヤが表示されます。
+
+
参照
+
+Window.layerLeft
+Window.layerTop
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setMaskRegion.html b/docs/kr2doc/contents/f_Window_setMaskRegion.html new file mode 100644 index 0000000..704b7d6 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setMaskRegion.html @@ -0,0 +1,61 @@ + + + + + + + setMaskRegion - ウィンドウリージョンをマスクに従って設定 + + + + + + + + + +

Window.setMaskRegion

+
+
機能/意味
+
+ウィンドウリージョンをマスクに従って設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setMaskRegion(threshold=1)
+
+
引数
+
+ + + +
threshold  マスクのスレッショルド ( 敷居値 ) を指定します。
+  プライマリレイヤのマスク ( レイヤの不透明度の情報 ) のうち、この値よりも大きい部分の形に + ウィンドウが切り取られて表示されます。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウリージョンをプライマリレイヤのマスク ( レイヤの不透明度の情報 ) に従って設定します。
+  ウィンドウを不定形にする事ができます。
+  表示されるプライマリレイヤと、ウィンドウの大きさ、位置がずれないようにするには + 以下のことを行う必要があります。
+
+
参照
+
+Window.removeMaskRegion
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setMaxSize.html b/docs/kr2doc/contents/f_Window_setMaxSize.html new file mode 100644 index 0000000..ae85a10 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setMaxSize.html @@ -0,0 +1,62 @@ + + + + + + + setMaxSize - ウィンドウの最大サイズの設定 + + + + + + + + + +

Window.setMaxSize

+
+
機能/意味
+
+ウィンドウの最大サイズの設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setMaxSize(width, height)
+
+
引数
+
+ + + + + +
width  ウィンドウの最大の横幅を指定します。0を指定すると制限は無くなります。
+
height  ウィンドウの最大の縦幅を指定します。0を指定すると制限は無くなります。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウの最大サイズを指定します。ウィンドウはこのメソッドで指定したサイズより大きくなることはできません。 +
+
参照
+
+Window.setMixSize
+Window.setSize
+Window.maxWidth
+Window.maxHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setMinSize.html b/docs/kr2doc/contents/f_Window_setMinSize.html new file mode 100644 index 0000000..9d21891 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setMinSize.html @@ -0,0 +1,62 @@ + + + + + + + setMinSize - ウィンドウの最小サイズの設定 + + + + + + + + + +

Window.setMinSize

+
+
機能/意味
+
+ウィンドウの最小サイズの設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setMinSize(width, height)
+
+
引数
+
+ + + + + +
width  ウィンドウの最小の横幅を指定します。0を指定すると制限は無くなります。
+
height  ウィンドウの最小の縦幅を指定します。0を指定すると制限は無くなります。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウの最小サイズを指定します。ウィンドウはこのメソッドで指定したサイズより小さくなることはできません。 +
+
参照
+
+Window.setMaxSize
+Window.setSize
+Window.minWidth
+Window.minHeight
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setPos.html b/docs/kr2doc/contents/f_Window_setPos.html new file mode 100644 index 0000000..d347fba --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setPos.html @@ -0,0 +1,64 @@ + + + + + + + setPos - ウィンドウ位置の設定 + + + + + + + + + +

Window.setPos

+
+
機能/意味
+
+ウィンドウ位置の設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setPos(left, top)
+
+
引数
+
+ + + + + +
left  ウィンドウの左端位置を指定します。
+
top  ウィンドウの上端位置を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウの位置を指定します。
+  ウィンドウの位置を指定するときには、Window.left や + Window.top プロパティを個々に設定するよりも + このメソッドで一気に指定した方が効率的です。
+
+
参照
+
+Window.left
+Window.top
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setSize.html b/docs/kr2doc/contents/f_Window_setSize.html new file mode 100644 index 0000000..3ec90d1 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setSize.html @@ -0,0 +1,67 @@ + + + + + + + setSize - ウィンドウサイズの設定 + + + + + + + + + +

Window.setSize

+
+
機能/意味
+
+ウィンドウサイズの設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setSize(width, height)
+
+
引数
+
+ + + + + +
width  ウィンドウの横幅を指定します。
+
height  ウィンドウの縦幅を指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウのサイズを指定します。
+  ウィンドウのサイズを指定するときには、Window.width や + Window.height プロパティを個々に設定するよりも + このメソッドで一気に指定した方が効率的です。
+
+
参照
+
+Window.width
+Window.height
+Window.setPos
+Window.setInnerSize
+Window.setMinSize
+Window.setMaxSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_setZoom.html b/docs/kr2doc/contents/f_Window_setZoom.html new file mode 100644 index 0000000..75a7dfc --- /dev/null +++ b/docs/kr2doc/contents/f_Window_setZoom.html @@ -0,0 +1,63 @@ + + + + + + + setZoom - レイヤ拡大倍率の設定 + + + + + + + + + +

Window.setZoom

+
+
機能/意味
+
+レイヤ拡大倍率の設定
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+setZoom(numer, denom)
+
+
引数
+
+ + + + + +
numer  倍率の分子を整数で指定します。
+
denom  倍率の分母を整数で指定します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  レイヤの拡大倍率を指定します。分子/分母で指定したサイズで画像が拡大、あるいは縮小されて表示されます。
+  分子・分母が公約数を持つ場合は自動的に約分されるため、Window.zoomNumer プロパティや Window.zoomDenom プロパティで読み出される値は、このメソッドで指定した値とは異なる場合があります。
+  現バージョンの吉里吉里では、拡大・縮小時に補間がかかるかどうかはグラフィックカードのハードウェアやドライバに影響されます。補間がかからないハードウェアやドライバの場合は、画質が荒くなります。
+  オプションによっては、吉里吉里は拡大・縮小に使用可能なハードウェアを、倍率が変更されるたびに調査するため、このメソッドは拡大率を連続的に変化させて演出を行うような用途には適していません。
+
+
参照
+
+Window.zoomNumer
+Window.zoomDenom
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_showModal.html b/docs/kr2doc/contents/f_Window_showModal.html new file mode 100644 index 0000000..202b91b --- /dev/null +++ b/docs/kr2doc/contents/f_Window_showModal.html @@ -0,0 +1,53 @@ + + + + + + + showModal - モーダルでウィンドウを表示 + + + + + + + + + +

Window.showModal

+
+
機能/意味
+
+モーダルでウィンドウを表示
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+showModal()
+
+
引数
+
+なし
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  ウィンドウをモーダル ( モード付き ) で表示します。 + このメソッドはウィンドウを表示状態に + し、かつ、他のウィンドウを一時的に無効にします。そのためユーザはこのウィンドウのみに + アクセスできる状態になります ( これをモード付きの状態と呼びます )。ウィンドウが閉じられると + モード付きの状態は解除されます。
+  このメソッドを呼び出す時点ではウィンドウは非表示でなくてはなりません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_showScrollBars.html b/docs/kr2doc/contents/f_Window_showScrollBars.html new file mode 100644 index 0000000..26ea8b1 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_showScrollBars.html @@ -0,0 +1,37 @@ + + + + + + + showScrollBars - スクロールバーを表示するかどうか + + + + + + + + + +

Window.showScrollBars

+
+
機能/意味
+
+スクロールバーを表示するかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  スクロールバーを表示するかどうかを表します。値を設定することもできます。
+  真ならばスクロールバーは表示され、偽ならば表示されません。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_stayOnTop.html b/docs/kr2doc/contents/f_Window_stayOnTop.html new file mode 100644 index 0000000..ddb69da --- /dev/null +++ b/docs/kr2doc/contents/f_Window_stayOnTop.html @@ -0,0 +1,38 @@ + + + + + + + stayOnTop - 常に最上位に表示するかどうか + + + + + + + + + +

Window.stayOnTop

+
+
機能/意味
+
+常に最上位に表示するかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウを常に最上位 ( 一番手前 ) に表示するかどうかを表します。値を設定することもできます。
+  真ならばウィンドウは常に最上位に表示されます。
+  現バージョンでは、ウィンドウがフルスクリーン化するとき、あるいはフルスクリーンから復帰するときに、このプロパティの設定内容が失われる可能性があります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_top.html b/docs/kr2doc/contents/f_Window_top.html new file mode 100644 index 0000000..d317e50 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_top.html @@ -0,0 +1,42 @@ + + + + + + + top - ウィンドウの上端位置 + + + + + + + + + +

Window.top

+
+
機能/意味
+
+ウィンドウの上端位置
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの上端位置を表します。値を設定することもできます。
+  上端位置はスクリーンの原点 ( 左上隅 ) からの y 座標です。
+
+
参照
+
+Window.left
+Window.setPos
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_trapKey.html b/docs/kr2doc/contents/f_Window_trapKey.html new file mode 100644 index 0000000..ad0696c --- /dev/null +++ b/docs/kr2doc/contents/f_Window_trapKey.html @@ -0,0 +1,42 @@ + + + + + + + trapKey - キー入力をトラップするか + + + + + + + + + +

Window.trapKey

+
+
機能/意味
+
+キー入力をトラップするか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  キー入力をトラップするかどうかを表します。値を設定することもできます。
+  真に設定すると、他のウィンドウで発生したキー入力イベントを横取りし、このウィンドウ上で発生させることができます。
+  複数のウィンドウのこのプロパティが真に設定されている場合は、もっとも最後に作成したウィンドウに対してキー入力イベントが発生します。
+
+
参照
+
+Window.focusable
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_update.html b/docs/kr2doc/contents/f_Window_update.html new file mode 100644 index 0000000..d8a706d --- /dev/null +++ b/docs/kr2doc/contents/f_Window_update.html @@ -0,0 +1,54 @@ + + + + + + + update - ウィンドウ内容の強制的な描画 + + + + + + + + + +

Window.update

+
+
機能/意味
+
+ウィンドウ内容の強制的な描画
+
タイプ
+
+Windowクラスのメソッド
+
+
構文
+
+update(type=tutNormal)
+
+
引数
+
+ + + +
type  ウィンドウ描画のタイプを指定します。
+  tutNormal を指定すると通常の描画 ( 差分描画 )、 + tutEntire を指定するとウィンドウ内容全体を描画します。
+
+
+
戻り値
+
+なし (void)
+
+
説明
+
+  現バージョンでは実装されていません。 +
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_useMouseKey.html b/docs/kr2doc/contents/f_Window_useMouseKey.html new file mode 100644 index 0000000..e0746af --- /dev/null +++ b/docs/kr2doc/contents/f_Window_useMouseKey.html @@ -0,0 +1,39 @@ + + + + + + + useMouseKey - マウスキーを使用するかどうか + + + + + + + + + +

Window.useMouseKey

+
+
機能/意味
+
+マウスキーを使用するかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  マウスキーを使用するかどうかを表します。値を設定することもできます。
+  真ならばマウスキーを使用することができます。
+  マウスキーが有効になると、カーソルキーを使ってマウスカーソルを移動させることが + できますが、キー入力系のイベントはいっさい発生しなくなります。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_visible.html b/docs/kr2doc/contents/f_Window_visible.html new file mode 100644 index 0000000..22bc390 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_visible.html @@ -0,0 +1,37 @@ + + + + + + + visible - ウィンドウが表示されているかどうか + + + + + + + + + +

Window.visible

+
+
機能/意味
+
+ウィンドウが表示されているかどうか
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウが表示されているかどうかを表します。値を設定することもできます。
+  真ならばウィンドウが表示されていて、偽ならばウィンドウは非表示の状態です。
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_width.html b/docs/kr2doc/contents/f_Window_width.html new file mode 100644 index 0000000..7a14d31 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_width.html @@ -0,0 +1,41 @@ + + + + + + + width - ウィンドウの横幅 + + + + + + + + + +

Window.width

+
+
機能/意味
+
+ウィンドウの横幅
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  ウィンドウの横幅を表します。値を設定することもできます。
+
+
参照
+
+Window.height
+Window.setSize
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_zoomDenom.html b/docs/kr2doc/contents/f_Window_zoomDenom.html new file mode 100644 index 0000000..e44d1d1 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_zoomDenom.html @@ -0,0 +1,44 @@ + + + + + + + zoomDenom - レイヤ拡大倍率(分母) + + + + + + + + + +

Window.zoomDenom

+
+
機能/意味
+
+レイヤ拡大倍率(分母)
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの拡大倍率の分母を表します。 + 一応、値を設定することもできますが、値を設定する場合は Window.setZoom メソッドを使用してください。
+  分子は Window.zoomNumer プロパティが表します。
+  詳しくは Window.setZoom メソッドを参照してください。
+
+
参照
+
+Window.setZoom
+Window.zoomNumer
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/f_Window_zoomNumer.html b/docs/kr2doc/contents/f_Window_zoomNumer.html new file mode 100644 index 0000000..e6a8eb7 --- /dev/null +++ b/docs/kr2doc/contents/f_Window_zoomNumer.html @@ -0,0 +1,44 @@ + + + + + + + zoomNumer - レイヤ拡大倍率(分子) + + + + + + + + + +

Window.zoomNumer

+
+
機能/意味
+
+レイヤ拡大倍率(分子)
+
タイプ
+
+Windowクラスのプロパティ (読み書き可能)
+
+
説明
+
+  レイヤの拡大倍率の分子を表します。 + 一応、値を設定することもできますが、値を設定する場合は Window.setZoom メソッドを使用してください。
+  分母は Window.zoomDenom プロパティが表します。
+  詳しくは Window.setZoom メソッドを参照してください。
+
+
参照
+
+Window.setZoom
+Window.zoomDenom
+
+
+
+ + + + diff --git a/docs/kr2doc/contents/frame.html b/docs/kr2doc/contents/frame.html new file mode 100644 index 0000000..09a29e1 --- /dev/null +++ b/docs/kr2doc/contents/frame.html @@ -0,0 +1,90 @@ + + + + + + + 吉里吉里2 目次 + + + + + + + + + +
+

概要と各機能 +

+

クラスリファレンス +

+

付属ツールの使い方 +

+

付録 +

+ + + + diff --git a/docs/kr2doc/contents/funcref.css b/docs/kr2doc/contents/funcref.css new file mode 100644 index 0000000..dc23715 --- /dev/null +++ b/docs/kr2doc/contents/funcref.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("funcref2.css"); diff --git a/docs/kr2doc/contents/funcref2.css b/docs/kr2doc/contents/funcref2.css new file mode 100644 index 0000000..86d55b1 --- /dev/null +++ b/docs/kr2doc/contents/funcref2.css @@ -0,0 +1,17 @@ +@charset "shift_jis"; + +@import url("browser.css"); + +dl dt{ + margin-left: 1em; + margin-top: 1em; + font-weight: bold; +} + +dl dd{ + margin-left: 2em; +} + +dl{ + margin-bottom: 0em; +} diff --git a/docs/kr2doc/contents/grad.png b/docs/kr2doc/contents/grad.png new file mode 100644 index 0000000000000000000000000000000000000000..42bc41c118fa029651be32b188cf2cf820fa1c3b GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0y~yU~>Sn6CMi_TT5yy|*Ub zJYF!WW`psu&kCXV#tHvi-+*c92|f^n0Gn>im!Q;`gn7 z+ioQc(lcH3{>7QMw8GbG-PF)}<@#u70jmNDiH1A~GoqZph0hGTzf85kV0ZZhdKPrNC*;Udsubrnpf-*7R! z+s44KMC}06nRN}lEI=jP>=Au;B3dJo6L^^z44C~BEK8bmSwNZ(GETcG%CKnXZ6=0- z@_7fCHftv={yBkx!Na$K^_Wt#{51&%h6%G6PCsCO5X25P^bpW|i0KhMOMtR7dKrLL zPSb>{PHI=s%`4tIwU`dm544z&%xrfnmdG_Rp`5&AGd) R<}=U)22WQ%mvv4FO#sz-+35fP literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/hline.png b/docs/kr2doc/contents/hline.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7cde8fd82c4a89de59002d8e67c50c3ab83680 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe899IiL-tjN)j-P0)5S5Q;#TsX(;xaD{{R0! zfhT3*CxIjmIkT-(UM-&#yW&yE2JTSZu-y_85|WaVGY+UsX+7oKp;*y!by3H{E`I&p Y43X#0|9^O>MiXSJr>mdKI;Vst0GOREBme*a literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/icons.png b/docs/kr2doc/contents/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e146a90dfc26a7ad600381107dabdea76e24e7d7 GIT binary patch literal 1589 zcmV-52Fm$~P)QmW6=*dAasuW!FnE%ez8&LWto#m`IT!AuC;BFooZjD7n`7OZcJj;BN__AOul(M57=Eo}NVR z>6`>S)t<3IgYn-g(jn0g7-%23eZh4IR!84*e88YFXzkw`{Hb=6u}$aVNGx7%R2#8} z?`SawEjpL1&!YfhMj_u^V@vfb35v@vbs!S7YYHv;XjR7DWihzh~e8$fGjVJ!LO0-(vadgFTthXjgT(?~++C{OQ6 zmuB|e$_87V(|H1E1yqvAI4JokW6QYjPlB-5>s4&zwrvdiMQYzd&!=SK4ottM1@IJ+ zS#P}-jVC%)((;{J%Ab07t_*H2krc#e@{R}*iRd`%_>cP~3ZE^=F?UVcC!Df~$!`Ib zQhgHW;o0#cU9TP2V>w92wfOV#va?`{&PUMy+J0oqj_7)1`4K<5$)yC)8kuX9(w7-> zpn9~$l5d%NmJ+^!%g?nPBy69QKPNxw`!DxiuUGQm^#RfKaGswPfhzeOS0{&zbB`+6 zF)bbtVUhooj@0UidzR59Y47<&x9{klPjrarh}`8ofJP+cS{+c0g!%9jFz{y^-l-!U zk)v3I1R)mvJFdl_e;>pFPd*y;rCYkllM@2i8KW-NvLw0#r^Cthr+OPnIpc287VU%> zB4<#%3ygJ5$wbmtuKY^xXVJE8KI#OKh!=6AP5}^0*EjP?gAsW$Ok9)Wl_KEVV#jKY zTp&o_qxAOSb@$iRCRo z%zK?eaG~9}xe*{+^_Sbx(LUpr{FzU6iO39a%5o)8dKvg<@Knwn`C1sI1pc-2pjzdM zf)qf_pp-DHF*<`KMD$UK&$*<;h~)(FwmE!NjlQ;@CvX}qK$ILj`N-27KoRO!pxhA* z-`#osT01P`a{(y^zYsV@pA92T+qNaA?0Ah#(iudBzKDn%?E4HpWd_^zsl%hw0J8E= z3!FYtf+%=$VlY$@Ae|F6K`0~X5>QTZJ~ZU-1fq~)6R~%4d6Gv9p8RJ!{Fe{aLk1r^ zIym}dU9mNipAzHnF8nR*=mJs+{@_y`7dWLr7@UDr0X&5U>;jxTc#=kDls4PS-xWMb z0n}*VB;AK2w~D2D$0)%QXaJM|WYsX9Abd8q4Fz`vMG8bw`vFysIQdm}u~m4-wIjj& zdY@5t20VGAhwmh9W-e4$L*!?t4Q8peBAUJUSHx*9A94r&TH6|&ffQ?hxvwab9z31f zVfFVqS%-^La;t)`HXJf_NRFw;q)L}lD2@|$27Yw}$_k!J${m{>GzL-DS$pgn7es0K z+r^}c%kJX|<`VD}gn%GAbKLh{iQoXhl=VNkQ01)&?gXS3a9Y60%HM2kBeM=6h$6b# zM&^hVZp8qIm#rCK-?iJP6!(D|sdO+AcmiGDwF6Is3|Q^Yrcw}P;lC|C3q}hOrMr;# zqSk#gJ3zTxq-+7F1)Q$nB6L#Ya-L?RZnl;hmOFYY1y1?e|F0v&ul=1ahhZP6nfk#w z`+g#l{aSAGzkw*&>nXAi)i3^UA{ljV27WTw#nJp0`?vV#8bdwbS93oxK7U~!tIXbW z(;%zX|2s2!ck~&R{jO1%U++s@qXdzqNuy9L#=}~LH%B{uxs7*_@uK{!lDlE(>Z3)A n7A^W~M2=w9XFfSB`n&W$rtZA%DCDn$00000NkvXXu0mjfMm+?w literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/index.html b/docs/kr2doc/contents/index.html new file mode 100644 index 0000000..ef4c9f5 --- /dev/null +++ b/docs/kr2doc/contents/index.html @@ -0,0 +1,18 @@ + + + + + + 吉里吉里2 リファレンス + + + + + + + + <body>フレーム対応のブラウザでご覧ください</body> + + + diff --git a/docs/kr2doc/contents/keywordgrep.js b/docs/kr2doc/contents/keywordgrep.js new file mode 100644 index 0000000..73328d4 --- /dev/null +++ b/docs/kr2doc/contents/keywordgrep.js @@ -0,0 +1,57 @@ +function Searcher() { + var spans = document.getElementsByTagName('span'); + var styles = []; + var text1 = []; + var text2 = []; + var spans_length = spans.length; + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + styles.push(span.parentNode.parentNode.parentNode.parentNode.style); + text1.push(span.parentNode.childNodes[0].nodeValue); + text2.push(span.childNodes[0].nodeValue); + } + + var lastValue = ''; + + this.grep = function (str) { + if (str == lastValue) { + return; + } else { + lastValue = str; + } + + var regs = []; + var words = str.split(' '); + for (var i = 0; i < words.length; ++i) { + if (words[i] != '') { + regs.push(new RegExp(words[i].replace(/(\W)/g, "\\$1"), 'i')); + } + } + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + var matched = true; + for (var j = 0; j < regs.length; ++j) { + if (!regs[j].test(text1[i]) && !regs[j].test(text2[i])) { + matched = false; + break; + } + } + + styles[i].display = matched ? '' : 'none'; + } + } +} + +var searcher; +function init() { + searcher = new Searcher(); + setInterval(onTimer, 400); +} + +function onTimer() { + searcher.grep(document.getElementById('grepword').value); +} + +window.onload = init; diff --git a/docs/kr2doc/contents/keywords.css b/docs/kr2doc/contents/keywords.css new file mode 100644 index 0000000..2b891fe --- /dev/null +++ b/docs/kr2doc/contents/keywords.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("keywords2.css"); diff --git a/docs/kr2doc/contents/keywords.html b/docs/kr2doc/contents/keywords.html new file mode 100644 index 0000000..44e63ff --- /dev/null +++ b/docs/kr2doc/contents/keywords.html @@ -0,0 +1,1292 @@ + + + + + + キーワード一覧 + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/docs/kr2doc/contents/keywords2.css b/docs/kr2doc/contents/keywords2.css new file mode 100644 index 0000000..cbeb77e --- /dev/null +++ b/docs/kr2doc/contents/keywords2.css @@ -0,0 +1,7 @@ +@charset "shift_jis"; + +@import url("browser.css"); + +body{ + margin-left: 0em; +} diff --git a/docs/kr2doc/contents/keywords_p.html b/docs/kr2doc/contents/keywords_p.html new file mode 100644 index 0000000..ce357db --- /dev/null +++ b/docs/kr2doc/contents/keywords_p.html @@ -0,0 +1,1292 @@ + + + + + + 場所順キーワード一覧 + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/docs/kr2doc/contents/lt_1_step_left.png b/docs/kr2doc/contents/lt_1_step_left.png new file mode 100644 index 0000000000000000000000000000000000000000..831fb4b91c590f2c8717ca732d54bc5b2bb5cc7e GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!3HFMCO(@Aq>MdX978H@B_}Az{Yh7HG(4;j zXk+leUPO2;hpQp?EG0G|aEn>CL11x5g!!cRX_Io881z2~FyBIQ0O@O1TaS?83{ F1ORJb9X0>} literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_1_step_right.png b/docs/kr2doc/contents/lt_1_step_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb61108fea9001b644836572ddb31ac74a16578 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!3HFMCO(@Aq|7~C978H@B_|{#{5bERl8~gp z$Rl+03-f&WiT)lr|@wd(lVC<8o}V{ L>gTe~DWM4fzuzKC literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_20_step_left.png b/docs/kr2doc/contents/lt_20_step_left.png new file mode 100644 index 0000000000000000000000000000000000000000..527a6042ddf7c704dea3fdbfc37e3cbc162e565a GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!3HFy_x^nYq`W*`978H@B_|wU`M+?+1c?}? zxqs!`Z5(@ffZ+ek0*$mIsY1$flP5m?|2V)u{eyh`iU&a*3maLx+do$Iv`!K@FjYn4 eGxN!XEDR-EWWN0Eo5u+>mBG{1&t;ucLK6T-mo85L literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_20_step_right.png b/docs/kr2doc/contents/lt_20_step_right.png new file mode 100644 index 0000000000000000000000000000000000000000..687c14ddf340cb66b5255af23c7f21b21b970385 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!3HFy_x^nYqfzeQ7<=>$(=?W+aB2On{ZG($|d`Vbfb<-o5~#pF`=9k hl_iZYDh|AkWME;I`hCVs?KaR{22WQ%mvv4FO#m@AFO>iQ literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_clear_all_labels.png b/docs/kr2doc/contents/lt_clear_all_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..32fe1b27de0069b5ac61fb334b14922e2b05aa81 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^8|1~6^_Qw=~~L&Jds z2O1h0{sYDTGyDfrKpMyb0-)F^7!84869P9&ZyW)7hOZ>ZFBqJ_VFZKgfjcLFGHISJ zjv*CuLj9xp4k&QEKJQ~3yyJiFap%R#i!QW@DP}sUZ(8=4zvB?ALBq^)L#NO!X~|-1 z7fpY&%g-p-_F7iWnYqVV{o*&>?w_^o#0f^FwW~X2j_r+ow{W8ve|*)#)&4U7{qLOb Yg+IHgE?l@=n^Lf7aTOBQBBK*hr000oFswn6I00syEK%%%9=rirw*t7t^ zV5F)bYY?#btFWzxPO%vpyqMpe)g*;ux7K(0T#&$4h3^9UiLA!H@w^sYej=gmLk0k= z#QTY$;{%KehOX{WJhO)Qn!|nMH#q!=VA4Ty29j-fpqFhJJF+DR0O0IIA+$viw7EL; zCzJ@iYNl6MCwh{JDA`_>LPou$Ib9K_}!v&KNTM= z47Y*V6F9LaL}ExO(%NDI9bM9i{MqUmvNttfTpHIKY&>h6FaVYkBihs)s2Bi9Y(?QFpqY;8wVgS`wm%gb*})`|36{<->Cb@ zVUX?DN3mh1Z!E9FV~nY9vy2?j8Bh@d_8}Piif=Ai{~ zocDe#o2^cqgADRVf4^{6D@_goh7%`l-1*Jp16;K0gwT{)$V-h#YK8DtCMbT6(Tklb z5<|SpvDiuygKRxibwRjv%Vj)Q))V<$bYwc=QkCnuRjU!m6bx@!KsXvhmu_Ey#I2z^$j(w^W$P$c>MpWz@%5>E*`*v=PA zVfXzmc)U8fappe9kt8!>bx@Z+{q_59U{kjW`7if|?Z&Fv>r&Ken@@ei4npZqy$gSJ zdc1tcC#*LB7k=k5t)Q~3ygkYAm&@q1Yd>*#y@rChNjxlfCw5}Mp)+~Fob1jE$@ zQ!yjfT?-lF%@@}Z;5?5mmzUROwNc^F6%pgLbU>B%<=N*YRLGcWy4Al3PwR52fs=a5 z98-Vt0+9QnCm3VAHcE;U+zmM=I++Ht&voiX5y$7|-vmrTon$Ca3{z1@c8BkHzrqI% zTTRBPWPj`?(Mo|WT&j@`mx;&lGe}+J-)z&6Wg|N4)+cmD`tGE4lHRC9r0h5H+&fUX zyo2vS-`x8|d&hmj?7%-+s19&AMs2p{Ij%FCdu0dQ)@`v9)Jp_#lv@*4yC9{xXG96~~1PWvR2}x%iv8+r4!cKymn^`=r5YOR&mo!z=fYUEOq+ zLb*!fu>lqXy00Ktz<_3@RmlszUjn*ea_7P={T?14Q+oejc@arN0P1J2=(u6!n+N<( zCx38Vid^DO_22*>UF0JGuvZ<3sYjnTeYsAXBIZ`^ydG4^*1!y(^mg(Q%SxkL2UNrq zs49ZfopYs?Ym1(andh#9%LR1hOP<`#Lpy^MUG@2e42m2EGb7j2KL_m?v&y$kgB-+4 zlZI8E6KQv8orIy(QedGCxD zzVLTj?F>P0ceghZ>i{#}AT3vU0mdMzeRPC^e1i+gzYc-)CnV`p&)`hvdD5y;_?Ts? zs3$8kri&TLDe0A#vWYImCpw4zZxTSuy#{2dpKI!qlb?JE+B#l>x+c|N&Q${@mU){-1_P>xo&Qca<&_CT6Db! zck@l7&FZrKRp1r-TVm{f$mTFvXc45AT-svslo1#EzS1$}5!Dsg>YsJ@@$H^~PwOu^ z5l72BU$2i*oIkU|4t7=yzgMT(Yo2l}1|?r~Fhtmdj=NnLhpnFo%hQi(?(?jy^e4}Y zZS%XIM(ZxsojM8*5YhN=s&1=t(CuGpMdO_HGb#{bE#Pm}f zW=cRvH6v0m48wl>Ub*?;OpD=b`vXkWJSZZZ^cS16?cnA*PS0kpE<8ne7Y4cOZi~n& zQkGb&Kk=0uZQ2qbJP9A2FyFW5sW$s=N&A zF9+}`e+hpu`TOE&s9M-JhnBfRuU5&>>vIpWH^*b5$DA{aUALFKA}}bfLjp|#mpyau z_pkBf_1?a(29P|q+$5#@4D|xY2hWqsHVcJcZaY*%c1L(VD%8iF&Hp3bNRO92SD(>j z!+#gPUg8(?m_2W&e$A`3U}7ik{k{Zos)I~BHgDmKZnkR1B=?lDY=ZycVX0hFa&{C? zK&`_;^xa-Xam<~i%XS_NzwHmS@*xGd`-L$#Zf4K-IesuQdHS>#6852 zBtASHpOh!1Fgn`l#6W!SrO?LiR|9d6G?kwzb~skRlfUqhF8|F{XYf?dx7w|>qSMm} z8vN&@tY`$6k}B$o$Thagn^4T~@$3A>G{Gc*@PzJ9k|z=l#480OFy*!Qf`%Y;%l$5) zL#YvbScc0oVYhE?ud}T}$pl%2;wcDd&%U7gE8UEJO|iczu^F5a29pt4{sSuo(>DYe zE)}dcw6IfuCTenPp1}N4+D-M$`O~vsM5vI-bzabvE7Xc1M{B^tz0IQTz@#zaedZ&R zk6OBw1J-_bS7wiD)Uh@?JH9VXt&9cmFf%VOIO&*pDQuCSx`=CQy-96OLEpB-4Kdot zi=+5&QLKJ`8JyeEVhXBfl3>WEZv%5N`vzk^(my=Jo^V8qaS{TP(Sb!AVGbx6_Eepa zJBjUxyj6pYSsL+a++-4QH6jJQ>`kr@EXp?6O*@u9t1`h8kiruy2#_jGWl%WX+%8_u zz8r2-(|om0DE051wvSIa`JEcYz7qyyVEei_&@!^t%>;ywy!-9G+!YXc7@XPMW0OVi2b+ z@$^p6l?|7hVJ3x8cOMscJJ4v_U;81`Z50Q01i<9SU`N>LbpqWMqyp`rhx<1uLToQ3 zED<0H?}QAJI!CB+d%Mo?jJX7jEjHLur1jb>ZhAs*&k7V&B51mC?A8??P1-gZwqGnwEy#h6qqOZ0K(57T%oGJKR}*Gz z`p{hV`qRG9#3NbFtwdI70q=4=r}{;nahm!T&u(~=ofRnn9(kgLL%5hHaPN&hB{FoF zUT6Y4QqHfT%)%Wdy5oj$@te7Qe;qUJ|;ns2vh z!Tr+}vnl@RewG~o;AtSfZ1a;o0Dy+C`wbJe8C)VTf+2d%1Vdv_FJ)nCu}O$|XiS25i=0p}!}VOz`qQIoCO@4Xrt%>_=Z|h}jD1Sz?}% z-c0_`4@Zc#mOV1XI1S4s_|#ZX%3uN^@L9K{oZ(z74-;u9z&nSDG?c*eF0JLkFW+MCpO<@!`P;?V_B(9o00 z-s>*kSI2Sh8^dPzMUR`!F?mZnE+`pL%z9))Yaa89IEzz3K&h&SW`gcnk@-tY>VS*C zTQH4Vl@^nLcat}{{{62ZyO@TRnV}K{^{%Ylh4@ukm&Fr~;>N>u92T(wCB#n87R#q` zOgnh2FRu`_o$yf{*D<#Wr{Va`%o4>%Qyfw!x*5u<0}erz&dnX?3d%?f*j}B|%6n&} z0LozS78?P)7srRe4(1H9#S2`p@scjyvCSb#Hnhf!a-nO&+vbPrGha2B)H^42)IP;9 z*$vSx9Ln?fARGG5m~HJyYHnd_ZKx{XWNE7Ey=UmH)U!ut`vW?s^5Vw0=#>|bM?Ed> zXC#r;$pQo3AV%INP|wU?kd&PMrYq8QN@?g3T#|8e=T&I(Pe+E(Mt6`(2o=#Rml?wN z?dzLIp3uG$%Mq1B%?$%xtK1o}Z7Lfi%O{EB-XJi2Z|zVufNjOb)?27gbA9b5LMMOQ zdAk(KM3MF$Aa)t;;ICH;mvJIt&Se`hKvc|ru=X5u3+57kcrTVLCLP~i`? zJE`7cCOipxsgN-Gj7?K<=6prxYyL;|%wM~ip0z*A6&7kFmEbDAbB9GaYu*ir#b=%_ z!B1wFd3`iz-mqw#o*93O;?EwLsnE`E1TjaJBVR?4DyK)vq#qGw)y+}#yO6a#QzhEM zY^IMTf3fF~iblR_H+<*2Tj=bI2@H2{LZQ>ZLKJ15c zlTW_oO3;y8;LqZ{OZ={i=ppbE&-hdGih<^A#&2@_e4kNNZC3O2A+cf4?&f}jPw~){ zXz^wZg)rW~>kK@0xZJq8I^&y%?q=IDu=V?ds`(k87c|IMEh>s0GpsJqqiQx}(g<@x zlEL&HX2MsV%?OFId4ZH2cSAelyO{h(oPR!NYZvZJ6eFyzel@QyreON9TW9TY!6&Qk zT(7ft^F-rQD5u0VUz-uLRM;0bfa7@r6pCviS&YtUJJ#Et`kf0job|H!Wi6nB|89P* ztDmTDEAU(kRfd@t%D%QgUg9HQw0-_JV6tWfvFal`{EF@|0LIb3c-KZW!>NEw)`>~ZiM4F{GpBadg{ z8DTZV&!{4c%03vPVqr1`%Qv`V@h*5Q(I7x&;5W_s-9X7fpIOI-9S+&YP9#i_5J|XG zRQo>7rV*M?=DAjGJ+Ka`Ve@fTOh+P@>{_1qY>N?6{gIy?Xly3i;>y4~dzvk)5u_-e zRGR&pdP%cB2g%gleW9!VR5t3Q-$R%q;OgJ6U*DT+YinJSFyTdqLr2#VV{G_jt0fR( zI=wQanLhT2+NbN#)^C#V{ju)YL0K*IAr>zzHi$Nsu!tf ze1q`Ec}E{oR**Gj3dNa@SXXeY@$&szST5D|UAM`XMMGtO@>w1K4W-azYX|oeC-7T! zmr^88ix|7kjkt}02ILvHg1Ian;908)C%6b4{QJpSas*qa{*YSBMX z>CDe~ZoA708>y6A^qV|N<)%o9uLG&zz~C^1m^B%Z#%K9^7Ly91Ep><;;4(x@kDr?i zPH)?FBu_k)2mzQmO2*}`THc1DfUI}*0r2}JQdy($&XkUl*IW{@GJ&z9WNkwK*kU>=su$9&Idfuyj@tK-?!DEiX- zYqr}ZgWf#=P*^9t^ZYesdfnDN2c^y}Sd}Lhi4YJiO7+e|v&5&c8cbeO$QXXtpN=m- z0u>tEt$$Lz$1wd-Gs_7wHa7doU1RpE2@qgCB2ve(L{LChb`M65ee2HG7hMUEl8^Ts zmbj*4@<(#|-f+}n*yY9>>4R35d0Kp6QY@p?YKdNiJw3x3r)HNK5IFw3rT&;%fZPNN zgm@8+)+(9O^7Hdi6ISg3vKuA?AVjgc3QeDd4u=@4(mm0Q$0^#V5islAiUx9#qPzpcO_ZJ+Ow=Yb=`CU_=lFC zvCJ?~H#-dVhfMxLd`6J|uk`ey` z-J}>dadpG%x8kfu>Z)R_4oVXgB~NkC#e&QZvu~fNha5_XvLmMEL`_d9mQqTdfCJE> zaX?WU7nPKm)i_xZ#5Rh-o`|_f`lY4uN1};4-!`92g$n-o?T-2CW}=DM@sm{a!lq=% zBDG|^kvgTQ!(artF|VVvBSZ|{^rC!m&vm5Y#xzQDD`Ho^?6oGia&x)%qu-E6t>wuH&)yTpF`g+3=qw@EK zosbeO{I8x>gAt{s(d{uuZzxP=2){EcpcHRAwFx7^RSBovuf})YNb@^{MlErOWbL!z zvE(c+Cy2H3d-ttdPpj3{+713eFYnV8NtW0b2Id_CzE{c|+l7?ox*>7$d0vxO#`e!v zmllWJ23Cl`n!WX;-ie&PZ0!`mZn^nNuap6e>Qw1rdkJN*3x z()CK|@1XPh#iS9opSiBkC<08u1*l$!?mW_X!{XvmCT*N{%YI3kqAN=-&Qj~*=d)Iz%kL7b} z7hPW;Pt0)ET6W~!23($0ML8YuIM!Cg4ZrNLElGJ;_~f)Q;(e(Q`MlR#!ymHx>RnF` z8*&EY8)gnQjM;7V7k(emc&YW*$QW3-7C10bS``tY46@OnL)82G>Zr@T<6wlptKhaJ z>@JjyHuWnj*H+L;OiAIdHkg5Za;8U$Z*^!@^&Ypx$TT^TxvQ()Jh2NOjC zC4%B#`#b?jVWX!UAdc`VBE3x|p#xv*%y|CVPGIG;jbHe$k*&`1cREyX861|>iI#`;z{@!1nwBRVZq+WBUgE~S?%xcm*+=m$a?uV$d``nR; zqS>1nb1FpR*><-n2BE6r%kZKe98&gcWwJqf3K8C~|H2cLzchVZyzaVu zzQr5u!HW$g>fZ9KBMto?TuS~`+A6~IWs`psr8>F^S1HD&^+)L@cYnCg7CRVsh0(qi zHp5QLlB74pX`CPx%*<< zb~8slS=VIH_PcsENy=Qp_%3rSzTVWown)wV+F7?LD~J+;GY`!B7yDi5 zJKp=dc3~Qx%}~jRy3z`pL_B^z0J{Obp+*0V?Bsf0ae|ix|%4ulRCLrO$7%}67aBD+C8w`i44e7k;bVR=4qQxAAvUm-K zHl6^(sTX`*8Pk~PX?$E)E=_~MyrdgmHNSlD-aL(kTMFGn)iHgSDxMLmkJsz6Y@$Yj z7ShC8?xqC;H>YlqY4RhOA^_9dhuQ|^zn@dS*9*FDNV-v2iDbmO5uUsVB&3asDgE!y zSYDB^JP+Kxa}I2a48c#;(hCCjtVMnVqu^mG8DD#URs>(&hAMhZ@5KZxD{`=u&;D2b z@$_>3@Rh12?4A6l`Zla^O48?5QktL=uAs90fV=o4#u~YQ&E@}&s&0NO!m#GO*+afb zv$k2S7tK1zReoVdlDWbC&|CYo-*{F(56(H8{3w&z;nlpk%dI+Eu6wOj7q($m_+0qb jGJ5Cl)%NC@5)Apro1-f%tjYv{Zej3r^>bP0l+XkK>*PcW literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_edit_flags.png b/docs/kr2doc/contents/lt_edit_flags.png new file mode 100644 index 0000000000000000000000000000000000000000..a84962fa49e1031a5b755e972dd27eddb5bc0f41 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!3HFy_x^nYqyjx%978H@P3?2!I$*%TlI|^+ z7njGcdSshmiGx7l^hV=(cLEg`;Jl3k!6^*`A$8vZ-w9W-$kKQfrc}9y85}Sb4q9e0OoWw!2kdN literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_edit_label.png b/docs/kr2doc/contents/lt_edit_label.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9e5ec95fc3b447df73f07315b51c7544a58739 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_2!3HG#TlXXZDQ8a?$B>F!S1&2@9WdZwIaqqN zJw9$9Bb%;|l4yy_=_huVu|9*$Z0FMc61%-cDC2L$6(6#{_jUwe*1K$ Y9W7Q*+){0YfW|R+y85}Sb4q9e0CZU>82|tP literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_edit_link.png b/docs/kr2doc/contents/lt_edit_link.png new file mode 100644 index 0000000000000000000000000000000000000000..12a1468ec8b51f815b06f7609ff9c3c3e8a4bad3 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^{2(?58;~rMGjRk`DV{ElAr-gwPV(kDV8G#$?!<5A z{yF2`nLMwBKW8jy-6dRU7uaZ{q%Bs{k*u(%=g2b4q^mLW0=Rem-XK{l{qSA6TBoT@ zzWA{mAI}Yp84R;qJ(FzX_~+bb;&|}1Cn(7MX*Zl9;lcc0 zQUVAj`YvGo;orwvz}vG!Wdeip$z@5*K2Iw0LWEU6vM_`-aB^ST9kdT<0E4HipUXO@ GgeCy)ydR7J literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_ignore_links.png b/docs/kr2doc/contents/lt_ignore_links.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5d4b76096d303dcf0af50f7f3ee0016e2520ce GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQdXWWjv*DdruG{OF(_~x4*LH; zJx1cd=P7AA;#?op&Lw`~b;0dtXWV($o)ly_B>IG7);-xB{b6Rtl3eT;w>|j* PG=;&_)z4*}Q$iB}MxQ2r literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_left_cross_point.png b/docs/kr2doc/contents/lt_left_cross_point.png new file mode 100644 index 0000000000000000000000000000000000000000..eab02cadaec8c69345c43380a719431493c16db9 GIT binary patch literal 114 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_link_tuner_wave_match.png b/docs/kr2doc/contents/lt_link_tuner_wave_match.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6ce43e26ea182e460acafa619d49605f0bbbd0 GIT binary patch literal 5435 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 UQs&z65|aSh>bh#xs#a0|1+4D_J^%m! literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_main_window.png b/docs/kr2doc/contents/lt_main_window.png new file mode 100644 index 0000000000000000000000000000000000000000..cc44fb6c1618ff8ccb35b5e82e6d76c929ad9b74 GIT binary patch literal 30849 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

(NqDwp9eosC8-IJFB`s4CA6@g4 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_new_label.png b/docs/kr2doc/contents/lt_new_label.png new file mode 100644 index 0000000000000000000000000000000000000000..a7114b0d0aec38e8f436bf53814634d68b69b87a GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRQ!3HGLSWET+DF;s%$B>F!b0;`*F(~jH4*K{% zejU4LNe5rC)*2Qo#%GSKAC{^$x_w)@qApaiaoV1n%UBgsyKWpS{5ZYy^8KJ?Y?Bu9 Vb0!^WVF#MU;OXk;vd$@?2>{nDC&2&! literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_new_label_on_play.png b/docs/kr2doc/contents/lt_new_label_on_play.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd3be3286323333bfcd162cf193e7296ef7ea76 GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^8|1~6^_Qw=~~L&Jds z2O1h0{sYDTGyDfrKpMyb0-)F^7!84869P9&ZyW)7hOZ>ZFBqJ_VFZKgfjcLFGFF~0 zjv*Cuk{`G-@dWe;BrtFrC@`(GJjXa*f1>Cd3Sv{`;S!=XkC b)&~p>0a9F(-)}qY2nsAuS3j3^P6hA_ zpHByV&9!zor=&V@^Mn=?x$Plp*|SpxI(P$)SXJn*(_4O!ZC=kaW?B7!s$;M2JdXxi O%i!ti=d#Wzp$Pz&5^ zzHIVtA2HKAjEALC7(VR|)R_={Lu2Xa3l<5$0D|-kHEah@y$i4pZo%>UWobI00~yMfId_#AQKn`2XvRA} z$~09U2wX;U<)`J5SWPr@Vmcnedqz=oI$kl&l9@0)?+r0)4*Oc(msvXR%PgJuWtPtS jGV3vZT=DxC^6L5k&`C@VqBaQd00000NkvXXu0mjf^_62_ literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_play_from_current.png b/docs/kr2doc/contents/lt_play_from_current.png new file mode 100644 index 0000000000000000000000000000000000000000..e3fe84d8876faf82eda853d7eeb3c50f4249661d GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6T*pj^6U4S$Y{B+)352QE?JR*x3 z7`TN&n2}-D90{Nxdx@v7EBjS;Ha<)F33Z%XfkLt+t`Q~9`MJ5Nc_j?aMX8A;sVNHO znI#ztAsML(?w-B@?^9IsfC~LRT^vIyZcUx!$aTPhgIWF2|NS}oqFyUaXV0F|m>?2x zN6Sm6%gi#Zp@Pq;l*Qx=`>`!E4%|@MbMQ!rv)P4kpX)o^W>tA!|52&BJa_KDORO#G WG737;VXZ);89ZJ6T-G@yGywoBO-8@~ literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_play_from_first.png b/docs/kr2doc/contents/lt_play_from_first.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9382c4ced921c6e9719c1cf8d968478dc0dd41 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQAytJEzopr E0437z}w1&DnRy zKAmsss>qW~MLVJ3$gcK(hBi_?mSy4D(bvy>OxI(p WlKr)~sq7ulGzL#sKbLh*2~7YH!6-Wb literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_right_cross_point.png b/docs/kr2doc/contents/lt_right_cross_point.png new file mode 100644 index 0000000000000000000000000000000000000000..920825cd7ff049873f30777fc7b3c7816e173959 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!3HERJk;|9QZ}A0jv*Ddk`odVe()bvVZN1- zq~au~{C94vw{WCXX7aE4Ak%-x)0Mde*$kAVk2p2;_OzJ%QCC~WStZ7BFj4f6DNpln Ppg9blu6{1-oD!M<`>-PN literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_save.png b/docs/kr2doc/contents/lt_save.png new file mode 100644 index 0000000000000000000000000000000000000000..46a81cf788cbaa309f628dfeb1c759b080e1eaba GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_08bakkcwN$DG3Qb&O5LrBqbyy zWMniH{QLjEU;OZu1E!OhBqSwIUgjv46=t5<@J}jo!d<@47K;BDX1GjOxaF2)I!R>J k3C@HEPNHHxD(WQ+PtIzwtU4t99B4L!r>mdKI;Vst0OVCJAOHXW literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_seamless_loop.png b/docs/kr2doc/contents/lt_seamless_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..25b136aceacae260fb090506b0b6119d5c4ecb2a GIT binary patch literal 13088 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

    Pl9QeqLuOt4At|EY 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 QzqkODK^h7bugyRFFG8i7_y7O^ literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_smooth.png b/docs/kr2doc/contents/lt_smooth.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3281f11292336c4ed9400fd38759abe0a47adc GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^_!3HE-Zss2cQf{6ujv*Dd=1w%^V^H8=?myE0 zv7~O9u-js{Z1py|r3V{MwR1VR#Pq(Kx41NbahVJ2i7Z#vX-C2nOhQ>La-V;-UBrW*>6B#^R{an^LB{Ts5+ej#R literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_stop.png b/docs/kr2doc/contents/lt_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ca2dce15a1971173b37d305ee794a65b27775a GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqY)RhkEXtvz;0kDz;M`^k%1?ekw1{frWL4y N!PC{xWt~$(697dNE1LiS literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_undo.png b/docs/kr2doc/contents/lt_undo.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e4e95bc0aee713c032e114f01bf5eb605d75b9 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQnsEhjv*Dddi!?@GB|KBT|BkD zSl{5%Zx!Z7$IGHFi5?BP?N4I8WjoR=B(qOMZ+^*K|5lDAPLavP*>1Kgw_3C8FB#!U ReL#a4JYD@<);T3K0RRYXB8C6} literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_zoom_in.png b/docs/kr2doc/contents/lt_zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..4144ec38bc5d20d0c05c52fe6e5f94e80a0ce992 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2?xo-U3d6}RS2^yFeN;9#Eo=>PsX z_qd|EukGB~r2H_jqm#+BI5W^QChxLx`GzEmz1fKks>@6auL}ig?mx2OW6aSyv;6Yr fKNHk=1Q~ML!=-))N~CcB&1LX(^>bP0l+XkKl5Q<7 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/lt_zoom_out.png b/docs/kr2doc/contents/lt_zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..a34fda9e97b8ee9b60b2d39f771d79cac9b627c4 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2^Xo-U3d6}Q#~I`T0na7=pkf4|T3 zHNGZ0H8*e`@-sNIfkmWT=;W%0D+>?SJdL{65I*adp3>?$6PrK8xY; X4`C+hgR1L*#xZ!h`njxgN@xNAKTs?5 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/mosaic_trans.png b/docs/kr2doc/contents/mosaic_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4a82b83cdb7aeb155b3865677eeb370b40314a GIT binary patch literal 8312 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 JN|kX>{tr$%C3FA) literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/postcontent.js b/docs/kr2doc/contents/postcontent.js new file mode 100644 index 0000000..9d57d86 --- /dev/null +++ b/docs/kr2doc/contents/postcontent.js @@ -0,0 +1 @@ +// currently this does nothing diff --git a/docs/kr2doc/contents/ripple_trans.jpg b/docs/kr2doc/contents/ripple_trans.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb0a6b3607e2a6a4a37ecda77a046ea447fc46ec GIT binary patch literal 23790 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 z�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 AcK`qY literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/rotateswap_trans.jpg b/docs/kr2doc/contents/rotateswap_trans.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2a5b1d0789c4608619d426e8aabbf8ac51320b0 GIT binary patch literal 20334 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/rotatevanish_trans.jpg b/docs/kr2doc/contents/rotatevanish_trans.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6076e02824b26e2be7cac57f7f902ed9fbd7d7d5 GIT binary patch literal 26327 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 Upg8)B;<_Uqr=2-j*)0$M*-tMtasU7T literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/sigchk.png b/docs/kr2doc/contents/sigchk.png new file mode 100644 index 0000000000000000000000000000000000000000..8a01f52039c7b6396e0e7deced1a3a8621cedab6 GIT binary patch literal 5040 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 TnkE0^Z-~CGu}+be)17|-ZSlDr literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/sign0.png b/docs/kr2doc/contents/sign0.png new file mode 100644 index 0000000000000000000000000000000000000000..1761a8404f8361afb8de19abefa313282fbe1913 GIT binary patch literal 13837 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 AkpKVy literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/sign1.png b/docs/kr2doc/contents/sign1.png new file mode 100644 index 0000000000000000000000000000000000000000..83396aceb511245f1a7c9dce64bca44eb502502d GIT binary patch literal 10164 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 literal 0 HcmV?d00001 diff --git a/docs/kr2doc/contents/sign2.png b/docs/kr2doc/contents/sign2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1ffae23574cffdd53414be7fe6718a230ad9be GIT binary patch literal 10351 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

    WZ9fwpuI;SWkA3;9HVz%8`mL-o9E1ax^VB zHyF(5G$t;L6;L2c2QYB?*A$SuI8Wt_2(Frth)BjE>ua08Q>XD_rIn2pF)q}Fqa5=& zIf-UkW#)(5{@n5%CoeVrH%mVq*4s&=nyykoEM%w2a1*kyfLm406i|s0o~z3;$5ae? zxz`zuh{$zP8$b!yrN>YQaxXE_@F`LNi%?@-EQq~J%JqH+(=%2@oM0eRfHN)~tkz{{ z(M3#@f~NBm@IXotrL3c6JEf26E==I1iM(7A(Y}zjPIX=AUBq#`OsOSE3b2X=_ExF4 zbHa?Mo~lQTv-wgnFKadjFK@%fZ6$sqVij0XmjSF4PRhJt4r@U}&f?*3$x02|a;p4? zHO8E<0W})&rX372)dQ49l`*J?-KeYy$m5K7d{?4w%W`{=sVecH@=RC${Z;H>-8E4! z5??B$g&R$IjI2-$wvTgp#Xpc8sZ^&MpMK`+LlkPqKHQYu={>`KzOSQBJ<`yG?Wn(asZKPfP2MV@!@gwpr--z~qaw=*k7Qxl zcnGR(>ZCVdZ}U+NMq3--`1qs_+F(4e{j9Dg@GZDC#Jp{@pduRG9YRw1#sU_J_?nm3 zoza>-V+!%&86|c1L;BxjqQHd;zV#B#xS*Od41EX*WO|I&O zPmFrbn8KqEj1R>hOcm5t{4Qch@?TTT`moSE3>tSq-4dU*^pLq^Lq*T37TP4<0V~Sg zu1aM_s#vOc%Kx0UqpRpos(xqOsVrq!Az%DpoIuBSeL_ebxb3=cIlTF23eR!}6S=+{*BiYp zAn<~NSZ`FlJ-D4x`9fWG2f5I3w7YKCz3u6BX})Bqssv2XHQ}bMY)1WQ$%mB~SdGFx zuWM6+;(BB@@TqL;saR;>2&Y2{-4F>G%u93v(J_~7u*JRwyS+a*+4xFxsR zdVmbeYT!ZFx7agC7kKLY-PZTlqYMTC+PJVfsRRt!2D9f+ij2)r6U6Xw@OW>(!?6_c zVHVfO-MwmvA#-pC=g){_4Y01b<7cJd35Q2unWT(*T*s$;DbhJu;PhJGwp_ZpmQGdK zP7qOA#2PiHoa=apJkVrijFqOv6*~$sIYn(-Kor?9Cikm%fp#Px4Sz?9*$x4k7aPWo zUpA7WiF^~JIB%f;A&rXGwBOM#r=qf-jTpa*hcDi^?%e1dK%iN)YlKXOrw6CH#>ll*ykQe_zKno!#_cpE0|vl$5?Qf@Bz=gEGjiyD77Ggr2haR6>` zH)gX`aG$!iPs;I)@)qJ^SsJ7>&cTLEc~2t2Dn9`Oo|~!WY%~Fr`QURkX_y%MK8ze3 z)Z9rvm%4sS5_#QDvTl{-%-GR|M=rsu*w7E*gMdQ`88sc5m@~Ld|4a!N`*baeY3B)sNytXynew`pRuyqaP<|ia z*$xTwYUDH>)t zARwbwb6(-ZV3j-e1T4zmUgfiPRC!T@E;f?Ux2K~o-7h=)C)ANLzQs3X_)4#keFqRaNfj_HD^Sq)>0IU@vQMY@eDOk-f?euFnv%Gl}|w zBD0TVCds)fPnoS|p8mHh%tNg#uar(MDCnX{YG4(>kFB{ihe%7@-#+buvy%FIT14Xk zrFqLdXf5v?wqKETs3I9<${INX+T zLW_@6dc!)HNy!|=;CNtUgO}}c3e|_X<#ip@bXyvQyd<*k63f0eFJBRIrCSXuaVkya zp?gTR4)&4CRbv*EN92RdH-54r8qbZc8)Nkj4$jYJCmSxGPpFPwaK-|omN*~SPx3_s z<>MXj>1;UBau#{WE5N@49(g7fUq;pN{wk9(%`QfG1^;TpHPW?36|)R5ZkvB2;V1J< zk7r(xD|Su;6c#LuiEya{Uu5E5jNy=YpdR`oLJVyvTi0IVfPSBBuUn4oOoq-43Q7vP!&^&jo{(h~%S)R7rQ*_;TD%5vC048pNZMpwI>#DKwBK(l*iQ~B1p!RdJ zoo+4Tsaf6iuZf$>#@IH9E$?UyC*ji>u6hHPePj8DZkc`|<&uvsbXjT8Qz6>MA2n*v#E>6w{C>!uQr-w}qugcxcgY%R(@I?%#_%bf;vOwqD&Fgsg=l3; zsSDN&^^PcpI+@RyA8sgwgVDBehgLs!`+I*2?Hp%!pOe)3XQUx-tsdqBFw>MX3kQe2 zpYvfFD1HkBl1|Auc(C;yi1jxsS~4hN4)UFn#2kWR_GTr!^CqidW)zkxrD`kZSz1G(8HXnqac3Um{{$k;FG|$FxR=1TK%@ z89oD~S*U@**U(DIUDN$aMx5^e3B#h*3Tf8r8T6h+hb9{?4tB3ub=~0jtUProI&a9<{UanJx?Thv{)JtOQ@{Kc?l{k*5b>3 z2aL-Z_&PKYJYg=mZwIJ(Blk+W+2{Im|5447#P4)S=d~OIb81vA-4l0H zvU>-rbVEA|&N#ATG!b02v`wucPhPc3avyz((CQwWAB4ivlJQB1*SBy*K4d3s@PB;= zsN`6Lo0zJDU0F<-ow1I|M%PX@Z7PQ(mbU29VxuZ@q&!E0&3?$zks<0Z^6}L6UN6fU zvv{+v@c;LZ=A1+{67!_nmhJ*)-9adB|@1gZZ8IT!k1224ra~ z`kMV=A{y~`Myp`cnP7XG>uf|i=_$HdZHR2g;S3bWG|_#p5UXvin5!qWodg4Uj3SC! zS4f97L!6x|_Gh4N-T^)ISg&!RiH&lhBFhWx-K`Qi=u7E|Q|ptOBF4?+m&1!2 zASKH+;ecdT#5S0XLZA2_=<_*+zUe|=ko5RT>!DILOk6|vc*@m;%C5OCUwt5Lx7fFb zmFQyJ1v{To}2429EyTI>2nTc+&b;Ec#IyVW z{UB-UhhbpaG@t?^c^K48p0Rt9#%4_R3&O&1gz~-aM ziTu(bo~xv{Hr52@c?I>&qkv1}_>qqn?$=Zd21Q$_Hs5jyU{(;dtDL@}?W1Kph0Sfb zKx|YK5%NCWp+E3MUN0RmTGPLI zMoJ>sc)Y<5a-^U0){xG>GIp)r_oS9ju+Ut%p z3n8T5fI>t4eT5T6cRrXAl4o7Vk1f1`F5Snx3!mp}<`zKzV8q6*HNE=*%y;$@JP+GPQ)ZS&b&TIJT?T&s^ zc9F~j?JW&*&rWar}kGmLltE`0GbXHejzezxcdhg(6>* zY1+lM*1GRFX@(N=Di%TFhUR{m7Kdf^ppbZ-(3iaJQ^fkke5un(;cHgaEH6Tb7q0xZ zG;mEhxgw)7JAcatMq}yb!00G`yA?vSRc3Tn0CmSR{cx+FP1pJ@xcSUdl{Evyz-Mmz zgHD-I!$NePFh9qU0ntV}KBN9?}iqdKc0If z;j60lB-?1AGL>+Rfe0+Bj6$cT~k_yH-+ACZ{~>-@Hlqw1lqbZ#4fwQf@xwRL`fh3-%Yewt_EMTQxl zfZ7sl!1t%VVchgMYcH~vZ^O>O7G0itFg*&%M+&SH5p1yZd1{R-rFCl*pv_sqbzpE%BCb@(Oa4S5KvWD++TZfCowN^o7D)g6O!NyESEO+HCipYLd`ajnY=({W zwWmtG-?1?|^n5(+NYm|GqSv?(W+>?LZQG0BIRns1*pR%Q9MEg~ivTl@=cnRMNKxCF z%`e!ku*PkC%ye7U+7P*tBL`Q2GY7FVPHmLf{w90m{Sa-zKMvB^Jg;g8mb@Q4IWy;B zj{slz<6lDGbguR}5t>VtJmu+N5g1myT#0_(w*>ljL4v=^SF!1FWgM`>YeErDVSyGe z39La5ilm;BbCWx($fLe0nU~Fwq$QXvJZ3pp<$89F{c=?_Ku(k* zh;$C%vAb}=Y;43;k5*^J2|E7$1uGEN`G7f$YF7I*s((WXqN`^ zp}mYLfMRlv^`tVFbI1+hV9Nk ze<#TB$JFw_%LD+Jk4YycRK=cu#FvWZ(UOQ~AHxyX)h&h$7Y>zYvKZ*94UnMGJqf>2W2i%(pqPQq1*LdtL zz9+gFyqdkg`#Lspm&5|#AKOyg965&HePuK*Y~n^1{h064V*O|1;y+&DkLm7zo*M8! zx)Y|6zhiFg%tie6|COEoWA4CYt7eh^y+ogiK3H@0h+UvKB198gO%oN>>}ra9ilLJV zaX%du4l@LHjdW?YnUaUb(KRV>a#HV?7v#2+8JV0n>l5q+8!ZEV)8A9>o}%~v-G6o% zHaX&P*d4JA-tMN&pJEkIyh^Up6b?6vUr8jV96KfmHx`l8mnFUleug|E)<5k2+8loU zV;^GoMoB)5v3b)I^7_-M4`H4;wfq=eEB7z|BQCjAeEu@$k8unkzg6iEA9+}Qchs9G zX6GG%{FmseVD;-O&CswTeqnc5h8U#u@$fJD>!iO61jdJ@K&VjfHkdpXU43 z@6cz;(B&U|nrLRep7=Si+1^CmNDfnfeXlNeU=~HtHpg&o0QDc1%}9FRI`#V(9mDe@ z{#`R}GkGt?)fFYx8_AR4KVu3em9QbGqq@F^S5O^4V1wXr>V^E zJHy=+PEU*tzLqDDfa+Z&$dFgqL6i4AyWWX zfQNP=Tb|Q!&+qk&hB4li{2hZ4^x?I{PiVow>;UfT8;mXl`Y(haM^9hSH(%5&8?a15 z48;;Fj7YC&gu`C39IJ4HQAO<$yRc)Bp)R)%5=y(Fp+YSQrf^M=6VKUpAJo-T$^~hl z-=c#c$05*0r?#_stD%)@zdq%2!|K~5k#9rEe8GFj=>$H6(Z~D6k7ivrTEsi8@H&jQ_Tv*4Z zh6G9sJ2)44nau|vy3L-OZvwt3llf*T=Z3PN7<%f6QO?yDik(8=^YEf-0k zp~5NsD(v1bAW>({7@AU+Vjv@l^$v$)m}A0e!0C5B<5^|oA5Bhs^zl*Q&8%zU ztk~{xi3|s?c8e(OR6I++x$02nU#S%7Wv0#7Od=sgYugx=EsE`|>z=6W4OVNLA(x+i zhf6}9xl!fsmqq2BHiKW9&kZH|@WqANPDg5rS;Q6X*6kfluB1|hZJRv4eDC6V`Th82 zU#4iZYV#?TN`!u30x$#|XtZ*oF&tCh@6L0=xTfeX*<&9Xr>)$PSbUA@PE+LJa(b41ldm=FlQ}eUpfq6l)HIAl&e90;4?;+6cz?CQ@k7&8%f`QX*1QiqA_6|_ zPO50kCkYPxoYa%>Omeu0lhvdOv=cJ?StC;OVk2t$LX{CF+t^e9p`=r6s_iVpFcl##3sh#_h=U2 zqx)i|U}LE7kT3^DNUnxLZ&!X`hVH*A`+s~%|Fb>;fWo2#{6Cd_ruRc+$NV4b%161= zDv*Tb2@iq8$1y%?m&REiVa-<#hOHS@vLi+Oj;9!kM8%wlaOc>7RLlKVH{}1-R8f~P z{@W3G2PC0s)^p7EcumkTMpu0F9J+xeo;L|c7$WQ#aFp{o8P9eBd zhw0Hh6$+Nf;&2kPmqFa{!T#$o4lO{g$bGeDPCX#Khm2@&Ho*BmPdt5Uf09 zzGJRWsc-@PN;QMO??P|3v7un9zlD0lJX98I6kFVP!2S%I=;x9-r#vwQ+!PF3j$mp7 zwn+6fcqj_Ag?#q>!{7*Zt`MNTKbt>ic^j4wp4q=v0I^*y?(DlXLgnM4-@J{RFmRgQ zuC~ULKA%&RaQ_kYhyv(zYmXMlRdzbDgwzIvyOJOG)z%?Wj>wtj%uPBJiX+96IcZ_2 za5mAZ+aZ=f$2@@G@VWR};EJ1@b#)o`x{0LwhRqihVampRTqmiUnqKzD6j@%436J1# z8jTN&KRF_X8OQzL(9eOczV6~gL=cM#!DZHV80RKzZnoz~GgU)^4`(&qMNB?|G-9K9 zQR8Z*pvJR=SCiFh8S9kaUxr}@xSQU`PlieCcpH}kC`@AXAM{gg2KG)cS7D2Jc6)%R zO$g@(_e2FN;&vsfl&x}Rn&v3?!k5 zaS&-@`C%%%F35SO)?bkfP5q|#5Rf^<4@t8p8b_N3tMI?K%DQp z^YC9<28pLb%+MMGiT&AaPxmnWUGhmI;(%k%y%b=F4$3g3iz<7ys;Fg)@I!h|)v#MD zAqZSjG9SfY+DgTAx)Qux-$p9o0>vpaL(#M7B774r&;l#3=%V*43X(SkOaMpCG5ltQ zV*?Eq?BCDPDX&{r*$A`s+x8t-LwaSh;2`M+z{7k8~BcWcgtL5EQ!qJR&LC)zUZe ziEwCKV_G}IcP`ebj^yjj%P)Rx<-b$}xE|+zJ;Ab9Z+Qa*B93s-+{nN9+K|5>e=lnP z;dthwi^7aGFu65>{XGf3t>rcxwTCXg>>nR76XQ50^3QYfN$g!vP|>PdqkReSOqE;ACP7)3DUjYz#LRoSIqLmi~iW!-Y*Dc~d3Iv-&y2GSiPIVK}}jFzj_1-pi_N+sjtjnja()V_CdGrz$QM z{0^vw|A~ojFP6A-9~6LS8+}B+ZtQe~V70g4J|GRE__FX0z&nRRhk`)q@{SO0Ppinp zO+WR;gSft9Mh5c~(Iadc@BvKbfIDtYUKmw~U#jI9 zlh^$A9-_c|x(~YAd*C~$^S}%Xn8N8Mj9`%9aY>L@j2Yo=U43)%t3qMUMV#VHXZ<$n z9O+k_=3}gM2pbm@^Ed(TQj4Bnok%J;>|gkM0XPz`&H*&TRIPpRUE^FEB`2bnDc}CZmF@U-njO+e&2j_Kd4Nwnt=*|bv6x0G(m4DO#?AsKg_d4Uba+xb zjpvu*A}1%W%HI;_paFQJ@N8K0OKPQ8)o ztC;WGpxhBFc-X%kF%;{-`cnJ1J!8!9HSX>0j!ZKLv6!m-Yrf*RuVa5brm+`|-5>rg z5!&=%ireUN2-oOhX-EzJgC_xaC0OF{Q6O94Yo42Z;${j%^Sm)~!kI!o(D%*Wkwke# zxZ6hlD*@BO8;sxti_t-1MuXU&6|{rJt+08$3&)tqP@0^W`#Ia@r`44-ZW@hD77vXr z!Q}~;_B>qLHt5(9*L%v&is|1-!G|>(g&A%mFo`0FF+S>7M{-8G=bUZaM{W zA7R5Os*niZmcF6H!mqMm!Ink)c|T|=fLVb4az|iYTG&MBS3h2K>w%!{CANV z%8GdUoU$XV1TO979GcFGvu@jEJD!SaC5ckkv^wHTqCohEMuDi>@1%9@Z$_tbbWGUm zO%6^=izE=N^*|_E_5L1 zu)t~2NiierE4McCETLL>0CoY(~2BCHY7YNr-N+ zmxKeY^=g@d(t%`}oGyV-)}KyCQ08lReH<13`8DeQibCW>!&hPD4N#-3=|-;)Ls5G3 z&7xsoFC=enf~#`lx&5gN1g`fP3}LM*-QIB8M@uRna{FS5zj*e>1=eU@Z=#lxD&3e~ z%`dk0fBAwhx$DcPi`Iu^rQM87SVz3Xkx)WeOGXbJyMm_Ls+DB?Y`J0JD`#M{AK5sLPMch22vX<=l&QPGMET+ zt-kS$dv9{2kE0YZY9Q|Q16)76oJdT<2Eh{f#JG*v`-<`tf)q_D-%+~frY8|<1qL91 zF*gIRX~QOxwn0^2y2~hX%mh9w5v0LszgRxiiijWgmk1S*r62CtLd5A%{{T5Fa*#@4 z;%5{96A3ivUa?dwQ6l3J7#)}65TV6m!Ce>vufzd)-_AmW3PjNO>4B7lrA(ZBaf-2! z0oyx|jMboHwLchcgtIzA5$Bxd4VNxjsFi0#V+k(Dhi;gyp-Sof3?iXCw_tvCfT*;d z!qn?|qB$gfO}?WvN7@*31F!kOOv^{${xC3@>VEQ(E_QrlNc3>@bzrP3#3$eS`Fsvj6Wmn)Pv0PXW%oM@(vin2vn7VXTE;oEVA$eG0>zvM-RvH^5gETGMYHF(%`owsQ8wdJ#nGw}?z9Ls8== zDl34~;}kbhTu;^x2xua%`5*^UeXL*|gpdMyP|@CUL>DM8nEr7(kwEp+I3e4v2<tknIqMN->*FH=BnfYpaX-ThysBIE`o#f;$OP~| zug*ry%d%hR1}UVB%f0x?rt8E9XN+@-3s(C(`N&sBUE|g@x_DecqNwn8wTMR*j1MRPtp#=Kh?L1l zzSr(Dat#dvPr(@0Koo1Uw#;Y{B$R_@P+%Y+fFi&0`@~<)zHr7$Q2~2#?8IKcYqe@-4!v#ACQkFq|C)(p5dE$z~k#e*UqQNayrn$!R*EU&aQ4^MCKGP?X+557Q75 zoxuH0DP#C>okDOE3>h8ISW&V)aRdn5Ln1)@zVcWHmC8m~)y`b;NtI-)XeKf?O9QEH zZ?;yW7dD@aAtYL3Z%nBWpdALZ!G62ql+b~A2B%t#c=xudDTE%n??xmP?tnIkM^S{a zb2kOuNdOgC>GZ=7(sg=i9T|CyM;r!BkKu7reB#2zi&Ii z209OqKfGa)#bj|&a}!QNN1>a`Yz#=40-BgN9y(+wi)hp z(Z&KnIj{rN#GxD1V*wz9!7%ZTlVQMXm{$%^AqSi;2du;4DZ`>OfxpCLLP2X@aKyT| zO+@4&Fy;gh4Qa>cA&`Utvu_jJzHxI%1ec{o#B9e3DG_d9{o{tg2V=Vpb^F#dfXl4+ zym`$?FX(1E%OhS4PN@Yi3GGR^b#N?<{ zN6tu4C!)qv(q$Y5@+OIc&rBR3h=Vwb0yw86V7dqU3cwn@LvN#S5+yX*0T0wz!?CWsOE#!$MT z$WKVuImj0TC2yo}{{SU~v?S22Xng3r@~{$p&Oya&Wa@&S20j>!O!@GAPDT_L+mSIa z`NgGy(&K)ya1uxbZb;ku=K@PK0Qy(cH>s*Gpp@>T1+eo;{J&U8K@9{dF@35cPVlds zOk`PVU%Vt5CJcvF%VeMd@mbeFrh}n`d12+eDoQ5I?KE*`I2a+uY%T)9_(F^vTw(D)YN#D|Cvo?o0;mN87IKLRp9 zfR-xgL!Vhlu#gJiiuji*hA=h0!EQJvg#da7J&Al{u#Rh&ym9x4;v%^H7#75AX!Xm6 z(3{#F_&i|g0>^d?#T~zFaT;2|sDKsL(SuY$ZRZBSAtAFOyqkZPBsDZ-qk5;^YCC-6 zgiw}ECAZ;&6VeebC&Gq1eB#gniJm)l_3tErVl+DL4%V-1br=CTdLk}6r25I?Ars8f zLs*Vx&4n)EgM@xeBLX0R3Dnm5l?9^>(iUIRjTL%yLNu#8Lz zK)nR2{6C573{_<8G!GMzn9wL%iI)kO8$zw5&lxl5T%;16P9jh`6e9v)WbkJUBQSwJ zHN3RQWkKbk^O1^<(H+C#dd{l)pnHesL$))}S>m1q0f{6k&ZfD}#2uaE&Wn`!2mNuP zbjXl$1t06k#7iUmSkd!}CuechsxfY~I#!!Yy68PISbnT@Q`OgXj4;`XvHQUz0TOh@ zt^`jZH63um4Pgt{2FdK%UQCk+cYh3!Whp5H_~!;IR^-3I9pkLl6KW`g80$sX{mQID z2!bFA0Idhc9cL&u?uUX0QerXDGLmI{hwXiQvfLBCLf=ysYFPC{4I+AmjSR2u`egZx<#pp$*26b!)x`f0dE-t@QbD1ZG2K z<%*ZSCkfb@ZP@){h@-T}%l)_*&?q@aC!Auqu6$r6srhZ=2r_X>4NqX``X+GdJdXM~ zD?#$nI8Q=sKqXg^e}lLpJyrAu)9^u~78#3bk+;{Nag=l*h53+T0q%=n-%&#~k#>7L$hsFp>kuUH@C}uRJ<&pZuArVT2 z#G^lXv;#W{-5d9lq_1B265}N|*gNBiK=1o{xKS4!kshq^-4*BtD=e>?#Hyas#Y~+@ zhY&~#ge1XSv!fCTL~(T{{{ROEIK{yX8S1ULMTL>cqR@5Q7>uGL0ltN!mA-KU_QPe9 zpcmsIQZp-y#MfLxaEMu!1@_{C6=g5Do2Zs+@B>8#G#>ZKEFiW~u@+89f zV=LU`ip7kV1M$PA)^{23;rav!x8QL~7M-5uhQKDN!nkE=(-ja!QA}9~l`VW=QVwpN zEm#r=>sIlMj3FCtJb$nM00?ohx4?r>e&-UuJZ_iFIYJ}6;+~HJKa8Db`I7!{ zq#Nlk&PY)Czs5c!dyIFyShJ8Y#-tzCA`s};(~ne*HoS^9n*RWpMg`csW7vIoke)>U z0K^axxO{>b`Oa<^dM35!4AldfIGgh4&gDUyN*@@p%zMN&fw3@}R3|(?#vPGIEUogM zF@S97u7k6%xvOuK=7EJI@q{uW(L_{`ItlU4H4uUoC8%`skbIFVfYaRBJefA(GA2_d zrXk|87ozVXhcVQ+k{lqbn2(Jg;l++gqGhP;Ms*k84m(hu07iNtfXxOJCsDcbdB~*& zCCb`>Cm)P?6WR&+O=id7kjYVCb7ADe zXq>C~z|kkkIJsb5+khfHpWai z6+t~j{lksK^u->d$($j0+Iw^7{$w(Ei>32<6d@;Ty8i%(!|JuCr_9NVi-OdS^N~R_ znm#8RB^U}D!!g%2=#e#a2~N+9Lh^zW=7Z_Mvz5bQcv1UeN(S_|5Wfbo2igGRAqF-~ zyk+c6lO0Zx+{s}wr0prFHX-W@kn;m#dc@^um6a3X)f&F}6se?X1A2{(J#kqYrYyel zW`*n?M6vE;vP}?X{^YzsqSx=gTCD^0fc*&-SAj{ubbW1lU z*%6M5PV3<+oF4uFzh@g}HNJo%b@mowBu=0LEp7@#ukXV>cAI3}q34l+W zR{o%mpYH$!NXbu(bOK$6?+K^!KJhgJkeN95ioyW22UnfO3o}w5aMn>8(q0WQDl0(O z-u`fq8(mmWqIoYT9JJ^ujl&Au*B{uq5@%7H3_I)VIRnglI^yD#G; zk86PI49VP_+W3Oe(+wg9iS=D`al4alNE#i)tDGBGCwg=-fDwJu!Q?Qt0K>3e=8qbl z_yjhuA=g!m&(=_~>ktRV8idt&>GOp5ii@V7;}wv@>B1gNDM*OghmRP_kp`95*kf;x z4adx5)HdHoY(mV?^Cvj4O0T9ltmq5_urpzjf@$*xM;9&<{o_g?;wgXt6|$U>Na!*o zB|+vpPC_xEAaB#$j9+@O2fu;VJ`QobB75-qWXORw3YWuAypxP7uD=)pCUDE0Qh((Ml}6qtkLwn>Jgxrn6vBnT_fJ2(N;otHbszH@d=L;f zA`ZMq86>E)hnFHH!^}%lV7_VY+IDew#08_V4`1`A>w}buH{{SI8cfsY&yVz<7;(BB=V_QGDj6$zO zdL@3a4;Y8o&gbS#8(nk@xoVfb(9OSTH(m^!>Gk0IEn2Jm$R?io9O%gp`2_%MUS#94K`B z;#Xb*C0>{tJix!!D*{LnG2n6Bo#Xe7f`!!Y6i6d$N31SGI-&vBwhoev4CwNE%1{yw zf#WB{lf3IEWPXV_a^OG)j8kNYk<%iK^284Ej1gy1;7#uSF%6f)M}C=I+_Fxl4%`p~LWGYoGyaThltln=Ltj}ANhKCLi-Mmq z88=0b)(dE%{t3keoWMe+7*U$d4@IpYPcy85fS>{6ddZu`g80I#0p4tYBPqq9;jI*m zCW(=N^a-ONse%QMS$NTSH+*EO?xZ}#Ph0>kU_7{}!)b^x8dZ?eb#YPwYHnYwF`yI& z+a4BMgLo|MX#L?q1?1n1B>3Dh`^sZ3IP@U>v0%2*eXiKU6djM<$raAOo4x?0lAcp; z9*2=4@F7~pG?;=&dCM + + + + + +(自動的にジャンプしない場合は下記のリンクをたどってください)
    +インデックスへ + + diff --git a/docs/tjs2doc/contents/about.html b/docs/tjs2doc/contents/about.html new file mode 100644 index 0000000..dc51583 --- /dev/null +++ b/docs/tjs2doc/contents/about.html @@ -0,0 +1,31 @@ + + + + + + + TJS2 について + + + + + + + + +

    TJS2 について +

    + TJS2 は、アプリケーションへの組み込みを目的に開発された、オブジェクト指向のスクリプト言語です。また、非オブジェクト指向言語の特徴も持ち合わせ、記述者の記述のしやすい方法で記述することができます。
    + 文法はJavaScriptTM と JavaTM に似て、習得しやすいと思います。
    +
    + +

    このマニュアルについて +

    + TJS2 を文法面から説明します。
    + TJS2 にあらかじめ用意されているクラスやそのメソッドの説明もします。
    +
    + + + + diff --git a/docs/tjs2doc/contents/array.html b/docs/tjs2doc/contents/array.html new file mode 100644 index 0000000..b791d98 --- /dev/null +++ b/docs/tjs2doc/contents/array.html @@ -0,0 +1,349 @@ + + + + + + + Array クラス + + + + + + + + +

    Array クラス +

    + Array クラスは配列を扱うクラスです。
    +
    + このクラスのオブジェクトを作成し、間接メンバ選択演算子によって指定された添え字を使って配列のように扱うことができます。添え字は整数です。0は先頭の要素を表し、1はその次の要素を表します。負の整数を指定すると、配列の最後から指定したものとして扱われます (-1 は最後の要素を表します)。
    + +
    +例:
        var a = new Array();
    +    var i;
    +    for(i=0;i<100;i++) a[i]=i;
    +
    +
    + +
    + 配列の大きさは宣言する必要はありません。指定された添え字の大きさまで自動的にサイズが拡張され、何も値が代入されていない要素は void に初期化されます。
    +
    + また、count プロパティがあり、これが配列のサイズを表しています。count プロパティに値を代入しても配列のサイズを変えることができます。
    +
    + +

    式中配列 +

    + [ ] を使って、式中に Array クラスのオブジェクトをその場で記述することができます。[ ] にはカンマで区切り、初期要素となる式を列挙します。たとえば、
    +    var ar = ["a", "b", "c"]; と記述すれば、ar に、 "a" "b" "c" の要素が入った Array クラスのオブジェクトへの参照が代入されます。
    +
    +

    count +

    + count プロパティは、配列の大きさを表します。
    +
    +

    load +

    + load メソッドは、配列をファイルから読み込みます。
    + +
    +構文 : load(<ファイル名>, <モード=''>)
    +
    +
    + + テキストファイルから配列を読み込みます。ファイルのテキストが一行づつ、各要素に入り、最終的に count プロパティはファイルの行数と同じになります。
    + モードには、ファイルを読み込む際のモード文字列を指定します。これは TJS が動作している環境によって異なります。"o" に続いてオフセットを10進で指定するとファイルのそのバイト位置からの読み込みになります。
    + TJS が動作している環境によってはこのメソッドと save メソッド、 saveStruct メソッドは使用できません。
    + load メソッドは、この Array クラスのオブジェクト自身を返します。
    +
    +

    save +

    + save メソッドは、配列をファイルに書き出します。
    + +
    +構文 : save(<ファイル名>, <モード=''>)
    +
    +
    + + 配列をファイルに書き出します。一行ずつ、各メンバが出力されますが、オブジェクトやクラス、関数などへの参照は空行となります。
    + モードには、ファイルを書き込む際のモード文字列を指定します。これは TJS が動作している環境によって異なりますが、吉里吉里の場合は "c" を指定するとファイルに簡単な暗号化がかかります ( そのまま load メソッドで読み込むことができます ) 。"z" を指定するとファイルを圧縮して保存できます ("c" と併用は出来ません; これもそのまま load メソッドで読み込むことができます)。"o" に続いてオフセットを10進で指定するとファイルのそのバイト位置からの書き込みになります。
    + save メソッドは、この Array クラスのオブジェクト自身を返します。
    +
    +

    split +

    + split メソッドは、文字列を分割します。
    + +
    +構文 : split(<パターン/デリミタ集合>, <文字列>, <(予約)>, <空の要素を無視するか=false>) +
    + + 配列を初期化し、この配列に、文字列をパターンまたはデリミタ集合で区切った物をコピーします。
    + 第1引数にはパターンまたはデリミタ集合を指定します。
    + パターンは正規表現オブジェクトである必要があります。
    + デリミタ集合には、区切り記号となる文字を指定します。文字列を指定することで区切り文字を複数指定できます。
    + 第3引数は将来のバージョンのために予約されています。
    + 空の要素を無視するか、では、空の要素 ( たとえばカンマをデリミタにしているときに ,,,,, など ) の場合にその要素を配列にコピーしない場合は true を指定します。
    + 引数の順番に注意してください。
    +
    +

    join +

    + join メソッドは、配列を結合し、一つの文字列にします。
    + +
    +構文 : join(<デリミタ>, <(予約)>, <空の要素を無視するか=false>) +
    + + 配列の各要素をデリミタで結合し、結合した文字列を返します。
    + 空の要素を無視するか、が true の場合は、要素中の void は無視されます。
    + +
    +例:
        var ar = [ "a", "b", void, "d" ];
    +    var s1 = ar.join(","); // s1 には "a,b,,d" が代入される
    +    var s2 = ar.join(",",,true); // s2 には "a,b,d" が代入される
    +
    +
    + +
    +

    reverse +

    + reverse メソッドは、配列の要素の並びを逆さまにします。
    + +
    +構文 : reverse()
    +
    +
    + +
    +

    sort +

    + sort メソッドは、配列をソート(並び替え)します。
    + +
    +構文 : sort(<ソート順='+'>, <安定ソートを行うか=false>) +
    + + ソート順は以下の文字列のどれかです。昇順では小さい物から大きい物へと並び替えられ、降順はその逆です。省略すると '+' を指定されたと見なされます。
    + +
    +"+"  : 昇順 (通常の < 演算子での比較)
    +"-"  : 降順
    +"0"  : 数値による昇順 ( 10,2,1 は 1,2,10 に並び替えられます )
    +"9"  : 数値による降順
    +"a"  : 文字列による昇順 ( "a","c","b" は "a","b","c" に並び替えられます )
    +"z"  : 文字列による降順
    +
    +
    + + ソート順の文字の変わりに関数を指定することが出来ます。関数は2つの引数を持ちます。第1引数が第2引数よりも前に来るべき場合に真を返す関数を指定します (JavaScript の sort メソッドに渡す関数と、戻り値の意味が違うので注意してください )。
    +
    + 第2引数には、安定ソートを行うかどうかを指定します。省略すると false が指定されたと見なされ、不安定なソートが行われます。安定ソートは、同じ順位の配列要素の順番は、ソート後も同じ順番になります。不安定ソートの場合は同じ順位の配列要素の順番は、ソート後に同じ順番になる保証はありません。
    + +
    +例:
        var array = [ 0, 1, 2, 10, 12, 14, 4, 6, 2 ];
    +    array.sort();
    +        // ↑ メソッド実行後、array は [0, 1, 2, 2, 4, 6, 10, 12, 14] に
    +    array.sort('-');
    +        // ↑ メソッド実行後、array は [14, 12, 10, 6, 4, 2, 2, 1, 0] に
    +    array.sort('a');
    +        // ↑ メソッド実行後、array は [0, 1, 10, 12, 14, 2, 2, 4, 6] に
    +
    +    var array = [ "hoge", "foo" , "bar", "baz" ];
    +    array.sort();
    +        // ↑ メソッド実行後、array は ["bar", "baz", "foo", "hoge"] に
    +
    +    var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
    +    array.sort(function(a,b) { return a< b; } );
    +        // ↑ '+' の指定と同じ意味
    +
    +    var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
    +    array.sort(function(a,b) { return a.length < b.length; } );
    +        // ↑ 文字列の長さの短い順
    +        // (長さが同じ"a" "b" "c" がソート後も "a" "b" "c"
    +        // の順番である保証はない)
    +
    +    var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
    +    array.sort(function(a,b) { return a.length < b.length; }, true );
    +        // ↑ 文字列の長さの短い順
    +        // (長さが同じ"a" "b" "c" はソート後もこの順番である)
    +
    +
    + +
    +

    saveStruct +

    + saveStruct はファイルへ構造化されたデータの出力を行います。
    + +
    +構文 : save(<ファイル名>, <モード=''>)
    +
    +
    + + saveStruct メソッドは、要素の状態を復元可能な状態でファイルに出力します。
    + 各要素には文字列、実数、オクテット列、整数を含めることができます。また、要素にオブジェクトがあった場合は、それが Array クラスあるいは Dictionary クラスのオブジェクトである場合に限り、そのオブジェクトの中身もファイルに出力します。それ以外の要素は void が出力されます。
    + たとえば、
    + +
    +例:
        ([ 1, 2, 3, [4, 5], %[ a : 1, b : 2 ], "文字列" ]).saveStruct("out.txt");
    +
    +
    + + では +
    +(const) [
    +    1,
    +    2,
    +    3,
    +    (const) [
    +        4,
    +        5
    +    ],
    +    (const) %[
    +        "a" => 1,
    +        "b" => 2
    +    ],
    +    "文字列"
    +]
    +
    +
    + + のような内容が出力されます。これはこのファイル全体を一つの式として評価することにより、保存した時と同じ構造を復元できるものです。
    + ここでの (const) は、 [ ] や %[ ] の中身が定数項しか無いことを表しています。コンパイラはこの(const) を見つけると、直後の式中辞書配列や式中配列を、中身が定数項しかないことと仮定して、高効率で読み込む事ができます。
    + saveStruct メソッドは、この Array クラスのオブジェクト自身を返します。
    +
    +

    assign +

    + assign メソッドは、配列をコピーします。
    + +
    +構文 : assign(<コピー元配列>)
    +
    +
    + + 引数で指定された他の配列の内容を、そっくりコピーします。
    +
    + 辞書配列 (Dictionaryクラスのオブジェクト) をコピー元配列に指定した場合は、その辞書配列の各メンバが、名前、値の順に交互に現れる配列となります。メンバの順番は不定となります。
    +
    +

    assignStruct +

    + assignStruct メソッドは、配列を構造ごとコピーします。
    + +
    +構文 : assignStruct(<コピー元配列>)
    +
    +
    + + 引数で指定された他の配列の内容を、そっくりコピーします。
    + assign メソッドと違い、メンバに配列あるいは辞書配列があった場合は、再帰的にその内容も +コピーします ( assign メソッドの場合は参照がコピーされるだけです )。
    +
    +

    clear +

    + clear メソッドは、配列の要素をすべて削除します。
    +
    +

    erase +

    + erase メソッドは、指定された添え字の要素を削除します。
    + +
    +構文 : erase(<添え字>)
    +
    +
    + + 指定された位置にある添え字を削除します。添え字以降の要素は一つずつ前にずれ、詰められます。添え字が範囲外の場合は例外が発生します。
    +
    +

    remove +

    + remove メソッドは、指定された値と同じ値を持つ要素を削除します。
    + +
    +構文 : remove(<値>, <すべて削除するか=true>)
    +
    +
    + + 指定された値と各要素を識別比較し ( === 演算子の動作 )、一致した要素を削除します。
    + すべて削除するか、が false の場合は、最初に見つかった要素のみを削除します。そうでなければ、見つかったすべての要素を削除します。
    +
    +

    insert +

    + insert メソッドは、指定された値を指定された位置に挿入します。
    + +
    +構文 : insert(<位置>, <値>)
    +
    +
    + + 位置で示された添え字位置に、値で示された要素を挿入します。位置以降の要素は一つずつ後ろにずれます。
    +
    +

    add +

    + add メソッドは、指定された値を配列の最後に追加します。
    + +
    +構文 : add(<値>)
    +
    +
    + + 配列の最後に値で示された要素を追加します。
    + このメソッドは値が追加された位置を返します。
    +
    +

    find +

    + find メソッドは、指定された値が最初に現れる添え字を返します。
    + +
    +構文 : find(<値>, <検索開始位置=0>)
    +
    +
    + + 指定された値を、検索開始位置の添え字から順に見ていき、最初に現れる添え字を返します。指定された値が見つからなかったときは -1 を返します。
    + 比較には識別比較 ( === 演算子の動作 ) が用いられます。
    +
    +

    push +

    + push メソッドは、指定された要素を配列の最後に追加します。
    + addメソッドと違い、このメソッドは追加後の配列のサイズを返します。また、複数の引数を指定した場合は、すべての引数を順番に追加します。
    + +
    +構文 : push(<値>, ...)
    +
    +
    + +
    +

    pop +

    + push メソッドは、配列の最後から一つ要素を取り出し、それを返します。取り出された要素は配列から削除されます(配列のサイズは一つ減ります)。
    + このメソッドは、取り出された要素を返します。要素が無かった場合はvoidを返します。
    + +
    +構文 : pop()
    +
    +
    + +
    + +

    unshift +

    + unshift メソッドは、要素を配列の先頭に追加します。複数の要素が指定された場合は複数の要素を先頭に追加することができます。この場合は、たとえば a, b, c の順番で渡された場合は、配列の先頭の要素は a, b, c の順番になります。
    + このメソッドは追加後の配列のサイズを返します。
    + +
    +構文 : unshift(<値>, ...)
    +
    +
    + +
    +

    shift +

    + shift メソッドは、配列の最初から一つ要素を取り出し、それを返します。取り出された要素は配列から削除されます(配列のサイズは一つ減ります)。
    + このメソッドは、取り出された要素を返します。要素が無かった場合はvoidを返します。
    + +
    +構文 : shift()
    +
    +
    + +
    + + + + diff --git a/docs/tjs2doc/contents/basictypes.html b/docs/tjs2doc/contents/basictypes.html new file mode 100644 index 0000000..f5719fd --- /dev/null +++ b/docs/tjs2doc/contents/basictypes.html @@ -0,0 +1,73 @@ + + + + + + + TJS2 の基本型 + + + + + + + + +

    プリミティブ型 +

    + tjsTypes.h で定義されているプリミティブ型がいくつかあります。
    +
    +
    +
    tjs_int
    +
    符号あり整数(最低32bit)
    +
    tjs_uint
    +
    符号なし整数(最低32bit)
    +
    tjs_int8
    +
    8bitの符号あり整数
    +
    tjs_uint8
    +
    8bitの符号なし整数
    +
    tjs_int16
    +
    16bitの符号あり整数
    +
    tjs_uint16
    +
    16bitの符号なし整数
    +
    tjs_int32
    +
    32bitの符号あり整数
    +
    tjs_uint32
    +
    32bitの符号なし整数
    +
    tjs_int64
    +
    64bitの符号あり整数
    +
    tjs_uint64
    +
    64bitの符号なし整数
    +
    tjs_char
    +
    ワイド文字(TJS2の文字列型のプリミティブ型として使用されます)
    +
    tjs_nchar
    +
    ナロー文字
    +
    tjs_real
    +
    実数型(double)
    +
    tTVInteger
    +
    tjs_int64と同じ
    +
    tTVReal
    +
    tjs_realと同じ
    + + + +

    tTJSString +

    + tTJSString 型は TJS2 で用いる文字列型で、tjs_char 型のゼロ終結文字列を扱います。tjsString.cpp / tjsString.h に定義されています。また、短く ttstr という型名でも利用可能です。
    + この型は文字列用のメモリの管理を自動的に行うほか、tTJSVariant 型 との親和性が高い型です。
    +
    +

    eTJS +

    + eTJS 型は C++ 例外オブジェクトの基本型です。tjsError.h に定義されています。GetMessage というメソッドがあり、例外とともに投げられたメッセージ文字列を取得することができます。
    + +

    TJS_W +

    + 文字列リテラルを tjs_char * 型に変換するためのマクロです。
    +
    +例 : TJS_W("文字列リテラル")
    +
    + + + + diff --git a/docs/tjs2doc/contents/browser.css b/docs/tjs2doc/contents/browser.css new file mode 100644 index 0000000..8895f99 --- /dev/null +++ b/docs/tjs2doc/contents/browser.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("browser2.css"); diff --git a/docs/tjs2doc/contents/browser2.css b/docs/tjs2doc/contents/browser2.css new file mode 100644 index 0000000..b24b709 --- /dev/null +++ b/docs/tjs2doc/contents/browser2.css @@ -0,0 +1,299 @@ +@charset "shift_jis"; + +body{ + padding: 0px; + background-color: white; + background-attachment: fixed; + color: black; + line-height: 127%; +} + +h1:before{ + content: "◆ "; +} + +h1{ + background-color: #001591; + color: white; + background-image: url("./grad.png"); + background-position: left; + background-repeat: repeat-y; + margin: 0em 0em 1em 0em; + padding: 0.1em; + border-top: 1px solid #70a0e0; + border-left: 1px solid #70a0e0; + border-bottom: 1px solid #002040; + border-right: 1px solid #002040; + font-size: 1.04em; + letter-spacing: 0.05em; +} + + +img{ + border: 0; + vertical-align: middle; +} + +div.para { + margin: 0px; + border: 0px; + padding: 0em 0em 4em 0em; +} + +dt { + display: list-item; + list-style: disc; +} + +dl dt{ + margin-left: 2em; + margin-top: 1em; + font-weight: bold; +} + +dl dd{ + margin-left: 3em; +} + +dl{ + margin-bottom: 1em; +} + +div.taggenre{ + text-align: right; +} + +span.b{ + font-weight: bold; +} + +span.i{ + font-style: italic; +} + +span.comlink{ + font-size: 0.85em; +} + +code.inlinecode{ + padding-left: 0.5em; + padding-right: 0.5em; + font-family: monospace; + white-space: pre; +} + +code em { + font-style: normal; + font-weight: bold; +} + +div.descimg{ + background-color: transparent; + color: #303030; + text-align: center; +} + +span.weak{ + background-color: transparent; + color: gray; +} + +span.comment{ + background-color: transparent; + color: #0000a0; +} + +span.linenumber{ + background-color: transparent; + color: gray; +} + +span.arg{ + background-color: transparent; + color:blue; +} + +span.defarg{ + background-color: transparent; + color:gray; +} + +span.defargval{ + background-color: transparent; + color:red; +} + + +span.tagrequiredattrib{ + background-color: transparent; + color:red; +} + + +code.bq{ + display: block; + overflow: auto; + padding: 0.3em; + border: 2px solid #808080; + margin-top: 0em; + margin-bottom: 0em; + font-family: monospace; + white-space: nowrap; +} + +dfn{ + font-style: normal; +} + +div a.jump{ + background-color: transparent; + color: #2d903c; + text-decoration: underline; + border: 0px; + padding: 1px 2px 1px 2px; +} + +div a.jump:visited{ + background-color: transparent; + color: #2d608c; +} + +div a.jump:hover{ + background : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + + + +table.keywords a{ + background-color: transparent; + color: #2d903c; + text-decoration: none; + border: 0px; + padding: 1px 2px 1px 2px; +} + +table.keywords a:visited{ + background-color: transparent; + color: #2d608c; +} + +table.keywords a:hover{ + background-color : #e0e0f0; + color: #2d303c; + text-decoration: none; + border: 1px solid #808080; + padding: 0px 1px 0px 1px; +} + +ol > li{ + list-style-type: decimal; +} + +div.note{ + margin-left: 4em; + margin-right: 4em; + margin-top: 0em; + margin-bottom: 0em; + border-left: 0.1em solid #808080; + padding-left: 1em; + font-size: 0.8em; + line-height: 110%; +} + +div.note div.notehead{ + margin: 0em; + border: 0em; + padding: 0em 0em 1em 0em; +} + +div.note div.notehead span.noteheadspan { + margin: 0em; + border-top: 0em; + border-left: 0em; + border-right: 0em; + border-bottom: 1px solid black; + padding: 0em 1em 0em 1em; +} + +table.keywords{ + font-size: 0.9em; + line-height: 1em; + margin: 1em 0em 1em 0em; + border: 0px; + padding: 0px; +} + +table.keywords td{ + white-space: nowrap; + margin: 0px; + border: 0px; + padding: 0px; +} + +table.keywords a span{ + background-color: transparent; + color: black; +} + +table.tagparams { + width: 100%; + margin-bottom: 1em; +} + +table.tagparams td{ + border-top: 1px solid black; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.5em; + padding-right: 0.5em; +} + +table.tagparams td.tagattribname{ + background-color: transparent; + color: blue; +} + +div.tagremarks { + margin-bottom: 1em; +} + +span.toindexanchor:before { + content: "△ "; +} + +span.toindexanchor:after { + content: " △"; +} + +div.toindex{ + margin-top: 1em; + text-align: center; +} + +div.toindex a{ + text-decoration: none; +} + +div.taggenrehead { + font-weight: bold; + background-color: transparent; + color: #000080; + margin-top: 1em; +} + +span.taglistlink { + font-weight: bold; +} + +table.taglist td.taglistodd{ + background-color: #f0f0ff; + color: black; +} +table.taglist td.taglisteven{ + background-color: #f0fff0; + color: black; +} diff --git a/docs/tjs2doc/contents/class.html b/docs/tjs2doc/contents/class.html new file mode 100644 index 0000000..797aaca --- /dev/null +++ b/docs/tjs2doc/contents/class.html @@ -0,0 +1,360 @@ + + + + + + + クラス + + + + + + + + +

    クラス +

    + クラスは、オブジェクトを作成するときの雛形となるものです。クラスに属する変数をメンバ変数、クラスに属する関数をメンバ関数、あるいはメソッドと呼び、クラスに属するプロパティはメンバプロパティと呼びます。
    +
    + クラスは基本的には以下のようにして宣言します。
    + +
    +class classname
    +{
    +    // メンバやメンバメソッドやメンバプロパティを記述
    +
    +    function classname() // コンストラクタ
    +    {
    +    }
    +
    +    function finalize()
    +    {
    +    }
    +}
    +
    +
    +
    + +
    + クラス名には識別子を指定します。
    +
    + クラス内には、そのクラスが作成されたときにメンバとなる変数やメソッド、プロパティを記述します。
    +
    + クラス内には、クラスと同名のメソッドが必ず一つあり、コンストラクタと呼ばれます。これは、 new 演算子を使用してオブジェクトを作成するとき、この関数が new 演算子の引数を伴って呼び出されます。
    +
    + クラス内には同様に、finalize という特殊なメソッドがあります。これは、オブジェクトが消滅するときに呼ばれるメソッドで、省略可能です。書かなくてもかまいません。
    +
    + +
    +例:
        class test
    +    {
    +        function test()
    +        {
    +            // コンストラクタ
    +            // ここに、オブジェクトが作成されるときに処理する内容を書く
    +            variable = 0;
    +        }
    +
    +        function finalize()
    +        {
    +            // finalize メソッド
    +            // ここに、オブジェクトが破棄されるときに処理する内容を書く
    +        }
    +
    +        function method1()
    +        {
    +            // メソッド
    +            System.inform(variable);
    +        }
    +
    +        var variable; // メンバ変数
    +
    +        property prop // メンバプロパティ
    +        {
    +            getter() { return variable; } 
    +        }
    +    }
    +
    +
    + +
    +クラスに対して instanceof 演算子を "Class" を伴って使用した場合は真になります(上記の例で言うと、test instanceof "Class" は真)。
    +
    +

    オブジェクトの作成 +

    + 宣言したクラスのオブジェクトを作成するには new 演算子を使います。
    + new 演算子の後には、関数呼び出しと同様に、クラス名と、コンストラクタに渡す引数を指定します。
    + +
    +例:
        class Test
    +    {
    +        var variable1 = getValue(); // メンバ変数の初期化
    +
    +        function Test(arg1, arg2) // コンストラクタ
    +        {
    +            // ここでは new 演算子で指定した引数が arg1 と arg2 にわたっている
    +        }
    +    }
    +
    +    var newobject = new Test(1, 2); // 引数に 1, 2 を渡して test クラスのオブジェクトを作成
    +
    +
    + +
    + クラスが作成されるときの処理の順番は以下の通りです。
    +
    +
    1. まず空のオブジェクトが作成される
    2. メソッド、プロパティが登録される
    3. メンバ変数が作成される ( このとき初期化が必要な変数は初期化される )
    4. コンストラクタが実行される

    Note
    + コンストラクタへの引数がない場合であっても、new 演算子の ( ) を省略することはできません。 JavaScript のように new Test と書くことはできません。new Test( ) と書く必要があります。
    +

    +
    + 特に、クラスのメソッドやプロパティ内でそのクラスのオブジェクトを作成する場合、あるいはそのクラスのスーパークラスのオブジェクトを作成する場合、以下のようにするとエラーになります。
    + +
    +例:
        class Test
    +    {
    +        function Test() // コンストラクタ
    +        {
    +        }
    +
    +        function func()
    +        {
    +            return new Test(); // エラー
    +        }
    +    }
    +
    +
    + +
    + なぜならば、クラスのメソッドやプロパティ内で Test と単に書くと、クラスである Test よりもそのコンストラクタの Test の方がスコープ的に近いため、コンストラクタの Test 参照されてしまうからです。この場合はこれを避けるために、以下のように明示的に global. を使用する必要があります ( クラスは global に登録されるからです )。
    +
    + +
    +例:
        class Test
    +    {
    +        function Test() // コンストラクタ
    +        {
    +        }
    +
    +        function func()
    +        {
    +            return new global.Test(); // これならば OK
    +        }
    +    }
    +
    +
    + +
    +

    オブジェクトの無効化 +

    + TJS2 では、オブジェクトが削除される際、オブジェクトの無効化とオブジェクトの削除、という2つの段階を踏みます。
    + オブジェクトが無効化されるとき、 finalize メソッドが呼ばれ、そのオブジェクトは無効であるというマークがつけられます。以降のそのオブジェクトへのアクセスはすべて失敗し、例外が発生するようになります。オブジェクトが無効化されているかどうかは isvalid 演算子で調べることができます。
    +
    + オブジェクトは invalidate 演算子で無効化することができます。
    +
    + +
    +例:
        class Test
    +    {
    +        var variable;
    +
    +        function Test()
    +        {
    +            // コンストラクタ
    +            variable = new AnotherClass();
    +        }
    +
    +        function finalize()
    +        {
    +            // finalize メソッドは無効化された時に呼ばれる
    +            invalidate variable;
    +        }
    +    }
    +
    +    var object = new Test(); // オブジェクトを作成
    +
    +    (略)
    +
    +    invalidate object; // オブジェクトを無効化
    +
    +
    + +
    + invalidate 演算子を用いなくても、オブジェクトは必要とされなくなった時点で削除されます。このとき、無効化されていなければ、その時点で無効化されます。
    + TJS2 ではいつオブジェクトが削除されるかの明確な規定が無く、削除や無効化は「いつでもおこりうる」ことになります。したがって、無効化されてないオブジェクトは削除時に無効化されるため、思わぬ時点で finalize メソッドが呼ばれてしまう可能性があります。これを避けるためにも、オブジェクトを使い終わったら invalidate 演算子で無効化することをおすすめします。
    +
    +
    Note
    + invalidate 演算子は C++ の delete 演算子に近い働きをします。
    + TJS2 の delete 演算子は C++ の delete 演算子と違い、メンバやローカル変数を削除するための演算子です。オブジェクト自体を無効化したり削除したりはしませんが、メンバやローカル変数を削除したことにより結果的にオブジェクトの無効化や削除を引き起こすことはあります。
    +

    +
    +

    オブジェクトへのアクセス +

    + 作成したオブジェクトのメンバ変数、メソッド、メンバプロパティには、. (メンバ選択) 演算子 または [ ] (間接メンバ選択演算子) を用いてアクセスします。
    + +
    +例:
        var obj=new MyLayer(window,window.prmaryLayer)
    +    obj.method1(); // メソッドの呼び出し  obj['method1']() でも同じ
    +    obj.num = 3; // メンバ変数へ代入  obj['num']=3 でも同じ
    +    obj.prop1++; // メンバプロパティにアクセス  obj['prop1']++ でも同じ
    +
    +
    + +
    +

    クロージャ +

    + 作成したオブジェクトのメソッドやメンバプロパティは、そのメンバがどのオブジェクトのメンバであるかの情報を持った状態でオブジェクトに登録されています。
    + そのため、メソッドやメンバプロパティをオブジェクト外に持ち出して、それを使用しても、元のオブジェクトに対するアクセスを行うことになります。この機能をクロージャと呼びます。また、アクセス先のオブジェクトをコンテキストと呼びます。
    + +
    +例:
        var obj = new FooBarClass(); // オブジェクトを作成
    +    obj.method(); // オブジェクトのメソッドを普通に呼び出す
    +    var objmethod = obj.method; // オブジェクトのメソッドへの参照を objmethod に代入
    +    objmethod(); // objmethod を呼び出すが、obj.method() と同じく、obj に対するアクセスとなる
    +
    +
    + +
    + incontextof 演算子は、どのオブジェクトのメンバであるか、の情報を変更し、任意のコンテキスト上でメソッドを実行するための方法を提供します。
    + +
    +例:
        (objmethod incontextof obj2)(); // obj2 に対する操作になる
    +    (objmethod incontextof this)(); // this に対する操作になる
    +
    + +
    + +

    継承 +

    + キーワード extends を用いると、クラスを別のクラスから継承させることができます。継承とは、継承元のクラスのメンバを引き継ぐことです。
    + 継承する元となるクラスのことをスーパークラス、継承したクラスのことをサブクラスと呼びます。
    + 以下のようにしてクラスを宣言します。
    + +
    +例:
        class Class1 // スーパークラス
    +    {
    +        function Class1() // Class1 コンストラクタ
    +        {
    +        }
    +
    +        function finalize() // Class1 finalize
    +        {
    +        }
    +
    +        function method1() // method1
    +        {
    +        }
    +    }
    +
    +
    +    class Class2 extends Class1
    +    {
    +        function Class2() // Class2 コンストラクタ
    +        {
    +            super.Class1(); // Class1 コンストラクタを呼ぶ
    +        }
    +
    +        function finalize() // Class2 finalize
    +        {
    +            super.finalize();
    +        }
    +    }
    +
    +    var obj = new Class2(); // Class2 オブジェクトを作成
    +    obj.method1(); // Class2 は Class1 の method1 を継承しているので使用することができる
    +
    +
    + + 上記の例では、Class2 が Class1 を継承しています。Class2 は Class1 から派生している、とも言います。
    + Class2 のコンストラクタ内では Class1 のコンストラクタを、Class2 の finalize では Class1 の finalize を呼んでいます。サブクラスが、これらのメソッド内でスーパークラスの該当する同メソッドを呼び出さなかった場合の動作は未定義 ( というか現バージョンでは呼んだかどうかチェックしていない ) ですので、必ず記述するようにしてください。
    +
    + サブクラスからスーパークラスを参照するためには、上記の例のようにキーワード super を使用することができます。このキーワードはサブクラス内でのみ使用可能で、スーパークラスを表すものです。
    +
    + 継承が行われている場合の、new 演算子でのオブジェクトの初期化の順序は以下の通りです。
    +
    +
    1. まず空のオブジェクトが作成される
    2. メソッド、プロパティが登録される ( スーパークラスから先に、サブクラスに向かって )
    3. メンバ変数が作成される ( スーパークラスから先に、サブクラスに向かって )
    4. サブクラスのコンストラクタが呼ばれる
    5. ( サブクラスのコンストラクタ内から ) スーパークラスのコンストラクタが呼ばれる
    +

    多重継承 +

    + extends の後に、スーパークラス名を複数記述すると、多重継承を行わせることができます。
    + +
    +例:
        class SubClass extends ClassA, ClassB
    +    {
    +        function SubClass() // SubClass コンストラクタ
    +        {
    +            ClassA(); // ClassA コンストラクタを呼ぶ
    +            ClassB(); // ClassB コンストラクタを呼ぶ
    +        }
    +
    +        function finalize() // Class2 finalize
    +        {
    +            global.ClassA.finalize();
    +            global.ClassB.finalize();
    +        }
    +    }
    +
    +
    +
    + + super キーワードが使えないため、明示的にクラスを指定しなければなりません。例のように スーパークラスのメソッドを呼ぶときに global. をわざわざつけてクラスにアクセスするのは、サブクラス内で単に ClassA と記述すると ClassA のコンストラクタのことを指すからです。クラスそのものは global に登録されるため、global. を用いてクラスにアクセスします。
    +
    + 多重継承が行われている場合の、new 演算子でのオブジェクトの初期化の順序は多重継承を行っていないときのそれと同じすが、スーパークラスのメソッド、プロパティの登録の順番は、extends キーワードの後に書いた順に行われます。継承元のクラス間で同名のメソッドやプロパティがあった場合は、後に書いたほうが優先されます。隠れてしまったメソッドやプロパティには、global.ClassA.hiddenMethod() のように明示的にクラス名を書いてアクセスする事ができます。
    +
    +

    オーバーライド +

    + サブクラスでスーパークラスのメソッドやメンバプロパティと同名のものを宣言すると、スーパークラスのメソッドを隠すことができます。これをオーバーライドと呼びます。
    + 上記の説明の中にでてきた finalize メソッドは、スーパークラスの finalize メソッドをオーバーライドしています。
    + +
    +例:
        class Class1 // スーパークラス
    +    {
    +        function Class1() // Class1 コンストラクタ
    +        {
    +        }
    +
    +        function finalize() // Class1 finalize
    +        {
    +        }
    +
    +        function method1() // method1
    +        {
    +            (略)
    +        }
    +    }
    +
    +
    +    class Class2 extends Class1
    +    {
    +        function Class2() // Class2 コンストラクタ
    +        {
    +            super.Class1(); // Class1 コンストラクタを呼ぶ
    +        }
    +
    +        function finalize() // Class2 finalize
    +        {
    +            super.finalize();
    +        }
    +
    +        function method1() // Class1.method1 をオーバーライド
    +        {
    +            (略)
    +            if(略) return super.method1();
    +            (略)
    +        }
    +    }
    +
    +    var obj = new Class2(); // Class2 オブジェクトを作成
    +    obj.method1(); // Class2 の method1 が呼ばれる
    +
    +
    + + サブクラスのメソッドやプロパティでは super キーワードを用いてスーパークラスのメソッドやプロパティにアクセスすることができます。
    +
    + メンバ変数をオーバーライドすることはできません。メンバ変数は一つのオブジェクトに対して登録されるため、サブクラスとスーパークラスで同名のメンバ関数があると +サブクラスの変数がスーパークラスの変数を上書きしてしまいます。
    +
    + + + + diff --git a/docs/tjs2doc/contents/date.html b/docs/tjs2doc/contents/date.html new file mode 100644 index 0000000..5733989 --- /dev/null +++ b/docs/tjs2doc/contents/date.html @@ -0,0 +1,48 @@ + + + + + + + Date クラス + + + + + + + + +

    Date クラス +

    + 文字列 から Date オブジェクトを作る機能とオブジェクトから 文字列を作る機能が未実装ですが、他は JavaScript の Date とほぼ互換です。
    +
    + コンストラクタの構文は以下の通りです。
    + +
    +new Date();
    +new Date(<日付文字列>);
    +new Date(<年>, <月(0〜)=0>, <日=1>, <時=0>, <分=0>, <秒=0>);
    +
    +
    + + 1番目の構文には引数は必要ありません。この場合は、このコンストラクタが実行された時点での現在の日付時間を保持します。
    + 2番目の構文は日付文字列を指定するものです。日付文字列は ANSI C の asctime() 書式のもの、RFC1123 で定義されているもの、RFC1036 で定義されているもの、"年/月/日 時:分:秒" の形式のいずれかを指定する必要があります。日付文字列の認識は自動で行われ、ある程度の書式の変形には対応しますが、あまりに想定している書式と異なる場合は認識できない場合があります。
    + 3番目の構文は年月日時分秒を指定するものです。
    +
    + 実装されているメソッド(JavaScript互換) :
    +setYear/getYear (地域時間による4桁の西暦年の設定/取得)
    +setMonth/getMonth (地域時間による月の設定/取得)
    +setDate/getDate (地域時間による日の設定/取得)
    +setHours/getHours (地域時間による時の設定/取得)
    +setMinutes/getMinutes (地域時間による分の設定/取得)
    +setSeconds/getSeconds (地域時間による秒の設定/取得)
    +setTime/getTime (1970年1月1日0:00からの経過ミリ秒の設定/取得)
    +getDay (曜日の取得)
    +parse (日付文字列の解釈)
    +
    + + + + diff --git a/docs/tjs2doc/contents/dictionary.html b/docs/tjs2doc/contents/dictionary.html new file mode 100644 index 0000000..d494b77 --- /dev/null +++ b/docs/tjs2doc/contents/dictionary.html @@ -0,0 +1,108 @@ + + + + + + + Dictionary クラス + + + + + + + + +

    Dictionary クラス +

    + Dictionary クラスは辞書配列を扱うクラスです。
    +
    + 辞書配列は連想配列とも呼ばれ、名前と、それに結びつけられた値を一つのペアとして、それを複数保持するオブジェクトです。
    + 配列と同じように [ ] (間接参照) 演算子でアクセスしますが、添え字の代わりに文字列を使い、それが名前となります。名前が識別子として有効なものであれば、 . (直接参照) 演算子も使うことができます。
    + また、存在しない名前を参照すると void になります。
    + 要素を削除するには delete 演算子を使います。
    + +
    +例:
        var d=new Dictionary();
    +    d["sat"] = 1; // d.sat = 1 と同じ
    +    d["sun"] = 2; // d.sun = 2 と同じ
    +    d["mon"] = 3; // d.mon = 3 と同じ
    +    d["name"] ="value!"; // d.name = "value!" と同じ
    +    d["continue"] = 4; // continue は識別子ではないが OK
    +    d.continue = 4; // continue は識別子ではないのでエラー
    +
    +    var sat = d["sat"]; // 1 が代入される
    +    var none = d["none"]; // void が代入される
    +
    +    delete d.sat; // sat を削除
    +    delete d["continue"]; // continue を削除
    +
    +
    + +
    +
    + +

    式中辞書配列 +

    + %[ ] を使って、式中に Dictionary クラスのオブジェクトをその場で記述することができます。要素名 => 要素の値、をカンマで区切り、初期要素となる式を列挙します。たとえば、
    +    var dic = %["a" => 1, "b" => 2, "c" => 3];
    +
     と記述すれば、dic に、要素名と要素の組がそれぞれ "a":1"b":2"c":3 となる Dictionary クラスのオブジェクトへの参照が代入されます。
    + 内部的には、=> はカンマと全く同じものですが、読みやすさを考え、=> を使用できるようになっています ( perl と同じです )。
    +
    +

    Dictionary クラスのメソッドへのアクセス +

    + Dictionary クラスのオブジェクトは、作成された状態ではメンバを何一つ持っていません。
    + たとえば、assign メソッドを使おうと思って、Dictionary クラスのオブジェクト dict に対してdict.assign(src) のように記述しても、dict が assign というメソッドを持っていないためにエラーになります。
    + したがって、incontextof 演算子を使って、Dictionary クラスに直接属しているメソッドを、対象となる Dictionary クラスのオブジェクトをコンテキストとして実行させます。
    + +
    +例:
        var a = %[];
    +    var b = %[];
    +    (Dictionary.assign incontextof a)(b); // b を a にコピー
    +    (Dictionary.clear incontextof b)(); // b の内容をクリア
    +
    +
    + +
    +

    saveStruct +

    + saveStruct はファイルへ構造化されたデータの出力を行います。
    + Array クラス の同メソッド参照してください。
    +
    +

    assign +

    + assign メソッドは、辞書配列をコピーします。
    + +
    +構文 : assign(<コピー元辞書配列>, <内容をクリアするか=true>)
    +
    +
    + + 引数で指定された他の辞書配列の内容を、そっくりコピーします。
    + 「内容をクリアするか」が偽の場合は、コピー先 (メソッドを実行するオブジェクト) の内容をクリアせず、コピー元辞書配列の内容を上書きします。コピー元辞書配列と同じ名前のメンバがコピー先辞書配列にあった場合は、コピー元の内容でコピー先が上書きされます。
    +
    + 配列 (Arrayクラスのオブジェクト) をコピー元配列に指定した場合は、その配列には、この辞書配列のメンバとなるべき要素が名前、値の順に並んでいるとみなし、その配列の内容をこの辞書配列にコピーします。
    +
    +

    assignStruct +

    + assignStruct メソッドは、辞書配列をコピーします。
    + +
    +構文 : assignStruct(<コピー元辞書配列>)
    +
    +
    + + 引数で指定された他の辞書配列の内容を、そっくりコピーします。
    + assign メソッドと違い、メンバに配列あるいは辞書配列があった場合は、再帰的にその内容も +コピーします ( assign メソッドの場合は参照がコピーされるだけです )。
    +
    +

    clear +

    + clear メソッドは、辞書配列の内容をすべて消去します。
    +
    + + + + + diff --git a/docs/tjs2doc/contents/documentid.js b/docs/tjs2doc/contents/documentid.js new file mode 100644 index 0000000..4cb79cc --- /dev/null +++ b/docs/tjs2doc/contents/documentid.js @@ -0,0 +1,2 @@ +// document id +var doc_id = "tjs2doc"; diff --git a/docs/tjs2doc/contents/exception.html b/docs/tjs2doc/contents/exception.html new file mode 100644 index 0000000..115ff79 --- /dev/null +++ b/docs/tjs2doc/contents/exception.html @@ -0,0 +1,41 @@ + + + + + + + Exception クラス + + + + + + + + +

    Exception クラス +

    + Exception クラスは、例外オブジェクトを生成するためのクラスです。
    + コンストラクタの構文は以下の通りです。
    + +
    +new Exception(<メッセージ>)
    +
    +
    + + メッセージは、生成されたオブジェクトの message プロパティに設定されます。
    + また、trace プロパティには、例外が発生するまでに通過した関数などの情報が記録されています ( 人間が読むための文字列として記録されています )。
    + スクリプト以外の要因で発生する例外オブジェクトはすべて Exception クラスのオブジェクトです ( たとえば 除算エラー例外など )。
    +
    + 将来、利用可能なプロパティを増やすかもしれません。
    +
    +

    message +

    + message プロパティ は、例外の理由を表す文字列を表すプロパティです。
    +
    + + + + + diff --git a/docs/tjs2doc/contents/expr_and_op.html b/docs/tjs2doc/contents/expr_and_op.html new file mode 100644 index 0000000..fc42857 --- /dev/null +++ b/docs/tjs2doc/contents/expr_and_op.html @@ -0,0 +1,254 @@ + + + + + + + 式と演算子 + + + + + + + + +

    式と演算子 +

    + は、演算子とオペランドの集まり、あるいは即値です。
    +
    + 通常、スクリプト中に以下のように記述することができます。
    +
    +    式;
    +

    + このように式の後にセミコロンをつけると、その式がその場で評価( = 実行 )され、その式としての結果は捨てられます。
    +
    + +
    +例:
        a = b;
    +    // 演算子 = の動作によって、a 変数に 変数b が代入される
    +
    +    func();
    +    // 演算子 ( ) の動作によって、func が関数として呼び出されるが、関数の戻り値
    +    // は捨てられる
    +
    +    1 + 3;
    +    // + 演算子の動作によって、1 と 3 が加算されるが、結果は捨てられる(実際はこ
    +    // の式は意味を持たないので実行すらされない)
    +
    +
    + +
    +

    真と偽 +

    + いくつかの演算子は、真か偽 (論理値) を扱います。演算の結果が 0 の場合は偽、0 以外の場合は 真になります。
    + 文字列に対して真偽が問われた場合は、空文字列の場合は偽、それ以外の場合は数値に変換しようとして成功すれば、その数値としての結果が真偽になり、失敗すれば偽になります。
    +
    +

    演算子 +

    + 以下、演算子を優先順位の低いものから順に説明していきます。
    +
    + +

    if 演算子 +

    + if 演算子 if は、右側にあるものを評価した結果が真の場合のみに、左側にあるものを評価する演算子です。
    + +
    +例:
        a=b if b!=0; // b が 0 でなければ a に b を代入
    +
    +
    + +
    + 演算子の結果を得ることはできません。
    +
    +

    順次演算子 +

    + 順次演算子 , (カンマ) は、左にあるものを評価して、つぎに右側にあるものを評価します。それ以外の事は行いません。演算子全体としては、右側にあるものを評価した結果になります。カンマが続けて複数書かれた場合は、左側にあるものから順に評価されます。
    + +
    +例:
        c = (a=1, b=2); // a=1, b=2 が評価され、c には 2 が代入される
    +    a=1, b=2, c=3; // a=1, b=2, c=3 の順に評価される
    +
    +
    + +
    +

    代入演算子 +

    + 代入演算子には以下のものがあります。
    +
    += <-> &= |= ^= -= += %= /= \= *= ||= &&= >>= <<= >>>=
    + このうち、 = 演算子は単純代入演算子で、右側のものを評価した結果を左側のものに代入するという動作をし、演算子全体の値としては右側にあるものを評価した結果となります。
    + +
    +例:
        a = 0;  // a に 0 を代入
    +    a = b = c = 0; // c , b, a の順に 0 を代入
    +
    +
    + +
    + <-> 演算子はいれかえを行います。まず、左側のものを評価し、次に右側のものを評価します。そのあと、右側を評価した結果を左側に代入し、左側を評価した結果を右側に代入します。演算子の結果を得ることはできません。
    + 現時点では左右の式はそれぞれ、式の値を得るためと式に代入するために2回評価されます。将来的にこの仕様は変更される可能性があるので、評価回数に依存した記述をしないようにしてください。
    +
    + それ以外の演算子は、すべて、演算子= の形式をとっており、A 演算子= B と記述された場合は、A = A 演算子 B という意味になります。演算子全体の値としては、演算の結果の値となります。
    +
    +

    条件演算子 +

    + 条件演算子 ? : は3項演算子です。A ? B : C の形式で書くと、A を評価し、真だった場合に B を評価し、C を無視します。偽だった場合は C を評価し、B を無視します。演算子全体の値としては、B または C の評価された方の値になります。
    +
    + 条件演算子は左辺値として使うことができます。
    + +
    +例:
        a = b==0 ? c : b; // b が 0 だったら a に c を、 b が 0 でなかったら a に b を代入
    +    b==0 ? (a=c) : (a=b); // 上と同じ意味
    +    (a ? b : c ) = d; // a が真ならば b に、a が偽ならば c に、 d を代入 (左辺値として使用した例)
    +
    +
    + +
    +

    論理 OR 演算子 +

    + 論理 OR 演算子 || は、左側にあるものをまず評価し、真ならば右側にあるものを無視して、演算子全体の結果としては真になります。左側にあるものを評価した結果が偽だった場合、右側にあるものを評価し、その真偽の結果が演算子全体の結果となります。
    +
    +

    論理 AND 演算子 +

    + 論理 AND 演算子 && は、左側にあるものをまず評価し、偽ならば右側にあるものを無視して、演算子全体の結果としては偽になります。左側にあるものを評価した結果が真だった場合、右側にあるものを評価し、その結果が演算子全体の結果となります。
    +
    +

    ビット OR 演算子 +

    + ビット OR 演算子 | は、ビットごとの論理 OR をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの OR をとったものが演算子全体の値となります。
    +
    +

    ビット XOR 演算子 +

    + ビット XOR 演算子 ^ は、ビットごとの論理 XOR をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの XOR をとったものが演算子全体の値となります。
    +
    +

    ビット AND 演算子 +

    + ビット AND 演算子 & は、ビットごとの論理 AND をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの AND をとったものが演算子全体の値となります。
    +
    +

    同定演算子 +

    + == != === !==は同定演算子の類です。
    +
    +
    +
    == 演算子
    +
    == 演算子は、左側にあるものを先に評価し、次に右側にあるものを評価します。両者が一致すれば演算子全体で真、一致しなければ演算子全体で偽になります。両辺の演算の結果、型が異なれば適切に変換されてから比較されます。たとえば、-1 == '-1' は真になります。
    +
    != 演算子
    +
    != 演算子は、== 演算子の真偽が逆になったものです。
    +
    === 演算子
    +
    === 演算子は識別比較演算子と呼ばれ、== 演算子と同じですが、型の変換は行われず、型までもが一致しなければ真になりません。
    +
    !== 演算子
    +
    !== 演算子は、=== 演算子の真偽が逆になったものです。
    +

    比較演算子 +

    + < > <= >= は比較演算子の類です。
    +
    +
    +
    < 演算子
    +
    < 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。左側を評価した結果が右側を評価した結果よりも小さければ真になり、そうでなければ偽になります。
    +
    > 演算子
    +
    > 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。右側を評価した結果が左側を評価した結果よりも小さければ真になり、そうでなければ偽になります。
    +
    <= 演算子
    +
    <= 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。左側を評価した結果が右側を評価した結果よりも小さいか等しいならば真になり、そうでなければ偽になります。
    +
    >= 演算子
    +
    >= 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。右側を評価した結果が左側を評価した結果よりも小さいか等しいならば真になり、そうでなければ偽になります。

    + 比較するものが両方とも文字列の場合は、ワイド文字コード順(通常はUNICODE)での比較になります。
    +
    +

    ビットシフト演算子 +

    + >> << >>>はビットシフト演算子の類です。
    +
    +
    +
    >> 演算子
    +
    >> 演算子は、まず左側にあるものを評価し、右側にあるものを次に評価します。左側の結果を整数として、右側の結果の回数分だけ右に符号付きビットシフトしたものが演算子全体の結果となります。
    +
    << 演算子
    +
    << 演算子は、まず左側にあるものを評価し、右側にあるものを次に評価します。左側の結果を整数として、右側の結果の回数分だけ左にビットシフトしたものが演算子全体の結果となります。
    +
    >>> 演算子
    +
    >>> 演算子は、>>演算子と同じですが、左側を評価した結果を符号無し整数として扱います。
    +

    加減算演算子 +

    + + - は、それぞれ加算演算子と減算演算子です。
    +
    +
    +
    + 演算子
    +
    + 演算子は、先に左側を評価し、次に右側を評価します。結果が両方とも数値だった場合は、数値としての加算が行われ、演算子全体の結果となります。どちらか、あるいは両方が文字列だった場合は、文字列としての加算が行われ、演算子全体としては 左側の結果の後ろに右側の結果を結合した文字列になります。数値は文字列に、オブジェクト型は文字列に変換できれば変換されます。
    +
    - 演算子
    +
    - 演算子は、先に左側を評価し、次に右側を評価します。その後、数値として左側の結果から右側の結果が引かれ、それが演算子全体の値となります。
    +

    乗除余算演算子 +

    + % / \ * は、それぞれ剰余算、除算、整数除算、乗算演算子です。
    +
    +
    +
    % 演算子
    +
    % 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で割った剰りが演算子全体の値になります。値は両方とも整数として扱われます。
    +
    / 演算子
    +
    / 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で割った値が演算子全体の値になります。値は実数として扱われます。
    +
    \ 演算子
    +
    \ 演算子は、/ 演算子のように除算を行いますが、値は整数として扱われます。
    +
    * 演算子
    +
    * 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で掛けた値が演算子全体の値になります。値は実数として扱われます。
    +

    一般的な単項演算子の類 +

    + 以下はすべて単項演算子です ( instanceof は例外 )。
    +
    +
    +
    ! 演算子
    +
    前置の ! 演算子は、論理否定演算子です。右側にあるものを評価したものの真偽を逆にしたものが演算子全体の値となります。
    +
    ~ 演算子
    +
    ~ 演算子は、ビット否定演算子です。右側にあるものを評価したものを整数とし、ビットごとの否定 ( 1→0、0→1 ) を行ったものが演算子全体の値となります。
    +
    -- 演算子
    +
    前置の -- 演算子は、前置デクリメント演算子です。右側にあるものから1を減じ、減じた後の値が演算子全体の値となります。
    +
    ++ 演算子
    +
    前置の ++ 演算子は、前置インクリメント演算子です。右側にあるものに1を加算し、加算した後の値が演算子全体の値となります。
    +
    new 演算子
    +
    new 演算子は、右側にある関数評価式を関数呼び出しではなくオブジェクトの作成を行わせるようにします。
    +
    invalidate 演算子
    +
    invalidate 演算子は、右側にあるものを評価し、その結果のオブジェクトを無効化します。右側にある物が void, 文字列, 数値, オクテット列だった場合は何もしません。オブジェクトがすでに無効化されていた場合も何もしません。null が指定された場合は例外が発生します。
    +
    isvalid 演算子
    +
    isvalid 演算子は、右側、あるいは左側にあるものを評価し、その結果のオブジェクトが有効な場合に true、 無効な場合に false になります。演算子を評価対象の前に置いても、後ろに置いても同じ意味になります。対象が void, 文字列, 数値, オクテット列だった場合は常に真を返します。null が指定された場合は例外が発生します。
    +
    delete 演算子
    +
    delete 演算子は、右側に書いたオブジェクトのメンバ、あるいはローカル変数を消去します。消去に成功すれば true、失敗すれば false になります。
    +
    typeof 演算子
    +
    typeof 演算子は、右側にあるものを評価し、その型によって以下の文字列となります : void:"void"、整数:"Integer"、実数:"Real"、オブジェクト:"Object"、文字列:"String"、オクテット列:"Octet" 。ただし、オブジェクトのメンバを指定した場合で、メンバが無かった場合は "undefined" になります。
    +
    # 演算子
    +
    # 演算子は、右側にあるものを評価し、文字列として最初の一文字の文字コードを演算子全体の値とします。
    +
    $ 演算子
    +
    $ 演算子は、右側にあるものを評価し、その結果を文字コードとして、それが表す文字一文字を演算子全体の値とします。
    +
    + 演算子
    +
    単項の + 演算子は、右側にあるものを評価します。右側にあるものが実数や整数ならば何もしません。それ以外の場合は、実数や数値への変換を試み、その結果が演算子全体の結果となります。文字列を数値に変換しようとする場合は、変換に失敗した場合は、例外を発生せず、 0 になります。小数点を含むような実数表現であれば実数に、そうでなければ整数に変換されます。文字列の先頭に 0x や 0b 、0 があれば、それぞれ 16 進数、2 進数、8 進数として解釈されます。
    +
    - 演算子
    +
    単項の - 演算子は、左側にあるものを評価し、その結果を数値として、正負を逆にしたものを演算子全体の結果とします。
    +
    & 演算子
    +
    単項の & 演算子は、右側に書いたオブジェクトのメンバへのアクセスを、プロパティハンドラを介さない、プロパティオブジェクトそのものへのアクセスに変更します。たとえば、propobj = &obj.prop; では、obj のメンバプロパティ prop のプロパティハンドラは起動されず、メンバプロパティ prop のプロパティオブジェクトそのものへの参照が propobj に代入されます。右側がプロパティへのアクセスではなかった場合の動作は不定です。
    +
    * 演算子
    +
    単項の * 演算子は、右側に書いたオブジェクトのプロパティハンドラを動作させます。右側にはプロパティオブジェクトを表す式を書かなければなりません。たとえば、*propobj = 1; は、プロパティオブジェクトである propobj の setter ハンドラを呼び出し、1 を代入します。
    +
    instanceof 演算子
    +
    instanceof 演算子は、左側にあるものを評価し、次に右側にあるものを評価します。右側にはクラス名となる、文字列になるものを書き、左側にあるものが、そのクラスのインスタンスであれば true、そうでなければ false になります。
    +

    関数呼び出し、カッコ類、後置インクリメント・デクリメントなど +

    +
    +
    ( ) 演算子
    +
    ( ) 演算子は、演算の優先順位を変更します。または、関数呼び出しを行います。
    +
    [ ] 演算子
    +
    [ ] 演算子は、間接メンバ選択演算子です。A [ B ] と書かれた場合、A を先に評価し、 B を次に評価します。B を文字列として、そのメンバ名を A から探し、演算子全体としてはそのメンバへのアクセスとなります。左辺値として使われた場合は、オブジェクト内にメンバ B を、もし無ければ新規に作成する、という作用も伴います。
    +
    . 演算子
    +
    . 演算子は、直接メンバ選択演算子です。A.B と書かれた場合、A を評価します。B を A から探し、演算子全体としてはそのメンバへのアクセスとなります。左辺値として使われた場合は、オブジェクト内にメンバ B を、もし無ければ新規に作成する、という作用も伴います。
    +もし . 演算子の左側が省略された場合は、with ステートメントの外側ならば global オブジェクト内のメンバを、with ステートメントの内側ならばその with で示されたオブジェクトのメンバを参照します。
    +
    ++ 演算子
    +
    後置の ++ 演算子は、後置インクリメント演算子です。左にあるものに1を加算し、演算子全体としては加算する前の、左にあるもの、になります。
    +
    -- 演算子
    +
    後置の -- 演算子は、後置デクリメント演算子です。左にあるものから1を減じ、演算子全体としては減じる前の、左にあるもの、になります。
    +
    ! 演算子
    +
    後置の ! 演算子は、式評価演算子です。左にあるものを評価した結果を文字列として、それを式文字列として解釈します。結果は、その式文字列を解釈して評価した結果になります。式は this コンテキスト (この演算子を使った位置での this) 上で動作します。
    +
    incontextof 演算子
    +
    incontextof 演算子は、左にあるものを先に評価し、次に右にあるものを評価します。左にあるものを評価した結果をオブジェクトとして、そのオブジェクトのコンテキスト部分を、右にあるものを評価した結果と置き換えたものが演算全体の結果となります。
    +
    int 演算子
    +
    int 演算子は、右にあるものを評価し、それを整数型に変換したものが演算子全体の結果となります。C 言語のキャスト風に、(int) と書くこともできます。
    +
    real 演算子
    +
    real 演算子は、右にあるものを評価し、それを実数型に変換したものが演算子全体の結果となります。C 言語のキャスト風に (real) と書くこともできます。
    +
    string 演算子
    +
    string 演算子は、右にあるものを評価し、それを文字列型に変換したものが演算子全体の結果となります。C 言語のキャスト風に (string) と書くこともできます。
    + + + + diff --git a/docs/tjs2doc/contents/factor.html b/docs/tjs2doc/contents/factor.html new file mode 100644 index 0000000..c574f7a --- /dev/null +++ b/docs/tjs2doc/contents/factor.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + +

    +

    + 項は、式評価の中でもっとも最高の優先順位にあるものです。これらは、通常の即値、識別子 ( → トークン ) の他、以下のものがあります。
    +
    +

    true と false +

    + truefalse ( 真と偽 ) は、それぞれ 10 の値を持つ整数値として扱われます。
    +
    + true および false と、その他の式を比較することは避けてください。たとえば、if(true != getBoolean()) のような事はせず、if(!getBoolen()) のように記述してください。論理式では「0 が偽」、「0 以外が真」であって、「1 が 真」では無く、また、TJS2 は 論理型(Boolean)を持っていないため、自動的な数値←→論理型の型変換が行われないためです。
    +
    +

    void +

    + void は、「なにもない」を示します。「なにもない」ことを表す様々な場面で使用されます。null とは違います。
    + 宣言したての変数 (何も代入されていない変数) は、この値です。
    + 文字列として扱われた場合、空文字列 ( '' )になります。数値として扱われた場合、 0 になります。
    +
    + void 同士の比較には ===!== ( 識別 ) 演算子を使うことをおすすめします。
    +
    +

    null +

    + null は、オブジェクトではあるが「なんのオブジェクトも示していない」とうことを示します。void とは違います。
    + null オブジェクトにアクセスしようとするとエラーになります。
    + incontextof 演算子を用いて コンテキストを null に変更すると、その関数は、呼び出した位置のコンテキスト上で実行されるようになります。
    + +
    +例:
        var objmethod = obj.method;
    +    objmethod(); // obj のコンテキスト上で実行される
    +    objmethod = objmethod incontextof null; // コンテキストを null に変更
    +    objmethod(); // this (つまり呼び出した位置におけるコンテキスト) 上で実行される
    +
    +
    + +
    +

    Infinity +

    + Infinity は、無限大を表します。負の無限大を表す場合は -Infinity です。
    +
    +

    NaN +

    + NaN は、非数 (Not a Number) を表します。非数は計算の結果が無効な場合などに得られる数値です。
    +
    +

    super +

    + super は、クラスのメソッド/プロパティ内で、そのクラスのスーパークラスを表します。クラスのメソッド/プロパティではないところ、あるいは多重継承を行っているクラス内で参照しようとするとエラーになります。
    +
    +

    global +

    + global は、グローバルのオブジェクトを表します。すべてのブロックの外で宣言された変数や、クラス、クラスのメソッドでない関数などにアクセスできます。
    +
    + +
    +例:
        var v;
    +    function test(v)
    +    {
    +        global.v=v;  // global の v に、引数の v を設定する
    +    }
    +
    +
    + +
    +

    this +

    + this は、クラスのメソッドやプロパティ内で、通常、そのクラスのオブジェクト自身を表します。
    + 呼び出し時に明示的あるいは暗黙的に指定された「コンテキスト」が this として指定されます。
    +
    +

    式中関数 +

    + function を使って、式中に関数を書くことができます。関数 を参照してください。
    +
    +

    式中配列 +

    + [ ] を使って、式中に Array クラスのオブジェクトをその場で記述することができます。Array クラス を参照してください。
    +
    +

    式中辞書配列 +

    + %[ ] を使って、式中に Dictionary クラスのオブジェクトをその場で記述することができます。Dictionary クラス を参照してください。
    +
    + + + + diff --git a/docs/tjs2doc/contents/for.html b/docs/tjs2doc/contents/for.html new file mode 100644 index 0000000..23babec --- /dev/null +++ b/docs/tjs2doc/contents/for.html @@ -0,0 +1,61 @@ + + + + + + + for ステートメント + + + + + + + + +

    for ステートメント +

    + for ステートメントは、while ステートメントに似ていますが、より複雑なものです。
    + 構文は以下の通りです。
    +for(第1節;第2節;第3節) +    ステートメントまたはブロック
    + ここで、第1節には、ループに入る前に実行したい式を指定します。ここには変数宣言を行うこともできて、ここで宣言した変数は、ループの間中有効なものとされます ( ループを抜けると削除されます )。省略することもできます。
    +
    + 第2節には条件式を指定します。この条件式が true の間、ステートメントまたはブロックが繰り返し実行されます。省略すると、常に真であると見なされます。
    +
    + 第3節には、ステートメントまたはブロックの最後で実行したい式を指定します。省略することもできます。
    +
    + 動作としては、
    +(1) まず、第1節を実行する
    +(2) 第2節を評価し、偽ならばステートメントまたはブロックは評価されずに終わる
    +(3) ステートメントまたはブロックを実行する
    +(4) 第3節を実行する
    +(5) 第2節を評価し、偽ならばループを抜ける
    +(6) (3) から繰り返す
    +
    + ブロック中に break ステートメントがあった場合は、その時点でループから抜けます。continue ステートメントがあった場合は、(4) に飛びます。
    +
    + +
    +例:
        var i,a=1;
    +    for(i=1;i<5;i++)
    +    {
    +        a*=i;
    +    }
    +
    +    var i;
    +    for(i=0;i<10;i++)
    +    {
    +        if(obj[i]==0) continue; // continue しても i++ が実行される
    +        if(obj[i]==1) break; // break するとその場で抜ける
    +        func(obj[i]);
    +    }
    +
    +
    + +
    + + + + diff --git a/docs/tjs2doc/contents/frame.html b/docs/tjs2doc/contents/frame.html new file mode 100644 index 0000000..28ad05f --- /dev/null +++ b/docs/tjs2doc/contents/frame.html @@ -0,0 +1,64 @@ + + + + + + + TJS2 リファレンス 目次 + + + + + + + + + +
    +

    言語リファレンス +

    +

    組み込みの手引き +

    +

    付録 +

    + + + + diff --git a/docs/tjs2doc/contents/function.html b/docs/tjs2doc/contents/function.html new file mode 100644 index 0000000..5e2e00b --- /dev/null +++ b/docs/tjs2doc/contents/function.html @@ -0,0 +1,251 @@ + + + + + + + 関数 + + + + + + + + +

    関数 +

    + TJS2 の関数はサブルーチンとほぼ同義です。値を返すことのない場合も関数として扱います。
    + また、特にクラスやオブジェクトのメンバとなっている関数を「メソッド」と呼ぶことがあります。
    +
    +

    関数の書き方 +

    + 関数は、以下の書式で書くことができます。
    + +
    +    function 関数名 ( 引数リスト )
    +    {
    +        関数の内容
    +    }
    +
    +
    + +
    + まず、関数を定義するには、function を書きます。そのあとに、関数の名前を書きます。ここに書いた名前で関数が使用可能になります。
    + 関数の内容には、関数内で実行したいステートメントやブロックを記述することができます。
    +
    + +
    +例:
        function test(a) { System.inform(a); }
    +    function func(a, b, c, d)
    +    {
    +        test(a);
    +        test(b);
    +        test(c);
    +        test(d);
    +        return a+b-c*d;
    +    }
    +
    +
    + +
    +関数に対して instanceof 演算子を "Function" を伴って使用した場合は真になります(上記の例で言うと、func instanceof "Function" は真)。
    +
    +

    関数の呼び出し +

    + 関数の呼び出しは ( ) 演算子を使って、以下のように記述します。
    +    関数名( 引数 )
    +
        引数がない場合は、関数名( ) になります。引数には、式を指定し、複数ある場合はカンマで区切って指定します。
    + +
    +例:
        func();
    +    func(1+2, 1-2);
    +    func(func2());
    +
    +
    + +
    +    また、式を指定せずに、空にしておくと、そこの部分には void が指定されたと見なされます。
    + +
    +例:
        func(,1); // void, 1 が指定されたとみなされる
    +    func(,); // void, void が指定されたと見なされる
    +
    +
    + +
    +

    引数リスト +

    + 引数リストには、渡された引数を受け取るための変数の名前を書きます。関数呼び出しの際に渡した引数のうち、前に書いたものから順番に、変数に引き渡されます。
    + +
    +例:
        function test(a, b, c)
    +    {
    +        // この時点で、 a と b と c という変数が使用可能であり、
    +        // 引数として渡された 3 つの引数が代入されています。
    +        // test(1, 2, 3) と呼び出した場合は、 a に 1、
    +        // b に 2, c に 3 が入っています。
    +    }
    +
    +
    + +
    + これらの引数はローカル変数であり、関数から実行が抜けるとアクセスできなくなります。
    +
    + TJS2 では、関数呼び出しの際に与えられた引数が宣言の引数の数よりも少なかったり、多かったりしてもエラーにはなりません ( 例外的に、TJS2 で記述されたのではない関数 ( 実体が C++ などで記述された関数 ) はエラーにする場合があります )。与えられた引数が宣言より多い場合は多い分が無視され、少ない場合は、足りない変数には void が渡されます。
    + +
    +例:
        function test(a, b)
    +    {
    +        // もし test(1) として呼び出すと、a には 1 、b には void が入る。
    +        // もし test(1,2,3) として呼び出すと、 a には 1、 b には 2 が入り、3 は無視される
    +    }
    +
    +
    + +
    + 引数リストの個々の引数には、 = に続けてデフォルトの値 ( デフォルト引数 ) を指定することができます。これは、void が指定されたときや、与えられた引数が宣言の引数に満たない場合に、自動的に指定された値が使用されるというものです。
    + +
    +例:
        function test(a = -1, b = 1)
    +    {
    +        // もし・・・
    +        // test() として呼び出すと、 a=-1, b=1
    +        // test(5) として呼び出すと、 a=5, b=1
    +        // test(void,void) として呼び出すと、 a=-1, b=1
    +        // test(,4) として呼び出すと、a=-1, b=4
    +    }
    +
    +
    + +
    + 引数を受け取る必要のない関数は、引数リストを省略することができます。
    + +
    +例:
        function test
    +    {
    +        // 引数を受け取らない関数
    +    }
    +
    +
    + +
    +

    式中関数 +

    + function キーワードを式内で使うと、名前のない関数、式中関数 ( 匿名関数 ) を作成することができます。
    + この場合、関数の名前は省略します。
    + +
    +例:
        var func = function(i) { return i*5; };
    +    var func2 = function { System.inform("hoge"); };
    +    var v = func(); // func 呼び出し
    +    func2(); // func2 呼び出し
    +
    +
    + +
    +

    引数の省略 +

    + 関数を呼び出す際に、 ... のみを引数として書くと、呼び出す式を記述した関数に引き渡された引数が、そのまま関数呼び出し先の関数に引き渡されます。これは、引数変数の内容を変更していても、あるいは受け取った引数が足りなくても、正しい元の内容、引数の数がわたります。
    + +
    +例:
        function test()
    +    {
    +        test2(...);
    +        // test2 には test に渡された引数が、渡された時点のまま
    +        // の内容、個数で渡される
    +    }
    +
    +
    + +
    +

    引数の配列変換 +

    + 引数を配列として受け取ることができます。配列として受け取るには、引数名に '*' を付けて関数を宣言します。
    + +
    +例:
        function func(args*)
    +    {
    +        // args はこの関数に渡された引数を要素として持つ配列になる
    +        // たとえば func(1, 2, 3, 4) として呼び出された場合、
    +        // args には 4 つの要素が入っており、先頭から 1 2 3 4 の順で
    +        // 数値が入っていることになる。
    +    }
    +
    +
    + +
    + 引数の途中から最後までを全て配列として受け取ることもできます。引数の数が満たなかった場合は、配列は空となります。
    + +
    +例:
        function func(x, args*)
    +    {
    +        // たとえば func(1, 2, 3, 4) として呼び出された場合、
    +        // x には 1 が入る。また args には 3 つの要素が入っており、
    +        // 先頭から 2 3 4 の順で数値が入っていることになる。
    +        // func(1) として呼び出された場合、引数の数が満たないため、
    +        // args は要素のない配列となる。
    +    }
    +
    +
    + + これは、可変長の引数を処理したい場合に便利です。
    +
    + 引数名を指定しない事も可能です。この場合は、後述の配列の引数への展開の際に、名前なしの * として使用できます。
    +
    +

    配列の引数への展開 +

    + 配列を展開し、引数として関数に渡すことができます。この場合は、引数の配列展開の際と同じく、展開したい式の後ろに '*' を付けて関数を呼び出します。'*' を指定して展開したい式は、配列を表して無ければなりません。
    + +
    +例:
        var args = [1, 2, 3, 4];
    +    func(args*);
    +    // args には 1 2 3 4 の4つの要素が入っているため、
    +    // func(1, 2, 3, 4); と同じ意味になる。
    +    func(0, args*, 5);
    +    // このように引数の途中に挟むことも可能。
    +    // この場合は、func(0, 1, 2, 3, 4, 5); と同じ意味に
    +    // なる。
    +
    +
    + +
    + 式を指定せずに、単に * を引数に指定すると、呼び出す式を記述した関数の宣言時に書いた名前のない '*' が表す引数を、そのまま呼び出し先に渡すことができます。 +
    +例:
        function func(func_array, *)
    +    {
    +        // func_array で指定された関数に、
    +        // その関数の func_array 内の位置につづき、
    +        // func に渡された 2 番目以降の引数を
    +        // そのまま引き渡して呼び出す
    +        for(var i = 0; i < func_array.count; i++)
    +            func_array[i](i, *);
    +    }
    +
    +
    + +
    + 名前の無い * による関数呼び出し処理は、名前のある配列を使うよりも効率よく処理できます。
    + +
    +例:
        function func(ar*) { func2(ar*); }
    +    function func(*) { func2(*); }
    +    // 上記の二つは全く同じ意味になるが、下の例の方が効率がよい
    +
    +
    + +
    + 名前の無い * は、「引数の省略」と同様の効果を持ちます。以下の二つの関数宣言は同じ意味になります。
    + +
    +例:
        function func() { func2(...); }
    +    function func(*) { func2(*); }
    +
    +
    + +
    + + + + diff --git a/docs/tjs2doc/contents/grad.png b/docs/tjs2doc/contents/grad.png new file mode 100644 index 0000000000000000000000000000000000000000..42bc41c118fa029651be32b188cf2cf820fa1c3b GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0y~yU~>Sn6CMi_TT5yy|*Ub zJYF!WW`psu&kCXV#tHvi-+*c92|f^n0Gn>im!Q;`gn7 z+ioQc(lcH3{>7QMw8GbG-PF)}<@#u70jmNDiH1A~GoqZph0hGTzf85kV0ZZhdKPrNC*;Udsubrnpf-*7R! z+s44KMC}06nRN}lEI=jP>=Au;B3dJo6L^^z44C~BEK8bmSwNZ(GETcG%CKnXZ6=0- z@_7fCHftv={yBkx!Na$K^_Wt#{51&%h6%G6PCsCO5X25P^bpW|i0KhMOMtR7dKrLL zPSb>{PHI=s%`4tIwU`dm544z&%xrfnmdG_Rp`5&AGd) R<}=U)22WQ%mvv4FO#sz-+35fP literal 0 HcmV?d00001 diff --git a/docs/tjs2doc/contents/hline.png b/docs/tjs2doc/contents/hline.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7cde8fd82c4a89de59002d8e67c50c3ab83680 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe899IiL-tjN)j-P0)5S5Q;#TsX(;xaD{{R0! zfhT3*CxIjmIkT-(UM-&#yW&yE2JTSZu-y_85|WaVGY+UsX+7oKp;*y!by3H{E`I&p Y43X#0|9^O>MiXSJr>mdKI;Vst0GOREBme*a literal 0 HcmV?d00001 diff --git a/docs/tjs2doc/contents/if.html b/docs/tjs2doc/contents/if.html new file mode 100644 index 0000000..a5f2e6e --- /dev/null +++ b/docs/tjs2doc/contents/if.html @@ -0,0 +1,96 @@ + + + + + + + if ステートメント + + + + + + + + +

    if ステートメント +

    + if ステートメントは、「○○ならば●●をする」というような、条件判断によってスクリプトの一部を実行するかしないかを決定させる構文です。
    + 構文は以下の通りです。
    + +
    +if(expression)
    +    ステートメントまたはブロック
    +else
    +    ステートメントまたはブロック
    +
    +
    + + 最初の「ステートメントまたはブロック」は、expression を評価した結果が真の時に実行されるもので、2番目の「ステートメントまたはブロック」は、評価した結果が偽のときに実行されるものです。else 以降は必要ない場合は書かなくてかまいません。
    + +
    +例:
        if(a==b)
    +        inform("a と b は同じです");
    +
    +    if(a<b)
    +    {
    +        var t;
    +        t=a; a=b; b=t; // a と b を入れ替える 
    +    }
    +
    +    if(a==b)
    +        inform("a と b は同じです");
    +    else
    +        inform("a と b は違います");
    +
    +
    + +
    +

    if と else の対応 +

    + else は、「前の、まだ else と対応していない if に対応する」という規則を持っています。
    +
    +たとえば、
    + +
    +    if(expr) // ★
    +        if(expr) // ●
    +            statement;
    +        else // ●
    +            statement;
    +    else // ★
    +        statement;
    +
    +
    + + と記述した場合、★の else は ★ の if に、● の else は ● の if に対応することになります。
    + TJS2のようなフリースタイルの言語は、たとえインデントを間違って +
    +    if(expr) // ★
    +        if(expr) // ●
    +            statement;
    +    else // ●
    +        statement;
    +
    +
    + + と書いても、対応は上記の通りですので注意する必要があります。
    + 対応をはっきり区切りたい場合は、
    + +
    +    if(expr) { // ★
    +        if(expr) // ●
    +            statement;
    +    }
    +    else // ★
    +        statement;
    +
    +
    + + のようにブロックで囲むという方法を採ってください。
    +
    + + + + diff --git a/docs/tjs2doc/contents/index.html b/docs/tjs2doc/contents/index.html new file mode 100644 index 0000000..c89cd72 --- /dev/null +++ b/docs/tjs2doc/contents/index.html @@ -0,0 +1,18 @@ + + + + + + TJS2 リファレンス + + + + + + + + <body>フレーム対応のブラウザでご覧ください</body> + + + diff --git a/docs/tjs2doc/contents/interface.html b/docs/tjs2doc/contents/interface.html new file mode 100644 index 0000000..e775e35 --- /dev/null +++ b/docs/tjs2doc/contents/interface.html @@ -0,0 +1,905 @@ + + + + + + + iTJSDispatch2 インターフェース + + + + + + + + +

    iTJSDispatch2 とは +

    + iTJSDispatch2 は、TJS2 における「オブジェクト」に対するインターフェースを提供する抽象基本クラスです。
    + TJS2 の「オブジェクト」には関数オブジェクト、クラス、プロパティオブジェクト、配列(辞書配列) などが含まれます。
    + TJS2 に対するほとんどの操作はこのインターフェースを通じて行うことができます。
    +
    + 以下、このインターフェースを利用する側として説明をします。
    +
    + + + +

    序数による呼び出し +

    +
    + iTJSDispatch2 のメソッドには、メソッド名の末尾が ByNum で終わる物があります。これは、序数による呼び出しを行うものであり、たとえば メンバ名に "23" を指定して FuncCall を呼ぶのと、序数に 23 を指定して FuncCallByNum を呼ぶのは等価です。
    + 配列オブジェクトにアクセスする時に便利でしょう。
    +
    + ByNum が末尾につくメソッドは、末尾に ByNum のつかない同名のメソッドの membername 引数と hint 引数がなく、代わりに tjs_int num があります。引数 num には序数を指定します。
    +
    + 以下、序数による呼び出しを行うメソッドについては詳細な説明を省略します (末尾に ByNum のつかない同名のメソッドの説明を参照してください)。
    +
    + + + + + + + + +

    AddRef +

    +tjs_uint iTJSDispatch2::AddRef(void)
    +
    + オブジェクトの参照カウンタをインクリメントします。
    + TJS2 の各オブジェクトは参照カウンタで管理されています。
    + 戻り値はインクリメント後の参照カウンタの値ですが、この値を信用することは推奨されません。
    +
    + + + + + + + + +

    Release +

    +tjs_uint iTJSDispatch2::Release(void)
    +
    + オブジェクトの参照カウンタをデクリメントします。
    + 戻り値はデクリメント後の参照カウンタの値で、0 が戻ったときはオブジェクトが解放されたことを表します。しかし、この値を信用することは推奨されません。
    +
    + + + + + + + + + + + + +

    FuncCall +

    +tjs_error iTJSDispatch2::FuncCall(
    +    tjs_uint32 flag,
    +    const tjs_char * membername,
    +    tjs_uint32 *hint,
    +    tTJSVariant *result,
    +    tjs_int numparams,
    +    tTJSVariant **param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 関数呼び出しを行います。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。
    + NULL の場合は、このオブジェクト自身に対する操作になります。この場合は、このオブジェクトは関数の機能を持っている必要があります。
    + +
    tjs_uint32 *hint
    +
     「ヒント」を格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントは、2回目以降の同じメンバ名に対する検索を高速に行えるようにするためのものです。hint に tjs_uint32 型の変数へのポインタを指定すると、そこにヒントとなる数値が書き込まれます。2回目以降はその数値を参考にしてメンバを検索します。参考にする程度ですので、ヒントの初期値はどのような値であってもかまいません ( 0 が推奨されます )。また、このような仕組みのため、ヒントとそれに対するメンバ名は1対1で対応しているとより効率的です (tTJSString 型はこのヒントのための機構を持っています)。
    + オブジェクトによっては、ヒントを利用する機構を持っていないかも知れません。
    + +
    tTJSVariant *result
    +
     関数を呼び出した結果を格納するための tTJSVariant 型へのポインタを指定します。
    + 結果が必要ない場合は NULL を指定してかまいません。
    + +
    tjs_int numparams
    +
     関数に渡す引数の数を指定します。
    + +
    tTJSVariant **param
    +
     関数に渡す引数のポインタの配列を渡します。引数がない場合は NULL でかまいません。
    + +
    iTJSDispatch2 *objthis
    +
     関数が実行されるコンテキスト (this オブジェクト) を指定します。
    + + + + +

    FuncCallByNum +

    +tjs_error iTJSDispatch2::FuncCall(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    tTJSVariant *result,
    +    tjs_int numparams,
    +    tTJSVariant **param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数による関数呼び出しを行います。
    +
    + + + +

    PropGet +

    +tjs_error iTJSDispatch2::PropGet(
    +    tjs_uint32 flag,
    +    const tjs_char * membername,
    +    tjs_uint32 *hint,
    +    tTJSVariant *result,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + プロパティやメンバ変数の値の取得を行います。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。
    +
    + NULL の場合は、このオブジェクト自身に対する操作になります。この場合は、このオブジェクトはプロパティ取得の機能を持っている必要があります。
    + この引数が NULL でも成功するオブジェクトは、プロパティオブジェクトと見なされます。通常、このようなプロパティオブジェクトが他のオブジェクトのメンバになった場合は、このプロパティオブジェクト自体ではなく、そのプロパティオブジェクトに対して PropGet を行った結果が用いられます。この動作は呼び出しフラグに TJS_IGNOREPROP を指定することでバイパスすることができます。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    tTJSVariant *result
    +
     結果を格納するための tTJSVariant 型へのポインタを指定します。NULL は許されません。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + + +

    PropGetByNum +

    +tjs_error iTJSDispatch2::PropGetByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    tTJSVariant *result,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数による、プロパティやメンバ変数の値の取得を行います。
    +
    + + + + + + +

    PropSet +

    +tjs_error iTJSDispatch2::PropSet(
    +    tjs_uint32 flag,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    const tTJSVariant *param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + プロパティやメンバ変数の値の設定を行います。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。
    +
    + NULL の場合は、このオブジェクト自身に対する操作になります。この場合は、このオブジェクトはプロパティ設定の機能を持っている必要があります。
    + この引数が NULL でも成功するオブジェクトは、プロパティオブジェクトと見なされます。通常、このようなプロパティオブジェクトが他のオブジェクトのメンバになった場合は、このプロパティオブジェクト自体ではなく、そのプロパティオブジェクトに対して PropSet が呼ばれます。この動作は呼び出しフラグに TJS_IGNOREPROP を指定することでバイパスすることができます。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    const tTJSVariant *param
    +
     設定する値を表す tTJSVariant 型の変数へのポインタを指定します。NULL は許されません。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + +

    PropSetByVS +

    +tjs_error iTJSDispatch2::PropSetByVS(
    +    tjs_uint32 flag,
    +    tTJSVariantString *membername,
    +    const tTJSVariant *param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + プロパティやメンバ変数の値の設定を行います。PropSet と異なるのは、メンバ名が tTJSVariantString により参照される点です。内部的に用いられます。tTJSVariantString は同じ文字列用メモリ領域を、複数の文字列オブジェクトが共有して使う機構を持っているため、このメソッドを介してプロパティの設定 (オブジェクト内へのメンバの作成) を行うと、メンバ名に使用される文字列メモリ領域用メモリの増加を防ぐことができます。
    + このメソッドを実装しない場合は TJS_E_NOTIMPL を返してください。代わりに PropSet が使用されます。また、このメソッドを呼び出して TJS_E_NOTIMPL が返された場合は、PropSet を代わりに使うように実装してください。
    +
    +
    + + + + + +

    PropSetByNum +

    +tjs_error iTJSDispatch2::PropSetByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    const tTJSVariant *param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数による、プロパティやメンバ変数の値の設定を行います。
    +
    + + + + + + +

    GetCount +

    +tjs_error iTJSDispatch2::GetCount(
    +    tjs_int *result,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + オブジェクトが保持しているメンバの数を返します。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_int *result
    +
     結果を格納するための変数へのポインタを指定します。NULL は許されません。
    + +
    const tjs_char * membername
    +
     対象とするメンバの名前を指定します。
    + NULL の場合、このオブジェクト自身の保持しているメンバの数が帰ります。
    + メンバ名が指定された場合、もし、そのメンバがオブジェクトならば、そのオブジェクトの保持しているメンバの数を返します。指定されたメンバがオブジェクト型でなかった場合は失敗します。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + この引数は、通常、意味を持ちません(無視されます)。
    + + + +

    GetCountByNum +

    +tjs_error iTJSDispatch2::GetCount(
    +    tjs_int *result,
    +    tjs_int num,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + GetCount の序数バージョンです。
    +
    + + +

    DeleteMember +

    +tjs_error iTJSDispatch2::DeleteMember(
    +    tjs_uint32 flag,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + メンバの削除を行います。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     対象とするメンバの名前を指定します。NULL は許されません。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + この引数は、通常、意味を持ちません(無視されます)。
    + + + + + +

    DeleteMemberByNum +

    +tjs_error iTJSDispatch2::DeleteMemberByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数によりメンバの削除を行います。
    +
    + + +

    EnumMembers +

    +tjs_error iTJSDispatch2::EnumMembers(
    +        tjs_uint32 flag,
    +        tTJSVariantClosure *callback,
    +        iTJSDispatch2 *objthis
    +        )
    +
    + オブジェクト内のメンバを列挙します。
    + callback にはコールバック関数を指定できますが、現バージョンではコールバック関数内でこのオブジェクトのメンバの作成や削除を行った場合の動作は保証されません。
    +
    + 引数は以下の通りです。
    + 
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです。呼び出しフラグは、下記のフラグのビット論理和あるいは 0(ゼロ) を指定してください。
    +
    +
    TJS_IGNOREPROP
    +
     プロパティアクセスを無効化します。メンバを列挙し、かつ値を取得する場合、このフラグが指定されていると、メンバがプロパティの場合はプロパティオブジェクトそのものが得られます。このフラグを指定しなかった場合は、プロパティオブジェクトを通して得られた値が得られます。
    +
    +
    TJS_ENUM_NO_VALUE
    +
     値を取得しません。このフラグが指定されていると、コールバック関数に渡される引数は 2 つになります。指定されていると 3 つになります。
    +
    +
    tTJSVariantClosure *callback
    +
     コールバック関数を指定します。
    + このコールバック関数は、メンバ一つにつき一回ずつ、callback->FuncCall が呼び出されます。
    + 関数には2つ(TJS_ENUM_NO_VALUEを指定した場合)あるいは3つ(TJS_ENUM_NO_VALUEを指定しなかった場合)の引数が渡されます。
    +
    • 第1引数は文字列型になり、メンバ名です
    • 第2引数は整数型になり、そのメンバのフラグです。TJS_HIDDENMEMBER あるいは TJS_STATICMEMBER のビット論理和の組み合わせ、あるいは 0 が指定されます
    • 第3引数はTJS_ENUM_NO_VALUEを指定しなかった場合にのみ存在し、そのメンバの値を表します
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + この引数は、TJS_IGNOREPROP フラグが指定されない場合、プロパティオブジェクトが実行されるデフォルトのコンテキストとなります。
    +
    + + +
    + + + + + + + +

    Invalidate +

    +tjs_error iTJSDispatch2::Invalidate(
    +    tjs_uint32 flag,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 無効化を行います。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     対象とするメンバの名前を指定します。
    + NULL の場合、このオブジェクト自身が無効化されます。
    + メンバ名が指定された場合、もし、そのメンバがオブジェクトならば、そのオブジェクトが無効化されます。指定されたメンバがオブジェクト型でなかった場合は失敗します。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + この引数は、通常、意味を持ちません(無視されます)。
    + + +

    InvalidateByNum +

    +tjs_error iTJSDispatch2::InvalidateByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    iTJSDispatch2 *objthis
    +    )
    +
    +序数により無効化を行います。
    +
    + + + + +

    IsValid +

    +tjs_error iTJSDispatch2::IsValid(
    +    tjs_uint32 flag,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + オブジェクトが有効かどうかを調べます。
    + 有効の場合は TJS_S_TRUE が、向こうの場合は TJS_S_FALSE が戻ります。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     対象とするメンバの名前を指定します。
    + NULL の場合、このオブジェクト自身の有効性を調べることができます。
    + メンバ名が指定された場合、もし、そのメンバがオブジェクトならば、そのオブジェクトの有効性を調べることができます。指定されたメンバがオブジェクト型でなかった場合は失敗します。 +
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    iTJSDispatch2 *objthis
    +
     このメソッドが実行されるコンテキスト (this オブジェクト) を指定します。
    + この引数は、通常、意味を持ちません(無視されます)。
    + + + + + + +

    IsValidByNum +

    +tjs_error iTJSDispatch2::IsValidByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数により、オブジェクトが有効かどうかを調べます。
    +
    + + + + + +

    CreateNew +

    +tjs_error iTJSDispatch2::CreateNew(
    +    tjs_uint32 flag,
    +    const tjs_char * membername,
    +    tjs_uint32 *hint,
    +    iTJSDispatch2 **result,
    +    tjs_int numparams,
    +    tTJSVariant **param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 新規オブジェクトを作成します。
    + このメソッドは FuncCall メソッドに似て、オブジェクトを新規作成するために引数を渡すことができます。
    + オブジェクトの雛形となる、いわゆる「クラスオブジェクト」はこのメソッドを実装している必要があります。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。
    + NULL の場合は、このオブジェクト自身に対する操作になります。この場合は、このオブジェクトは、新にオブジェクトを新規作成する機能を持っている必要があります。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    iTJSDispatch2 **result
    +
     新しく作成したオブジェクトを格納するための iTJSDispatch * 型へのポインタを指定します。NULL は許されません。
    + +
    tjs_int numparams
    +
     オブジェクトを新規作成する際に渡す引数の数を指定します。
    + +
    tTJSVariant **param
    +
     オブジェクトを新規作成する際に渡す引数のポインタの配列を渡します。引数がない場合は NULL でかまいません。
    + +
    iTJSDispatch2 *objthis
    +
     オブジェクトを新規作成する際に実行されるコンテキスト (this オブジェクト) を指定します。
    + + + + +

    CreateNewByNum +

    +tjs_error iTJSDispatch2::CreateNew(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    iTJSDispatch2 **result,
    +    tjs_int numparams,
    +    tTJSVariant **param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数により新規オブジェクトを作成します。
    +
    + + + + + + + +

    IsInstanceOf +

    +tjs_error iTJSDispatch2::IsInstanceOf(
    +    tjs_uint32 flag,
    +    const tjs_char * membername,
    +    tjs_uint32 *hint,
    +    const tjs_char * classname,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + オブジェクトが、特定のクラスのインスタンスであるかどうかを調べます。
    + クラス名は classname 引数に文字列で渡されます。
    + TJS2 の instanceof 演算子により参照されます。
    + 成功した場合、指定されたクラスのインスタンスである場合は TJS_S_TRUE が、そうでない場合は TJS_S_FALSE が帰ります。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです(下記参照)。
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。
    + NULL の場合は、このオブジェクト自身に対する操作になります。この場合は、このオブジェクトは、新にオブジェクトを新規作成する機能を持っている必要があります。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    const tjs_char *classname
    +
     クラス名を文字列で指定します。
    + +
    iTJSDispatch2 *objthis
    +
     オブジェクトを新規作成する際に実行されるコンテキスト (this オブジェクト) を指定します。
    + + + +

    IsInstanceOfByNum +

    +tjs_error iTJSDispatch2::IsInstanceOfByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    const tjs_char * classname,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数により、オブジェクトが、特定のクラスのインスタンスであるかどうかを調べます。
    +
    + + + +

    Operation +

    +tjs_error iTJSDispatch2::Operation(
    +    tjs_uint32 flag,
    +    const tjs_char *membername,
    +    tjs_uint32 *hint,
    +    tTJSVariant *result,
    +    const tTJSVariant *param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + メンバに対して演算を行います。演算の種類は flag で指定します。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです。下記の通常の呼び出しフラグの他、演算の種類を指定するために以下のフラグのいずれかをビットORで付加する必要があります。
    +
    + なお、この説明中で v はメンバの値、p は param 引数で渡すパラメータを表します。
    +
    +
    +
    TJS_OP_BAND
    +
    ビット AND 演算
    +v &= p
    + +
    TJS_OP_BOR
    +
    ビット OR 演算
    +v |= p
    + +
    TJS_OP_BXOR
    +
    ビット XOR 演算
    +v ^= p
    + +
    TJS_OP_SUB
    +
    減算
    +v -= p
    + +
    TJS_OP_ADD
    +
    加算
    +v += p
    + +
    TJS_OP_MOD
    +
    モジュラ
    +v %= p
    + +
    TJS_OP_DIV
    +
    実数除算
    +v /= p
    + +
    TJS_OP_IDIV
    +
    整数除算
    +v \= p
    + +
    TJS_OP_MUL
    +
    乗算
    +v *= p
    + +
    TJS_OP_LOR
    +
    論理 OR
    +v = v || p
    + +
    TJS_OP_LAND
    +
    論理 AND
    +v = v && p
    + +
    TJS_OP_SAR
    +
    算術右シフト
    +v >>= p
    + +
    TJS_OP_SAL
    +
    算術左シフト
    +v <<= p
    + +
    TJS_OP_SR
    +
    ビット左シフト
    +v >>>= p
    + +
    TJS_OP_INC
    +
    インクリメント
    +v++
    +param 引数は無視されます
    + +
    TJS_OP_DEC
    +
    デクリメント
    +v--
    +param 引数は無視されます
    +
    + +
    const tjs_char * membername
    +
     操作対象とするメンバ名です。NULL は許されません。
    + +
    tjs_uint32 *hint
    +
     ヒントを格納するための変数の領域を指定します。NULLでもかまいません。
    + ヒントの説明については FuncCall の説明を参照してください。
    + +
    tTJSVariant *result
    +
     演算の結果を格納するための tTJSVariant 型の変数へのポインタを指定します。NULL でかまいません。
    + +
    tTJSVariant *param
    +
     演算のパラメータを指定します。演算の種類に TJS_OP_INC または TJS_OP_DEC を指定した場合は NULL でかまいません。
    + +
    iTJSDispatch2 *objthis
    +
     演算が実行されるコンテキストを指定しますが、通常無視されます。
    + + + + +

    OperationByNum +

    +tjs_error iTJSDispatch2::OperationByNum(
    +    tjs_uint32 flag,
    +    tjs_int num,
    +    tTJSVariant *result,
    +    const tTJSVariant *param,
    +    iTJSDispatch2 *objthis
    +    )
    +
    + 序数を用いて、メンバに対して演算を行います。
    +
    + + + +

    NativeInstanceSupport +

    +tjs_error iTJSDispatch2::NativeInstanceSupport(
    +    tjs_uint32 flag,
    +    tjs_int32 classid,
    +    iTJSNativeInstance **pointer
    +    )
    +
    + オブジェクトにネイティブコードのインスタンスを関連づけたり、オブジェクトからネイティブコードのインスタンスを取得したりします。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグを指定します。
    + 以下のいずれかの値を指定する必要があります。
    +
    +
    +
    TJS_NIS_REGISTER
    +
     *pointer で示したネイティブコードのインスタンスを登録します。ネイティブコードのクラスの識別には classid を用います。
    + + +
    TJS_NIS_GETINSTANCE
    +
     classid で指定した クラスID を持つネイティブコードのインスタンスを *pointer に書き込みます。
    + + +
    tjs_int32 classid
    +
     ネイティブコードのクラス ID を指定します。
    + ネイティブコードのクラス ID の管理には TJSRegisterNativeClass +TJSFindNativeClassID +TJSFindNativeClassName を使用することができますが、通常は これらの処理はネイティブコードを記述するための +支援コード群 ( tjsNative.cpp/tjsNative.h に記述 ) で自動的に処理されます。
    + + +
    iTJSNativeInstance **pointer
    +
     ネイティブコードのインスタンスを渡したり、受け取ったりするために、iTJSNativeInstance *型の変数へのポインタを指定します。
    + + +

    ClassInstanceInfo +

    +tjs_error iTJSDispatch2::ClassInstanceInfo(
    +    tjs_uint32 flag,
    +    tjs_uint num,
    +    tTJSVariant *value
    +    )
    +
    + IsInstanceOf メソッドで使用する、クラスのインスタンス情報を操作するメソッドです。
    + オブジェクトがどのクラスのインスタンスかを識別するためにクラス名を追加したり、オブジェクトがどのクラスのインスタンスかを調べるためにクラスを列挙することができます。
    +
    + 引数は以下の通りです。
    +
    +
    +
    tjs_uint32 flag
    +
     呼び出しフラグです。以下のフラグのいずれかを指定します。
    +
    +
    +
    TJS_CII_ADD
    +
     インスタンス情報を追加します。
    + value にはクラス名 (文字列) の格納された tTJSVariant 型の変数へのポインタを渡します。
    + num 引数は無視されます。
    + +
    TJS_CII_GET
    +
     インスタンス情報を取得します。
    + num 引数には 0 から始まる 整数を指定します。設定されているインスタンス情報の数を超えて num を指定すると TJS_E_FAIL が戻ります。
    + value にはクラス名を受け取るための、tTJSVariant 型の変数へのポインタを渡します。
    + + +
    tjs_uint num
    +
     flag に TJS_CII_GET を指定した場合の序数を指定します。
    + + +
    tTJSVariant *value
    +
     flag に TJS_CII_ADD を指定した場合は、クラス名が格納された tTJSVariant 型の変数へのポインタを渡します。
    + flag に TJS_CII_GET を指定した場合は、クラス名を受け取るための tTJSVariant 型の変数へのポインタを渡します。
    +
    + + +

    呼び出しフラグ +

    + + 呼び出しフラグです。
    + 以下の値のビットORによる組み合わせを指定することができます。
    +
    +
    +
    TJS_MEMBERENSURE
    +
     指定されたメンバ名が見つからなかった場合、強制的にメンバを作成します。PropSet に対する呼び出しフラグとして有効です。 + )
    + +
    TJS_MEMBERMUSTEXIST
    +
     指定されたメンバ名が見つからなかった場合、エラーにします。これは、Dictionary や Array のような、メンバが見つからない場合にデフォルトで void を返すようなオブジェクトに対して有効です (そのようなオブジェクトでない場合は、メンバが見つからない場合はデフォルトでエラーになります)。
    + + + + +
    TJS_IGNOREPROP
    +
     プロパティ操作をバイパスします。
    + TJS2 のオブジェクトは通常、指定されたメンバがオブジェクトで、かつ、そのオブジェクトに対して PropSet や PropGet が成功する場合 (プロパティオブジェクトの場合)、そのメンバに対する PropSet や PropGet の結果を、そのメンバの代わりと見なして使います。
    + このフラグを指定すると、このような処理をバイパスするため、指定されたメンバがプロパティオブジェクトであっても、プロパティオブジェクトそのものに対する操作になります。
    + +
    TJS_HIDDENMEMBER
    +
     このフラグを指定してメンバを作成すると、メンバは不可視になります。オブジェクトによってはサポートされていないこともあり得ます。
    +
    TJS_STATICMEMBER
    +
     このフラグを指定してメンバを作成すると、メンバはスタティック (実行コンテキストに依存しない) となります。オブジェクトによってはサポートされていないこともあり得ます。
    +
    + +

    tjs_error +

    + tjs_error は、iTJSDispatch2 の各メソッド ( AddRef と Release を除く ) が返すエラー型です。
    + 以下の値を採ります。また、ここに載ってない値でも、値が負の場合はエラーと見なす必要があります。これらを判断するために TJS_SUCCEEDED および TJS_FAILED マクロを使用することができます。
    +
    +
    +
    TJS_E_MEMBERNOTFOUND
    +
     指定されたメンバが見つかりません。
    + + +
    TJS_E_NOTIMPL
    +
     呼び出そうとした機能は未実装です。
    + + +
    TJS_E_INVALIDPARAM
    +
     不正な引数です。
    + + +
    TJS_E_BADPARAMCOUNT
    +
     引数の数が不正です。
    + + +
    TJS_E_INVALIDTYPE
    +
     関数ではないかプロパティの種類が違います。
    + 関数でない物を呼び出そうとした場合や、プロパティでない物をプロパティとして扱おうとしたときにこの値が帰ります。
    + + +
    TJS_E_INVALIDOBJECT
    +
     オブジェクトはすでに無効化されています。
    + + +
    TJS_E_ACCESSDENYED
    +
     読み込みあるいは書き込み専用プロパティに対して行えない操作をしようとしました。
    + + +
    TJS_E_NATIVECLASSCRASH
    +
     実行コンテキストが違います。
    + ネイティブコードで実装されたメソッドを、そのネイティブコードで扱えないコンテキスト (違うクラスのオブジェクト上など) で実行しようとしたときにこの値が帰ります。
    + + +
    TJS_S_TRUE
    +
     エラーではありませんが、結果が「真」であることを示します。
    + + +
    TJS_S_FALSE
    +
     エラーではありませんが、結果が「偽」であることを示します。
    + + +
    TJS_S_OK
    +
     エラーが発生しなかった場合に、通常、この値が帰ります。
    + + +
    TJS_E_FAIL
    +
     未定義のエラーが発生した場合、この値が帰ります。
    + + +
    TJS_FAILED(x)
    +
     x がエラーの値の場合に真になるマクロです。
    + +
    TJS_SUCCEEDED(x)
    +
     x がエラーでない値の場合に真になるマクロです。

    + +
    + エラー定義、および関連するマクロは tjsErrorDef.h に記述されています。
    + また、エラーではなく (C++における) 実行時例外が投げられる場合があります。プログラミングに関しては、実行時例外を十分に考慮する必要があります。
    +
    + + + + + diff --git a/docs/tjs2doc/contents/keywordgrep.js b/docs/tjs2doc/contents/keywordgrep.js new file mode 100644 index 0000000..73328d4 --- /dev/null +++ b/docs/tjs2doc/contents/keywordgrep.js @@ -0,0 +1,57 @@ +function Searcher() { + var spans = document.getElementsByTagName('span'); + var styles = []; + var text1 = []; + var text2 = []; + var spans_length = spans.length; + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + styles.push(span.parentNode.parentNode.parentNode.parentNode.style); + text1.push(span.parentNode.childNodes[0].nodeValue); + text2.push(span.childNodes[0].nodeValue); + } + + var lastValue = ''; + + this.grep = function (str) { + if (str == lastValue) { + return; + } else { + lastValue = str; + } + + var regs = []; + var words = str.split(' '); + for (var i = 0; i < words.length; ++i) { + if (words[i] != '') { + regs.push(new RegExp(words[i].replace(/(\W)/g, "\\$1"), 'i')); + } + } + + for (var i = 0; i < spans_length; ++i) { + var span = spans[i]; + var matched = true; + for (var j = 0; j < regs.length; ++j) { + if (!regs[j].test(text1[i]) && !regs[j].test(text2[i])) { + matched = false; + break; + } + } + + styles[i].display = matched ? '' : 'none'; + } + } +} + +var searcher; +function init() { + searcher = new Searcher(); + setInterval(onTimer, 400); +} + +function onTimer() { + searcher.grep(document.getElementById('grepword').value); +} + +window.onload = init; diff --git a/docs/tjs2doc/contents/keywords.css b/docs/tjs2doc/contents/keywords.css new file mode 100644 index 0000000..2b891fe --- /dev/null +++ b/docs/tjs2doc/contents/keywords.css @@ -0,0 +1,3 @@ +@charset "shift_jis"; + +@import url("keywords2.css"); diff --git a/docs/tjs2doc/contents/keywords.html b/docs/tjs2doc/contents/keywords.html new file mode 100644 index 0000000..665a3b1 --- /dev/null +++ b/docs/tjs2doc/contents/keywords.html @@ -0,0 +1,635 @@ + + + + + + キーワード一覧 + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/docs/tjs2doc/contents/keywords2.css b/docs/tjs2doc/contents/keywords2.css new file mode 100644 index 0000000..cbeb77e --- /dev/null +++ b/docs/tjs2doc/contents/keywords2.css @@ -0,0 +1,7 @@ +@charset "shift_jis"; + +@import url("browser.css"); + +body{ + margin-left: 0em; +} diff --git a/docs/tjs2doc/contents/keywords_p.html b/docs/tjs2doc/contents/keywords_p.html new file mode 100644 index 0000000..31d7ffb --- /dev/null +++ b/docs/tjs2doc/contents/keywords_p.html @@ -0,0 +1,635 @@ + + + + + + 場所順キーワード一覧 + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/docs/tjs2doc/contents/math.html b/docs/tjs2doc/contents/math.html new file mode 100644 index 0000000..81acfaa --- /dev/null +++ b/docs/tjs2doc/contents/math.html @@ -0,0 +1,54 @@ + + + + + + + Math クラス + + + + + + + + +

    Math クラス +

    + JavaScript の Math とほぼ互換です。
    +
    +実装されているメソッド :
    +abs (絶対値の取得)
    +acos (アーク コサイン)
    +asin (アーク サイン)
    +atan (アーク タンジェント)
    +atan2 (2変数のアーク タンジェント)
    +ceil (切り上げ)
    +floor (切り捨て)
    +exp (eのn乗)
    +log (自然対数)
    +max (二つの値の大きい方)
    +min (二つの値の小さい方)
    +random (0以上1未満の乱数)
    +pow (乗数)
    +round(整数へのまるめ)
    +sin (サイン)
    +cos (コサイン)
    +tan (タンジェント)
    +sqrt (平方根)
    +
    +実装されているプロパティ :
    +E (e)
    +LN10 (log(10))
    +LN2 (log(2))
    +LOG10E (10を底としたeの対数)
    +LOG2E (2を底としたeの対数)
    +PI (π)
    +SQRT1_2 (sqrt(1/2))
    +SQRT2 (sqrt(2))
    +
    + + + + diff --git a/docs/tjs2doc/contents/octet.html b/docs/tjs2doc/contents/octet.html new file mode 100644 index 0000000..63bde72 --- /dev/null +++ b/docs/tjs2doc/contents/octet.html @@ -0,0 +1,61 @@ + + + + + + + オクテット列に対する操作 + + + + + + + + +

    オクテット列に対する操作 +

    + TJS2 では、オクテット列は擬似的に Octet クラスのオブジェクトということになっていますが、Octet クラスは存在していませんし、実際に Octet クラスのオブジェクトというわけではありません ( ただし オクテット列に対して typeof 演算子を使うと "Octet" を返します )。
    + しかし オクテット列をオブジェクトと見立てて、いくつかのメソッドやプロパティが使用可能になっています。
    +
    + オクテット列に関する実装は未完成です。
    +
    +

    length +

    + length プロパティは、オクテット列の長さを返します。メソッドではなくてプロパティですので注意してください。ただし、このプロパティへの値の代入はできません。
    +
    + +
    +例:
        var oct = <% 11 22 33 %>;
    +    var n = oct.length;  // n には 3 が代入される
    +    var n = <% 11 22 33 %>.length; // これも同じく 3 が代入される
    +
    +
    + +
    +

    '数値' プロパティ +

    + 数値をプロパティとして間接指定すると、その位置にあるオクテットにアクセスできます。
    + 結果はオクテットの数値で表されます。
    + たとえば、oct がオクテット列を表す式だとすると、oct[0] は先頭のオクテットの値を表す数値になります。
    + 数値がオクテット列よりも長い位置や、負の場合は例外が発生します。
    +
    + 代入式を生成することはできません。
    + +
    +例:
        var oct = <% 11 22 33 44 55 %>;
    +    var c = oct[0];  // 0x11 が c に代入される
    +    var c = oct[2];  // 0x22 が c に代入される
    +    oct[3] = 'A'; // 代入式は生成できないのでエラーになる
    +    var c = oct[100]; // 値が範囲外なのでエラーになる
    +
    +
    + +
    + + + + + + diff --git a/docs/tjs2doc/contents/postcontent.js b/docs/tjs2doc/contents/postcontent.js new file mode 100644 index 0000000..9d57d86 --- /dev/null +++ b/docs/tjs2doc/contents/postcontent.js @@ -0,0 +1 @@ +// currently this does nothing diff --git a/docs/tjs2doc/contents/pp.html b/docs/tjs2doc/contents/pp.html new file mode 100644 index 0000000..0958f17 --- /dev/null +++ b/docs/tjs2doc/contents/pp.html @@ -0,0 +1,79 @@ + + + + + + + プリプロセッサ + + + + + + + + +

    プリプロセッサ +

    + TJS2 は、条件コンパイル式 ( C の #if や #endif に対応するもの ) の処理を行うことができます。これは、スクリプトが実際に解釈される前に処理され、条件によってスクリプトの部分を解釈させないようにしたり、解釈させるようにしたりする事ができます。
    + 条件コンパイル式のスタイルは C のプリプロセッサ指令とは違い、フリースタイルとなり、どこにでも書くことができます。C の指令のように、一行に1指令のみを書かなければならないと言うことはありません。
    +
    +

    @set 指令 +

    + @set 指令は、条件コンパイル式を評価し、結果を捨てます。構文は以下の通りです。 +
    +    @set(式)
    +
    +
    + + 「式」には条件コンパイル式を書きます。ここには、以下の演算子を使うことができます。
    + +
    +    ,  =  !=  ==  ||  &&  |  ^  &  <  >  <=  >=  +  -  %  *  /  !  +  -  ( )
    +
    +
    + + これらの演算子の意味については 式と演算子 をご覧ください。ただし、扱えるデータ型は整数のみです。
    + また、任意の変数、即値を使用することができます。変数名の命名規則については、 トークン の変数の命名規則や即値と同じ規則が適用されます。
    + ただし、プリプロセッサ中で使用する変数と、TJS2 スクリプト中で使用する変数は干渉しません ( 同じ名前空間を共有しません )。
    +
    +

    @if 指令, @endif 指令 +

    + @if 指令は、条件コンパイル式を評価し、結果が 0 であれば、次に @endif が来るまで、その間を解釈しないようにします。結果が 0 以外の場合は解釈されます。
    + 構文は以下の通りです。
    + +
    +    @if(式)              ...         @endif
    +
    +
    + +    「式」には条件コンパイル式を指定します。 @if 〜 @endif は入れ子にできます。
    +
    + +
    +例:
        @if(flag==0)  // まだ何も代入されていない変数は 0 であると見なされる
    +        @set(flag=1)
    +        ****
    +    @endif
    +    // ↑  **** の部分に書かれたスクリプトのコンパイルを一度きりのものとする
    +
    +    @if(version>=0x02040009)
    +        @if(flag)
    +            ****
    +        @endif
    +    @endif 
    +    // ↑ version が 0x02040009 (2.4.9) 以上で flag が 0 以外の時のみ **** の部分をコンパイルする
    +
    +
    + +
    +

    定義済み変数 +

    + version 変数が、現在の TJS2 のバージョンを表しています。
    +
    + 数値として、16進数で 0x0XYYZZZZ の形式であり、 X の部分はメジャーバージョン、YY の部分はマイナーバージョン、ZZZZ はリリース番号を表します。たとえば 0x02040009 であれば、バージョンは 2.4.9 です。
    + + + + diff --git a/docs/tjs2doc/contents/property.html b/docs/tjs2doc/contents/property.html new file mode 100644 index 0000000..54564bf --- /dev/null +++ b/docs/tjs2doc/contents/property.html @@ -0,0 +1,127 @@ + + + + + + + プロパティ + + + + + + + + +

    プロパティ +

    + プロパティとは、変数と同じように扱うことができるが、実際はメソッド呼び出しと同様に、セッター ( setter ) とゲッター ( getter ) の呼び出しを伴うものです。セッターやゲッターを、プロパティハンドラと呼ぶ場合があります。
    +
    + 構文は以下の通りです。
    + +
    +property 識別子
    +{
    +    setter(引数)
    +    {
    +        // ここにセッターの内容
    +    }
    +
    +    getter()
    +    {
    +        // ここにゲッターの内容
    +        return 式; // ゲッターとして返す値
    +    }
    +}
    +
    +
    + + setter と getter は、逆の順番で書かれていてもかまいません。
    + この property を記述したクラスや、グローバルのメンバとしてこのプロパティは登録されますが、この識別子からの値の取得はゲッター、値の設定はセッターを通して行われます。これらのセッターとゲッターは、メソッド同様に様々な内容を書くことができます。セッターは setter に続く ( ) 内に、値を受け取る変数を引数として書きます。ゲッターは return ステートメントにて値を返します。
    +
    + getterのあとの () は省略できます。
    +
    + 一つの識別子に対し、セッターとゲッターの両方を書けば、読み書きの両方が可能なプロパティになります。一方しか書かない場合、たとえばゲッターしか書かない場合は、読み出し専用のプロパティとなり、書き込みはエラーになります。
    + +
    +例:
        var value;
    +
    +    property property1 // プロパティ 'property1' を宣言
    +    {
    +        setter(v)
    +        {
    +            // セッターはただ一つだけの引数をとる
    +            value=v; // 引数 v を処理する
    +
    +            inform("value set.");
    +        }
    +
    +        getter
    +        {
    +            // propset と同じ識別子 'property1' のゲッターを宣言
    +            // ゲッターに引数はない
    +            inform("value get.");
    +            return value; // 戻り値として返す
    +        }
    +    }
    +
    +    property1=5; // property1 への代入は、セッターが呼ばれる
    +    property1++; // このような式では、ゲッターが呼ばれ、
    +                 // 次にセッターが呼ばれて値が設定される
    +}
    +
    +
    + + プロパティも変数や関数やクラス同様、オーバーライドできます。
    +
    +

    プロパティオブジェクト +

    + プロパティ自身も一つのオブジェクトです。しかし、なんらかのオブジェクトに登録されている場合は、普通のアクセス方法ではプロパティハンドラが呼ばれるだけであり、プロパティオブジェクトそのものにはアクセスできません。
    + プロパティオブジェクトそのものを取り出すには & 演算子を使います。取り出したプロパティオブジェクトはローカル変数に入れることが出来ます。
    + また、& 演算子を使ってプロパティオブジェクトを登録することもできます。
    + +
    +例:
        property prop // プロパティ prop を宣言
    +    {
    +        (略)
    +    }
    +
    +{
    +    var p = &prop; // プロパティオブジェクトを得てローカル変数に入れる
    +
    +    &object.property1 = p; // p を object の property1 として登録する
    +}
    +
    +
    + +
    + & 演算子を使うと、ゲッターやセッターは呼ばれずにプロパティオブジェクトそのものにアクセスする事ができます。& 演算子を使わなければ通常のプロパティへのアクセスとなります。
    +
    + ローカル変数として取り出したプロパティオブジェクトは、オブジェクトに登録しなくとも、* 演算子を用いてプロパティハンドラを呼び出すことができます。
    +
    + +
    +例:
        property prop // プロパティ prop を宣言
    +    {
    +        (略)
    +    }
    +
    +{
    +    var p = &prop; // プロパティオブジェクトを得てローカル変数に入れる
    +
    +    *p = 30; // setter を呼び出し 30 を設定する
    +    func(*p); // getter を呼び出し値を取得し、func に渡す
    +}
    +
    +
    + +
    Note
    +上記のように var 変数にプロパティオブジェクトをとる場合は、変数はローカル変数にしてください。これは、プロパティオブジェクトはいったんオブジェクトに登録されると、プロパティオブジェクトとしてではなくプロパティとしてゲッターやセッターを介した動作をするようになるためです。つまり、ローカル変数ではなく、グローバル変数(=globalのメンバ)やオブジェクトのメンバにプロパティオブジェクトを登録してしまうと、普通のプロパティと同じように振る舞うようになります。もちろんこのようにしてグローバル変数やオブジェクトのメンバに登録したプロパティオブジェクトを取り出すために & 演算子を使うのはかまいません。

    +
    +プロパティオブジェクトに対して instanceof 演算子を "Property" を伴って使用した場合は真になります(上記の例で言うと、&prop instanceof "Property" は真)。
    +
    + + + + diff --git a/docs/tjs2doc/contents/randomgenerator.html b/docs/tjs2doc/contents/randomgenerator.html new file mode 100644 index 0000000..b61f92b --- /dev/null +++ b/docs/tjs2doc/contents/randomgenerator.html @@ -0,0 +1,101 @@ + + + + + + + Math.RandomGenerator クラス + + + + + + + + +

    Math.RandomGenerator クラス +

    + Math.RandomGenerator は、Mersenne Twister 法 による乱数を発生するためのクラスです。
    +
    + コンストラクタの構文は以下の通りです。 +
    +new Math.RandomGenerator([<乱数種>]);
    +
    +
    + +
    + コンストラクタに数値を指定すると、その数値で乱数発生器が初期化されます。
    + コンストラクタに serialize メソッドで状態を保存した辞書配列オブジェクトを指定すると、その状態で乱数発生器を作成できます。
    + コンストラクタを省略すると、現在時刻を元にした乱数値で乱数発生器が初期化されます (吉里吉里2の場合は現在時刻ではなく、環境ノイズを元にした乱数発生器からの乱数で初期化されます)。
    +
    +

    randomize +

    + randomize メソッドは、乱数発生器を初期化します。引数はコンストラクタに指定する物と同じです。
    +
    +

    random +

    + random メソッドは、0以上1.0未満の実数の乱数値を返します。
    +
    +

    random32 +

    + random32 メソッドは、0以上4,294,967,295以下 (0xffffffff 以下) の整数の乱数値を返します。
    +
    +

    random63 +

    + random63 メソッドは、0以上9,223,372,036,854,775,807以下(0x7fffffffffffffff 以下) の整数の乱数値を返します。
    +
    + +

    random64 +

    + random64 メソッドは、-9,223,372,036,854,775,808以上9,223,372,036,854,775,807以下の整数の乱数値を返します。
    +
    +

    serialize +

    + serialize メソッドは、現在の状態を記録した辞書配列オブジェクトを返します。この辞書配列オブジェクトは、コンストラクタや randomize メソッドに渡すことで、再び現在の状態を再現できる物です。
    +
    +

    Copyright notice +

    + Mersenne Twister法の実装には
    +
    + A C-program for MT19937, with initialization improved 2002/2/10. + Coded by Takuji Nishimura and Makoto Matsumoto.
    +
    + を改変した物を用いています。有用なプログラムソースを公開なさっている両氏に感謝します。
    +
    + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
    + All rights reserved.
    +
    + Redistribution and use in source and binary forms, with or without
    + modification, are permitted provided that the following conditions
    + are met:
    +
    +     1. Redistributions of source code must retain the above copyright
    +        notice, this list of conditions and the following disclaimer.
    +
    +     2. Redistributions in binary form must reproduce the above copyright
    +        notice, this list of conditions and the following disclaimer in the
    +        documentation and/or other materials provided with the distribution.
    +
    +     3. The names of its contributors may not be used to endorse or promote
    +        products derived from this software without specific prior written
    +        permission.
    +
    + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    + A PARTICULAR PURPOSE ARE DISCLAIMED.     IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    +
    + + + + + diff --git a/docs/tjs2doc/contents/regexp.html b/docs/tjs2doc/contents/regexp.html new file mode 100644 index 0000000..f1cea3b --- /dev/null +++ b/docs/tjs2doc/contents/regexp.html @@ -0,0 +1,175 @@ + + + + + + + RegExp クラス + + + + + + + + +

    RegExp クラス +

    + RegExp クラスは正規表現パターンを扱うクラスです。
    + 正規表現パターンには perl 互換のパターンを指定することができます。
    + JavaScript の RegExp クラスににていますが、互換性は低いです。
    +
    +コンストラクタの構文は以下の通りです。 +
    +new RegExp(<パターン文字列>, <フラグ文字列=''>);
    +
    +
    + + パターン文字列は正規表現パターンです。パターン中に指定する \ は、文字列即値中で書くときは \\ と書くことに注意してください。
    + フラグ文字列は g i l の文字の組み合わせです。
    + g はグローバルサーチフラグです。このフラグをつけると、match、exec、replace の各メソッドで、パターンにマッチした文字列の部分すべてに対して処理が行われます。
    + i フラグは英字の大文字/小文字の区別を行いません。
    + l フラグはローカライズされたコレーションを行うようにするフラグです。
    +
    + +
    +例:
        var re = new RegExp("[a-z]+[0-9]*", "gi");
    +    var re = new RegExp("\\.\\.\\."); // /\.\.\./ ( ... にマッチさせたい )
    +
    +
    + +
    + +

    正規表現パターン +

    + / と / で囲まれた部分に正規表現パターンを指定することができます。
    + トークン を参照してください。
    +
    +

    compile +

    + compile メソッドは、正規表現オブジェクトに新しい正規表現パターンを設定します。
    + 引数は RegExp クラスのコンストラクタに指定するものと同一です。
    +
    +

    test +

    + test メソッドは、引数に指定した文字列がパターンにマッチするかどうかを返します。
    + +
    +構文 : test(<文字列>)
    +
    +
    + + パターンにマッチすれば真、マッチしなければ偽が返ります。
    + このメソッドはこのオブジェクトの各プロパティの値を更新します。
    +
    +

    exec +

    + exec メソッドは、引数に指定した文字列に正規表現パターンマッチングを行い、マッチした結果を含む配列を返します。
    + +
    +構文 : exec(<文字列>)
    +
    +
    + + パターンにマッチしない場合、配列の要素数は 0 になります。
    + マッチした場合、要素 0 (最初の要素) はマッチした部分全体、それ以降の要素は各マッチ部分 ( 正規表現パターン中の ( ) で指定した部分 ) が入っています。
    + このメソッドはこのオブジェクトの各プロパティの値を更新します。
    +
    +

    match +

    + match メソッドは、このオブジェクトのプロパティの値を更新しない以外は、exec メソッドと同一です。
    + +
    +構文 : match(<文字列>)
    +
    +
    + +
    + +

    replace +

    + replace メソッドは、文字列の置き換えを行い、置き換えが行われた後の文字列を返します。
    + +
    +構文 : replace(<対象文字列>, <置き換え文字列>)
    +
    +
    + + 対象文字列に対してマッチングを行い、マッチした部分を置き換え文字列で置き換え、置き換えが行われた後の文字列を返します。
    + 置き換え文字列として、文字列ではなく関数を渡すと、置き換え動作のためにその関数が呼ばれるようになります。関数は引数をひとつとり、対象文字列の中のマッチした部分をあらわす配列オブジェクトが渡されます ( この配列については exec メソッドを参照してください )。対象文字列中のマッチした部分は、関数の戻した文字列に置き換わります。
    + このメソッドは start プロパティを無視します。
    +
    +

    split +

    + split メソッドは、文字列を分割します。
    + +
    +構文 : split(<対象文字列>, <(予約)>, <空の要素を無視するか=false>)
    +
    +
    + + 文字列を分割した結果が格納された配列オブジェクトを返します。
    + Array クラス の split メソッドも参照してください。
    +
    +

    matches +

    + matches プロパティは、マッチした各部分を含む配列を表す読み出し専用のプロパティです。
    + パターンにマッチしない場合、配列の要素数は 0 になります。
    + マッチした場合、要素 0 (最初の要素) はマッチした部分全体、それ以降の要素は各マッチ部分 ( 正規表現パターン中の ( ) で指定した部分 ) が入っています。
    +
    +

    start +

    + 文字列の検索開始位置を表すプロパティです。値を設定することもできます。
    +
    +

    index +

    + マッチした部分の先頭文字の位置を表す、読み出し専用のプロパティです。0 が先頭を表すので、それがマッチング対象文字列の先頭の文字ならば 0 になります。
    +
    +

    lastIndex +

    + マッチした部分の最終文字の次の文字の位置を表す、読み出し専用のプロパティです。0 が先頭を表します。
    +
    +

    input +

    + マッチング対象の文字列をあらわす、読み出し専用のプロパティです。
    +
    +

    leftContext +

    + マッチング対象文字列のうち、マッチした部分よりも左側の文字列をあらわす、読み出し専用のプロパティです。
    +
    +

    rightContext +

    + マッチング対象文字列のうち、マッチした部分よりも右側の文字列をあらわす、読み出し専用のプロパティです。
    +
    +

    lastMatch +

    + マッチング対象文字列を表します。matches[0] と同じです。
    +

    lastParen +

    + マッチした各部分のうち、最後の部分を返します。matches[matches.count-1] と同じです。
    +

    RegExp.last +

    + 最後に test あるいは exec メソッドが実行された RegExp クラスのインスタンスです。 +
    +例 : if(/pat(\d+)/.test(target)) { return RegExp.last.matches[1]; }
    +
    +
    + +
    + + +

    Copyright notice +

    + 正規表現機能の実装には John Maddock 氏の Regex++ を用いています。有用なライブラリを公開なさっている氏に感謝します。
    +
    +Copyright (c) 1998-2001
    +
    +Dr John Maddock
    +
    +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Dr John Maddock makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
    +
    + + + + diff --git a/docs/tjs2doc/contents/simple.html b/docs/tjs2doc/contents/simple.html new file mode 100644 index 0000000..97ece09 --- /dev/null +++ b/docs/tjs2doc/contents/simple.html @@ -0,0 +1,537 @@ + + + + + + + 基本的な使い方 + + + + + + + + +

    コンパイル +

    + Borland C++ 5.5 以降 ( C++ Builder 5 以降 ) でコンパイルをすることができます。
    +
    + コンパイルには boost.org の regex++ が必要になります。
    +
    + regex++ をインストールした後、各 cpp ファイルをコンパイルしてください。
    +
    + C++ Builder の場合は、tjs2 の各 cpp ファイルをすべてプロジェクトに追加するだけで OK です。
    +
    + gcc 3 以降でもコンパイルできます ( 2.95 でもコンパイルできますが wstring 関連の修正が必要 )。
    +
    +

    簡単な例 +

    +
    + +
    +例:
      1|#include <stdio.h>
    +  2|#include "tjs.h"
    +  3|#include "tjsError.h"
    +  4|
    +  5|int main(int argc, char* argv[])
    +  6|{
    +  7|    setlocale(LC_ALL, ""); // ロケールを設定
    +  8|
    +  9|    tTJS *tjsengine = new tTJS(); // TJS2 スクリプトエンジンを作成
    + 10|
    + 11|    try
    + 12|    {
    + 13|        tTJSVariant result; // 結果を受け取るための変数
    + 14|
    + 15|        tjsengine->ExecScript(
    + 16|            TJS_W(
    + 17|                "function test(x, y) { return x*y; } \n"
    + 18|                "return test(4, 5);\n"),
    + 19|                &result, NULL,
    + 20|                TJS_W("test code"));    // テストスクリプトを実行
    + 21|
    + 22|        printf("結果 : %d\n", (int)result); // 結果を表示
    + 23|    }
    + 24|    catch(eTJSError &e)
    + 25|    {
    + 26|        printf("エラーが発生しました : %ls\n", e.GetMessage().c_str());
    + 27|    }
    + 28|    catch(...)
    + 29|    {
    + 30|        printf("エラーが発生しました\n");
    + 31|    }
    + 32|
    + 33|    tjsengine->Shutdown(); // TJS2 スクリプトエンジンをシャットダウン
    + 34|    tjsengine->Release(); // TJS2 スクリプトエンジンを解放
    + 35|
    + 36|    return 0;
    + 37|}
    +
    +
    + +
    +
    +
    2〜3行目
    +
    TJS2 を使用するのに必要なヘッダファイルを読み込んでいます。tjsError.h は TJS の C++ 例外に関する宣言が含まれています。
    + + +
    7行目
    +
    setlocale でロケールを指定しています。ロケールを指定しないと "C" ロケールになるため、日本語文字のナロー文字とワイド文字間の変換がうまくいきません。
    + + +
    9行目
    +
    TJS2 スクリプトエンジンを new 演算子で作成しています。
    + + +
    11行目
    +
    try ブロックに入っています。TJS2 のエラーは例外により通知されるため、例外処理には慎重になる必要があります。
    + + +
    13行目
    +
     スクリプトを実行した結果を受け取るための tTJSVariant 型の変数を宣言しています。
    + + +
    15〜20行目
    +
     tTJS::ExecScript を使ってスクリプトを実行しています。
    + 第1引数には実行するスクリプトを指定します。tjs_char * 型で渡すために、文字列リテラルを TJS_W マクロを使ってワイド文字列に変換しています。スクリプトでは、関数 test を定義し、その関数を呼んだ結果を返しています。
    + この例では return 文により実行の結果を返し、それを result 変数で受け取っていますが、結果を受け取る必要がない場合は return 文も tTJS::ExecScript の2番目の引数も必要ありません ( その場合は2番目の引数は NULL を指定します )。
    + tTJS::ExecScript の3番目の引数は実行コンテキストですが、ここでは NULL を指定します。NULL を指定すると スクリプトは global コンテキスト上で実行されます。
    + tTJS::ExecScript の4番目の引数は、このスクリプトの名前を指定します。NULLの場合は匿名として扱われます。人間が可読な名前である必要があります。
    + + +
    22行目
    +
     結果を表示しています。ここでは tTJSVariant を int 型にキャストしています。
    + + +
    24行目
    +
     eTJSError 型の例外を受け取っています。
    + + +
    26行目
    +
     eTJSError::GetMessage を使って、例外の理由を表示しています。メッセージを const tjs_char * に変換するために tTJSString::c_str を使っています。tjs_char は ワイド文字のため、printf の変換指定子には %ls を指定しています。
    + + +
    28行目
    +
     その他の例外を受け取っています。
    + + +
    33〜34行目
    +
     TJS2 スクリプトエンジンを解放しています。解放に先立ち、tTJS::Shutdown を使って TJS2 スクリプトエンジンをシャットダウンしています。
    + +

    TJS2側の関数の呼び出し +

    + TJS2側で宣言した関数をC++から呼び出す方法です。
    + 前述の try ブロックの中を以下のように書いてみます。
    +
    + +
    +例:
      1|        tTJSVariant result; // 結果を受け取るための変数
    +  2|
    +  3|        tjsengine->ExecScript(
    +  4|            TJS_W("function test(x, y) { return x*y; }"), NULL, NULL, TJS_W("test"));
    +  5|
    +  6|        tjsengine->EvalExpression(TJS_W("test(4, 5)"), &result, NULL, NULL);
    +  7|            // tTJS::EvalExpression を使って式を実行
    +  8|
    +  9|        printf("結果 : %d\n", (int)result); // 結果を表示
    + 10|
    + 11|        iTJSDispatch2 * global = tjsengine->GetGlobalNoAddRef();
    + 12|            // グローバルオブジェクトを取得
    + 13|
    + 14|        tTJSVariant param[] = { 4, 5 }; // パラメータとして渡す変数
    + 15|        tTJSVariant *p_param[] = { param + 0, param + 1 }; // 変数へのポインタの配列
    + 16|
    + 17|        TJS_THROW_IF_ERROR(global->FuncCall(0, TJS_W("test"), NULL, &result, 2, p_param, NULL));
    + 18|            // test を関数として呼び出す
    + 19|
    + 20|        printf("結果 : %d\n", (int)result); // 結果を表示
    +
    +
    + +
    +
    +
    3〜4行目
    +
     関数 test を宣言しています。test は global に登録されます。
    + + +
    6行目
    +
     tTJS::EvalExpression を使って式を実行しています。それほど速度的にシビアでなくてもよいならば、このように 式を文字列として渡してその結果を受け取ると楽です。
    + ちなみに、単純な式 ( 関数宣言など、他の実行単位を含まないようなもの ) ならば、ある程度、コンパイル結果がキャッシュされ、2回目以降の式評価を高速に行うことができます。
    + + +
    11行目
    +
     グローバルオブジェクトを取得しています。tTJS::GetGlobal と tTJS::GetGlobalNoAddRef の違いは、前者が global オブジェクトの参照カウンタをインクリメントするのに対し、後者はインクリメントしないと言うことです。
    + 参照カウンタをインクリメントし、使い終わったらデクリメントすると言うことは、その間中、そのオブジェクトが消滅しないようにロックをかけると言うことです。この例のように、global オブジェクトが消滅する心配のない場合は参照カウンタを操作する必要はありませんので tTJS::GetGlobalNoAddRef を使うことができます。また、この場合は使い終わったときの Release は必要ありません。
    + + +
    14〜15行目
    +
     関数に渡すパラメータを準備しています。iTJSDispatch::FuncCall は、関数に渡すパラメータとして tTJSVariant 型のポインタの配列を必要とするため、このような準備が必要になります。
    + + +
    17行目
    +
     iTJSDispatch2::FuncCall を使って、関数 "test" を呼び出しています。
    + FuncCall の最後の引数は、関数 test に渡される this (実行コンテキスト) ですが、この例で宣言した test 内では this を使っていないので NULL を指定してかまいません。実行すべきコンテキストがある場合は、そのオブジェクトを指定する必要があります。
    + TJS_THROW_IF_ERROR は、tjs_error 型の結果がエラーだった場合、それに対応するエラーメッセージとともに例外を送出するマクロです。
    + +

    ネイティブ関数 +

    + ネイティブ実装 (C++などで実装された関数) を作成し、TJS2 側からそれにアクセスすることができます。
    + C++ でなくても、iTJSDispatch2 を実装できる言語ならば、どのような言語で書かれた関数でも呼び出すことができますが、C++ が一番楽でしょう。
    +
    + C++ で 関数を書く場合は、tTJSNativeFunction (tjsNative.h に記述) からクラスを導出するのが楽です (しかし、iTJSDispatch2 の FuncCall を実装するだけでも関数として動作はできます)。
    +
    + 与えられた2つの引数を乗算して返す、簡単な関数を実装してみます。
    + +
    +例:
      1|class TestFunc : public tTJSNativeFunction
    +  2|{
    +  3|public:
    +  4|    tjs_error Process(tTJSVariant *result, tjs_int numparams,
    +  5|        tTJSVariant **param, iTJSDispatch2 *objthis)
    +  6|    {
    +  7|        if(numparams < 2) return TJS_E_BADPARAMCOUNT; // 引数が足りない
    +  8|
    +  9|        if(!result) return TJS_S_OK; // 結果を格納しなくて良い場合はそのままもどる
    + 10|
    + 11|        *result = *param[0] * *param[1]; // 計算
    + 12|
    + 13|        return TJS_S_OK; // 正常に終わったことを示すため TJS_S_OK を返す
    + 14|    }
    + 15|};
    +
    +
    + +
    + tTJSNativeFunction を継承したクラスで実装すべきなのは、上記の通り Process メソッドだけです。
    + Process メソッドの引数は以下の通りです。
    +
    +
    +
    tTJSVariant *result
    +
     関数の結果を格納するための tTJSVariant 型の変数へのポインタが渡されます。呼び出し側が結果を必要としない場合は NULL が渡されますので注意してください。
    + + +
    tjs_int numparams
    +
     関数に渡された引数の数です。
    + + +
    tTJSVariant **param
    +
     関数に渡された引数が格納された tTJSVariant 型の変数へのポインタの配列です。
    + + +
    iTJSDispatch2 *objthis
    +
     関数が実行されるべきコンテキストです。コンテキストに依存しない実装をする場合は無視してかまいません。

    +
    +
    + ネイティブ関数は TJS2 からアクセス可能にするため、TJS2 内からアクセスできるオブジェクトに登録する必要があります。以下の例では、global に "test" という名前で登録しています。また、実際にその関数を呼び出しています。
    + +
    +例:
      1|        iTJSDispatch2 * global = tjsengine->GetGlobalNoAddRef();
    +  2|            // グローバルオブジェクトを取得
    +  3|
    +  4|        iTJSDispatch2 *func = new TestFunc(); // TestFunc のオブジェクトを作成
    +  5|        tTJSVariant func_var(func); // tTJSVariant 型 func_var にオブジェクトを設定
    +  6|        func->Release(); // func を Release
    +  7|
    +  8|        TJS_THROW_IF_ERROR(
    +  9|            global->PropSet(TJS_MEMBERENSURE, TJS_W("test"), NULL, &func_var, NULL));
    + 10|                // 登録
    + 11|
    + 12|        tTJSVariant result; // 結果を受け取るための変数
    + 13|        tjsengine->EvalExpression(TJS_W("test(4, 5)"), &result, NULL, NULL);
    + 14|            // tTJS::EvalExpression を使って式を実行
    + 15|
    + 16|        printf("結果 : %d\n", (int)result); // 結果を表示
    +
    +
    + +
    +
    +
    4〜6行目
    +
     ネイティブ関数を実装してあるクラス TestFunc のオブジェクトを作成し、それを tTJSVariant 型に変換しています。
    + 5行目で tTJSVariant 型に変換していますが、この時点で tTJSVariant 型が 関数オブジェクトの参照カウンタを自動的に管理するので、6行目で関数オブジェクトを Release しています。
    + + +
    8〜9行目
    +
     global オブジェクトに関数を "test" という名前で登録しています。global オブジェクトの iTJSDispatch2::PropSet を呼んでいますが、メンバを新規作成させるために TJS_MEMBERENSURE フラグを伴って呼び出しています。
    + + +
    12〜16行目
    +
     実際に関数を呼び出し、結果を表示しています。
    +

    ネイティブクラス +

    + TJS2 は C++ 等の言語で書かれたネイティブクラスを扱うための機構を持っています。
    + 各オブジェクト (iTJSDispatch2 インターフェース) にはネイティブインスタンスと呼ばれる、iTJSNativeInstance 型のオブジェクトを登録することができ、これを オブジェクトから取り出すことができます。
    + ネイティブインスタンスは一意なクラス ID で識別され、ネイティブクラスの作成時にはクラス ID を取得する必要があります。
    +
    + しかし、これらの操作を行う為のマクロ群が tjsNative.h に定義されているので、これらを利用するのが楽です。
    + 以下の例は、これらのマクロを使って簡単なクラスを実装するものです。
    +
    + まず、ネイティブインスタンスの実装です。ネイティブインスタンスを実装するには tTJSNativeInstance からクラスを導出します。tTJSNativeInstance は tjsNative.cpp / tjsNative.h に実装されているクラスで、iTJSNativeInstance の基本的な動作を実装しています。
    +
    + +
    +例:
      1|class NI_Test : public tTJSNativeInstance // ネイティブインスタンス
    +  2|{
    +  3|public:
    +  4|    NI_Test()
    +  5|    {
    +  6|        // コンストラクタ
    +  7|        Value = 0;
    +  8|    }
    +  9|
    + 10|    tjs_error TJS_INTF_METHOD
    + 11|        Construct(tjs_int numparams, tTJSVariant **param, iTJSDispatch2 *tjs_obj)
    + 12|    {
    + 13|        // TJS2 オブジェクトが作成されるときに呼ばれる
    + 14|
    + 15|        // 引数があればそれを初期値として Value に入れる
    + 16|        if(numparams >= 1 && param[0]->Type() != tvtVoid)
    + 17|            Value = (tjs_int)*param[0];
    + 18|
    + 19|        return S_OK;
    + 20|    }
    + 21|
    + 22|    void TJS_INTF_METHOD Invalidate()
    + 23|    {
    + 24|        // オブジェクトが無効化されるときに呼ばれる
    + 25|    }
    + 26|
    + 27|    void SetValue(tjs_int n) { Value = n; }
    + 28|    tjs_int GetValue() const { return Value; }
    + 29|
    + 30|    tjs_int GetSquare() const { return Value*Value; }
    + 31|    void Add(tjs_int n) { Value += n; }
    + 32|    void Print() const { printf("%d\n", Value); }
    + 33|
    + 34|private:
    + 35|    tjs_int Value; // 値
    + 36|};
    +
    +
    + +
    +
    +
    35行目
    +
     話が前後しますが、データメンバです。ネイティブインスタンスには、必要なデータメンバを自由に書くことができます。
    + +
    4〜8行目
    +
     NI_Test のコンストラクタです。C++ クラスとしての初期化は 後述の Construct よりもここで済ませておき、Construct での初期化は最小限の物にすることをおすすめします。
    + この例では、データメンバの Value に初期値として 0 を設定しています。
    + + +
    10〜20行目
    +
     new 演算子で TJS2 オブジェクトが作成されるときに呼ばれます。numparams と param 引数は new 演算子に渡された引数を表しています。
    + tjs_obj 引数は、作成される TJS オブジェクトです。
    + この例では、引数があれば (さらにそれが void で無ければ )、それを Value の初期値として設定しています。
    + + +
    22〜25行目
    +
     オブジェクトが無効化されるときに呼ばれるメソッドです。ここに終了処理を書くと良いでしょう。
    + この例では何もしません。
    + + +
    27〜32行目
    +
     データメンバを操作するための公開メソッド群です。後述するネイティブクラス内で、これらを利用するコードを書きます。

    + オブジェクトを作成するためにはクラスが必要ですので、クラスを記述します。クラスは tTJSNativeClass を導出する形で実装します。tTJSNativeClass は iTJSDispatch2 インターフェースを持っていて、ネイティブクラスとして振る舞うための基本的な動作が実装されています。
    + TJS からアクセス可能なメソッドやプロパティは、ネイティブクラスのコンストラクタ内に記述します。
    +
    + +
    +例:
      1|class NC_Test : public tTJSNativeClass // ネイティブクラス
    +  2|{
    +  3|public:
    +  4|    NC_Test(); // コンストラクタ; 下に記述
    +  5|
    +  6|    static tjs_uint32 ClassID; // クラスID
    +  7|
    +  8|private:
    +  9|    tTJSNativeInstance *CreateNativeInstance()
    + 10|    {
    + 11|        return new NI_Test(); // ネイティブインスタンスを作成して返す
    + 12|    }
    + 13|};
    + 14|tjs_uint32 NC_Test::ClassID = (tjs_uint32)-1; // クラスID
    +
    +
    + +
    +
    +
    4行目
    +
     このクラスのコンストラクタです。実装は後述します。
    + + +
    6行目
    +
     このクラスのクラス ID を保持するための変数です。14行目に実体があります。
    + + +
    9〜12行目
    +
     CreateNativeInstance メソッドは、ネイティブインスタンスを作成すべきタイミングで呼ばれるメソッドです。ここでは NI_Test クラスのオブジェクトを作成して返しています。

    +
    +
    + +
    +例:
      1|NC_Test::NC_Test() : tTJSNativeClass(TJS_W("Test"))
    +  2|{
    +  3|    TJS_BEGIN_NATIVE_MEMBERS(/*TJS class name*/Test)
    +  4|
    +  5|        TJS_DECL_EMPTY_FINALIZE_METHOD
    +  6|
    +  7|        TJS_BEGIN_NATIVE_CONSTRUCTOR_DECL(
    +  8|            /*var.name*/_this,
    +  9|            /*var.type*/NI_Test,
    + 10|            /*TJS class name*/Test)
    + 11|        {
    + 12|            // NI_Test::Construct にも内容を記述できるので
    + 13|            // ここでは何もしない
    + 14|            return TJS_S_OK;
    + 15|        }
    + 16|        TJS_END_NATIVE_CONSTRUCTOR_DECL(/*TJS class name*/Test)
    + 17|
    + 18|        TJS_BEGIN_NATIVE_METHOD_DECL(/*func. name*/print) // print メソッド
    + 19|        {
    + 20|            TJS_GET_NATIVE_INSTANCE(/*var. name*/_this,
    + 21|                /*var. type*/NI_Test);
    + 22|
    + 23|            _this->Print();
    + 24|
    + 25|            return TJS_S_OK;
    + 26|        }
    + 27|        TJS_END_NATIVE_METHOD_DECL(/*func. name*/print)
    + 28|
    + 29|        TJS_BEGIN_NATIVE_METHOD_DECL(/*func. name*/add) // add メソッド
    + 30|        {
    + 31|            TJS_GET_NATIVE_INSTANCE(/*var. name*/_this,
    + 32|                /*var. type*/NI_Test);
    + 33|
    + 34|            if(numparams < 1) return TJS_E_BADPARAMCOUNT;
    + 35|
    + 36|            _this->Add((tjs_int)*param[0]);
    + 37|
    + 38|            return TJS_S_OK;
    + 39|        }
    + 40|        TJS_END_NATIVE_METHOD_DECL(/*func. name*/add)
    + 41|
    + 42|        TJS_BEGIN_NATIVE_PROP_DECL(value) // value プロパティ
    + 43|        {
    + 44|            TJS_BEGIN_NATIVE_PROP_GETTER
    + 45|            {
    + 46|                TJS_GET_NATIVE_INSTANCE(/*var. name*/_this,
    + 47|                    /*var. type*/NI_Test);
    + 48|                *result = _this->GetValue();
    + 49|                return TJS_S_OK;
    + 50|            }
    + 51|            TJS_END_NATIVE_PROP_GETTER
    + 52|
    + 53|            TJS_BEGIN_NATIVE_PROP_SETTER
    + 54|            {
    + 55|                TJS_GET_NATIVE_INSTANCE(/*var. name*/_this,
    + 56|                    /*var. type*/NI_Test);
    + 57|                _this->SetValue((tjs_int)*param);
    + 58|                return TJS_S_OK;
    + 59|            }
    + 60|            TJS_END_NATIVE_PROP_SETTER
    + 61|        }
    + 62|        TJS_END_NATIVE_PROP_DECL(value)
    + 63|
    + 64|        TJS_BEGIN_NATIVE_PROP_DECL(square) // square 読み出し専用プロパティ
    + 65|        {
    + 66|            TJS_BEGIN_NATIVE_PROP_GETTER
    + 67|            {
    + 68|                TJS_GET_NATIVE_INSTANCE(/*var. name*/_this,
    + 69|                    /*var. type*/NI_Test);
    + 70|
    + 71|                *result = _this->GetSquare();
    + 72|
    + 73|                return TJS_S_OK;
    + 74|            }
    + 75|            TJS_END_NATIVE_PROP_GETTER
    + 76|
    + 77|            TJS_DENY_NATIVE_PROP_SETTER
    + 78|        }
    + 79|        TJS_END_NATIVE_PROP_DECL(square)
    + 80|
    + 81|    TJS_END_NATIVE_MEMBERS
    + 82|}
    +
    +
    + +
    +
    +
    1行目
    +
     NC_Test のコンストラクタです。親クラスである tTJSNativeClass のコンストラクタには TJS2 内で使用するクラス名を指定します。
    + + +
    3行目
    +
     TJS_BEGIN_NATIVE_MEMBERS マクロです。引数には TJS2 内で使用するクラス名を指定します。
    + このマクロと TJS_END_NATIVE_MEMBERS マクロで挟まれた場所に、クラスのメンバとなるべきメソッドやプロパティの記述をします。
    + + +
    4行目
    +
     空の finalize メソッドを宣言しています。finalize に相当する処理は tTJSNativeInstance::Invalidate をオーバーライドすることでも実装できますので、通常は空のメソッドで十分です。 +
    + + +
    7〜16行目
    +
     (TJSの) コンストラクタを宣言しています。TJS でクラスを書くとき、クラス内でクラスと同名のメソッドを宣言している部分に相当します。
    +
    + TJS_BEGIN_NATIVE_CONSTRUCTOR_DECL マクロの1番目の引数はネイティブインスタンスに割り当てる変数名で、2場面目の引数はその変数の型名です。この例でのこのブロック内では NI_Test * _this という変数が利用可能で、ネイティブインスタンスにアクセスすることができます。
    + マクロの3番目の引数は、TJS 内で使用するクラス名を指定します。TJS_END_NATIVE_CONSTRUCTOR_DECL マクロの引数も同様です。
    + ここも、コンストラクタに相当する処理は tTJSNativeInstance::Construct をオーバーライドする事で実装できるので、ここでは何もせずに S_OK を返します。 +
    + + +
    18〜27行目
    +
     print メソッドを宣言しています。メソッド名は TJS_BEGIN_NATIVE_METHOD_DECL と TJS_END_NATIVE_METHOD_DECL の両マクロに同じものを指定する必要があります。
    + このマクロ内で使用可能な変数に tjs_int numparams と tTJSVariant **param があって、それぞれ、渡された引数の数と引数を示しています。このメソッドではそれらは使用していません。
    + 20〜21行目は、オブジェクトからネイティブインスタンスを取り出すためのマクロです。この例では _this という NI_Test * 型の変数にネイティブインスタンスを取り出す、という意味になります。以降、_this という変数でネイティブインスタンスにアクセスできます。23行目で、そのネイティブインスタンスの Print メソッドを呼び出しています。
    + + +
    29〜40行目
    +
     add メソッドを宣言しています。ここでは numparams と param を使用しています。
    + + + +
    42〜62行目
    +
     value プロパティを宣言しています。TJS_BEGIN_NATIVE_PROP_DECL と TJS_END_NATIVE_PROP_DECL の両マクロには、メソッドの宣言と同じく、プロパティ名を指定します。
    +
    + TJS_BEGIN_NATIVE_PROP_GETTER と TJS_END_NATIVE_PROP_GETTER マクロで囲まれた場所には、ゲッターを記述することができます。ゲッター内では tTJSVariant 型である *result に値を設定するように記述します。
    + 同様に、TJS_BEGIN_NATIVE_PROP_SETTER と TJS_END_NATIVE_PROP_SETTER マクロで囲まれた場所にはセッターを記述することができます。セッター内では tTJSVariant 型である *param に設定されるべき値が格納されているので、それを使って処理をします。
    + + +
    64〜79行目
    +
     ここでは読み出し専用プロパティを宣言しています。セッターの代わりに TJS_DENY_NATIVE_PROP_SETTER を書くことにより、読み出し専用プロパティを作ることができます。

    +
    +
    + ネイティブクラスの登録は、ネイティブ関数の登録と同じです。以下にテストコードを例示します。
    +
    + +
    +例:
      1|        iTJSDispatch2 * global = tjsengine->GetGlobalNoAddRef();
    +  2|            // グローバルオブジェクトを取得
    +  3|
    +  4|        iTJSDispatch2 *cls = new NC_Test(); // NC_Test のオブジェクトを作成
    +  5|        tTJSVariant cls_var(cls); // tTJSVariant 型 cls_var にオブジェクトを設定
    +  6|        cls->Release(); // cls を Release
    +  7|
    +  8|        TJS_THROW_IF_ERROR(
    +  9|            global->PropSet(TJS_MEMBERENSURE, TJS_W("Test"), NULL, &cls_var, NULL));
    + 10|                // 登録
    + 11|
    + 12|        tjsengine->ExecScript(TJS_W(
    + 13|            "var test = new Test();\n"
    + 14|            "test.value = 5;\n"
    + 15|            "var test2 = new Test(test.square);\n"
    + 16|            "test2.add(3);\n"
    + 17|            "test2.print();\n\0"),
    + 18|                NULL, NULL, NULL); // スクリプトを実行
    +
    +
    + +
    +
    + + + + diff --git a/docs/tjs2doc/contents/statement_and_block.html b/docs/tjs2doc/contents/statement_and_block.html new file mode 100644 index 0000000..16d79e3 --- /dev/null +++ b/docs/tjs2doc/contents/statement_and_block.html @@ -0,0 +1,97 @@ + + + + + + + ステートメントとブロック + + + + + + + + +

    ステートメントとブロック +

    + TJS2 の大きな文法の構成要素としてステートメントとブロックがあります。
    +
    +

    ステートメント +

    + ステートメントは、; (セミコロン) で終わるものです。式の後ろにそのままセミコロンがついたものもあれば、if 等の制御構文の後にセミコロンが付いたものもあります。
    + +
    +例:
        a++;
    +    func1();
    +    return a+b;
    +    などなど
    +
    +
    + +
    +

    ブロック +

    + ブロックは、ステートメントを { } の間に複数書き、まとめたものです。ステートメントは上から下へ実行されます。
    + +
    +例:
        {
    +        a++;
    +        b++;
    +    }
    +
    +    {
    +        var t=func1();
    +        func2(t);
    +        break;
    +    }
    +
    +
    + +
    + ブロックの次には ; (セミコロン) は必要ありません。
    +
    + また、すべてのブロックは、変数のスコープを生成します。
    +
    +

    実行順序 +

    + TJS では、関数、クラス、プロパティ以外の部分に書かれたステートメントは、スクリプトが実行されるとともに実行されます。関数、クラス、プロパティの中のステートメントは呼び出されるまで実行されません。
    + +
    +例:
        var a; // すぐに実行される
    +
    +    function test()
    +    {
    +        a+=10; // 呼び出されるまで実行されない
    +    }
    +
    +    a+=30; // すぐに実行される
    +
    +
    + +
    + より正確には、クラスの定義、関数の定義、プロパティの定義はスクリプトが実行されるとまず一番最初に登録され、そのあと、それ以外のスクリプトの要素が先頭から実行されます。そのため、関数、クラス、プロパティは、同じスクリプトブロック内では後方参照が可能です。
    + +
    +例:
        test(); // この位置よりも後ろに宣言された関数でも、同じスクリプトブロック内ならば参照される
    +
    +    function test()
    +    {
    +        inform("yah!");
    +    }
    +
    +
    + +
    + 違うスクリプトブロック間での関数などの呼び出しは、関数呼び出しをしようとした時点で、その対象の関数が読み込まれた状態になっていれば可能です。
    + また、変数の宣言は、読み込まれた順番に処理されていくので、後方参照はできません。
    +
    +

    グローバルオブジェクト +

    + グローバルオブジェクトは特殊なオブジェクトで、グローバルな位置(広域位置)で宣言された変数や関数、プロパティなどをメンバとして持つオブジェクトです。global キーワードでアクセスできます。
    +
    + + + + diff --git a/docs/tjs2doc/contents/string.html b/docs/tjs2doc/contents/string.html new file mode 100644 index 0000000..f79b756 --- /dev/null +++ b/docs/tjs2doc/contents/string.html @@ -0,0 +1,246 @@ + + + + + + + 文字列に対する操作 + + + + + + + + +

    文字列に対する操作 +

    + TJS2 では、文字列は擬似的に String クラスのオブジェクトということになっていますが、String クラスは存在していませんし、実際に String クラスのオブジェクトというわけではありません ( ただし 文字列に対して typeof 演算子を使うと "String" を返します )。
    + しかし 文字列をオブジェクトと見立てて、いくつかのメソッドやプロパティが使用可能になっています。
    +
    +

    length +

    + length プロパティは、文字列の長さを返します。メソッドではなくてプロパティですので注意してください。ただし、このプロパティへの値の代入はできません。
    +
    + TJS では内部的に文字をすべて UNICODE で扱っていますので、全角文字も 1 文字、半角文字も 1 文字と数えられます。
    + +
    +例:
        var str = "abc漢字";
    +    var n = str.length;  // n には 5 が代入される
    +    var n = "abc漢字".length; // これも同じく 5 が代入される
    +
    +
    + +
    +

    '数値' プロパティ +

    + 数値をプロパティとして間接指定すると、その文字位置にある文字にアクセスできます。
    + たとえば、str が文字列あるいは文字列を表す式だとすると、str[0] は先頭の一文字を表す文字列になります。
    + 数値が文字列よりも長い位置や、負の場合は例外が発生します ( ただし文字列の最後の文字は 空文字 が返されます )。
    +
    + 代入式を生成することはできません。
    + +
    +例:
        var str = "abcdef";
    +    var c = str[0];  // 'a' が c に代入される
    +    var c = str[2];  // 'c' が c に代入される
    +    str[3] = 'A'; // 代入式は生成できないのでエラーになる
    +    var c = str[100]; // c 値が範囲外なのでエラーになる
    +    var c = str[6]; // 空文字 '' が代入される
    +
    +
    + +
    +

    charAt +

    + charAt メソッドは、文字列の指定位置で指定された位置の文字を返します。 '数値' プロパティと同様の動作をしますが、範囲外の場合は常に空文字列を返します (例外を出しません)。
    + +
    +構文 : charAt(<文字位置>)
    +
    +
    + + +
    +例:
        var str = "abcdef"; +    var c = str.charAt(3); // 'd' が c に代入される
    +
    + +
    +

    indexOf +

    + indexOf メソッドは、部分文字列の位置を返します。
    + +
    +構文 : indexOf(<部分文字列>[,<検索開始位置>])
    +
    +
    + + 文字列から、<部分文字列> を<検索開始位置>から検索し、最初に見つかった位置を返します。 0 が返されれば文字列の先頭です。-1 が返されたときは見つからなかったときです。<検索開始位置>を省略すると、文字列の先頭からの検索になります。
    +
    + +
    +例:
        var str = "abcdefghijkl";
    +    var n = str.indexOf("fgh"); // n には 5 が代入される
    +    var n = str.indexOf("xyz"); // n には -1 が代入される
    +
    +
    + +
    +

    toLowerCase +

    + このメソッドに引数はありません。
    + toLowerCase は、文字列のアルファベットを小文字にした文字列を返します。
    + 全角文字は変換されません。
    +
    + これらのメソッドは、もとの文字列には影響を与えません。
    + +
    +例:
        var lwr="ABCDEF".toLowerCase(); // lwr には "abcdef" が代入される
    +
    +
    + +
    Note
    + 現バージョンの TJS2 では 文字コード 0x80 未満の文字に対してのみ変換を行います。
    +

    +
    +

    toUpperCase +

    + このメソッドは toLowerCase と逆で、小文字のアルファベットを大文字にした文字列を返します。
    +
    + +

    substring +

    + substring メソッドは、文字列の部分文字列を返します。
    + +
    +構文 : substring(<開始文字位置>[,<文字数>]) +
    + + 文字列の、<開始文字位置>から<文字数分>の部分文字列を返します。元の文字列に影響は与えません。<文字数> を省略すると、<開始文字位置> 以降の文字列がすべて返されます。
    + JavaScript の同メソッドとは引数の意味が違うので注意してください。
    + +
    +例:
        var ss="abcdefghijkl".substring(3,3); // ss には "def" が代入される
    +
    + +
    +

    substr +

    + substring と同じです。
    +
    +

    sprintf +

    + sprintf メソッドは、文字列を書式化します。
    + +
    +構文 : sprintf(引数, 引数, ....)
    +
    +
    + + 文字列を書式文字列と見なし、C言語における sprintf 同様のテキストのフォーマッティングを行った文字列を返します。元の文字列には影響を与えません。
    + +
    +例:
        var formatted = "%04X %c %5d".sprintf(v1, v2, dic[v1]);
    +
    + +
    + +

    replace +

    + replace メソッドは、文字列の置き換えを行います。
    + +
    +構文 : replace(<パターン>, <置き換え後文字列>) +
    + + 正規表現パターンに従って文字列の置き換えを行い、置き換えを行ったあとの文字列を返します。元の文字列には影響を与えません。
    + 動作については RegExp クラス の replace メソッドを参照してください。
    +
    +

    split +

    + split メソッドは、文字列を分割します。
    + +
    +構文 : split(<パターン/デリミタ集合>, <(予約)>, <空の要素を無視するか=false>) +
    + + 文字列を分割した結果が格納された配列オブジェクトを返します。
    +
    + Array クラス の split メソッドも参照してください (引数の順番に注意してください)。
    +
    +

    escape +

    + escape メソッドは、文字列を、TJSの文字列即値内で表現可能な形式に変換します。\ や " などの記号はすべて \ 記号を用いて特殊な用途として解釈されなくされます (エスケープされます)。
    + +
    +構文 : escape() +
    + + エスケープされた文字列を返します。元の文字列には影響を与えません。
    +
    + +
    +例:
        var escaped = str.escape(); // str 中の " は \" に、\ は \\ に変換されるなど
    +
    +
    + +
    +

    trim +

    + trim メソッドは、文字列の先頭と最後の空白を取り除いた文字列を返します。元の文字列には影響を与えません。
    + 先頭と最後の空白とは、文字コードがU+0001〜U+0020の文字を指します。つまり、ASCII制御文字なども含まれますが、いわゆる全角の空白は含みません。
    + 連続して先頭または最後にこれらの空白があった場合は、すべて取り除かれます。
    + +
    +構文 : trim() +
    + + 先頭と末尾の空白文字が削除された文字列を返します。元の文字列には影響を与えません。
    +
    + +
    +例:
        var str = "  Hoge ".trim(); // str は "Hoge" です。
    +
    +
    + +
    +

    reverse +

    + reverse メソッドは、文字の並びを逆転した文字列を返します。元の文字列には影響を与えません。
    + 現バージョンのTJS2では、UTF-16のうちサロゲートペアを含む文字列の動作は保証しません。
    + +
    +構文 : reverse() +
    + + 文字の並びを逆転した文字列を返します。元の文字列には影響を与えません。
    +
    + +
    +例:
        var str = "Hoge".reverse(); // str は "egoH" です。
    +
    + +
    +

    repeat +

    + repeat メソッドは、指定した回数だけ文字列を繰り返した文字列を返します。元の文字列には影響を与えません。
    + +
    +構文 : repeat(count) +
    + + count個、この文字列を繰り返した文字列を返します。元の文字列には影響を与えません。
    +
    + +
    +例:
        var str = "Hoge".repeat(3); // str は "HogeHogeHoge" です。
    +
    + +
    + + + + + diff --git a/docs/tjs2doc/contents/style.html b/docs/tjs2doc/contents/style.html new file mode 100644 index 0000000..94c39c9 --- /dev/null +++ b/docs/tjs2doc/contents/style.html @@ -0,0 +1,104 @@ + + + + + + + スタイルなど + + + + + + + + +

    スタイルなど +

    + TJS2 は、スタイルとしては C 言語の流れを汲む言語です。一文が改行で終わる BASIC 等と違い、書き方は基本的に「フリースタイル」です。
    +
    + ただし、JavaScript のように一文を改行で終わらせることはできません。
    +
    +

    フリースタイル +

    + 改行やスペース、タブ等、一般に「ホワイトスペース」と呼ばれる文字は、意味が分からならなければどこにでも入れる事ができます。また、意味が分からなくならないように適宜挿入しなければなりません。
    + +
    +例:
    (1)
    +    function func(a,b) { a++; return a+b; }
    +
    +(2)
    +    function func(a,b) {
    +        a++;
    +        return a+b;
    +    }
    +
    +(3)
    +    function func(a,b)
    +    {
    +        a++;
    +        return a+b;
    +    }
    +
    +(4)
    +    function
    +    func
    +    (
    +    a
    +    ,
    +    b
    +    )
    +    {
    +    a
    +    ++
    +    ;
    +    return
    +    a
    +    +
    +    b
    +    ;
    +    }
    +
    +(5)
    +    functionfunc(a,b){a++;returna+b;}
    +
    +(6)
    +    f unction fu nc(a,b)
    +    {
    +        a+ +;
    +
    +    ret urn a+b;
    +    }
    +
    +
    + +
    + これらの、(1) 〜 (4) はすべて同じ意味です。ただし、読みやすさの点から (2) または (3) を推奨します。
    + (5) は、スペースを入れずに書いたものですが、このようにすると文字がつながってしまい、正常に解釈されません。
    + (6) は、スペースを入れるべき所でないところにスペースが入ってしまいますのでエラーになります。
    +
    +

    コメント +

    + /**/ で囲まれた部分は、コメントとして扱われ、解釈されません。コメントはネスト ( 入れ子に ) できます。
    + 同様に、 一行のうち、// 以降の部分もコメントとして扱われます。
    +
    + +
    +例:
        function example(a,b,c)
    +    {
    +        return a*b/c; // a*b/c を返す
    +    }
    +
    +    /*
    +        このようにコメントを書くこともできます
    +        /* コメントのネストは可能になっています */
    +    */

    +
    +
    + +
    + + + + diff --git a/docs/tjs2doc/contents/switch.html b/docs/tjs2doc/contents/switch.html new file mode 100644 index 0000000..b0b8ac2 --- /dev/null +++ b/docs/tjs2doc/contents/switch.html @@ -0,0 +1,99 @@ + + + + + + + switch ステートメント + + + + + + + + +

    switch ステートメント +

    + switch ステートメントを使うと、if 〜 else if を簡潔に書くことができます。以下の構文をとります。
    + +
    +switch(base_expression)
    +{
    +case condition_expression1 :
    +
    +case condition_expression2 :
    +
    +:
    +:
    +
    +default:
    +
    +:
    +:
    +}
    +
    +
    + +
    + base_expression には式を書き、最初にこの式が評価されます。switch の次のブロックの中の case の次の condition_expression? にも式を書きます。
    + condition_expression? はブロック内で次々に評価されます。評価された結果が base_expression と同じ場合、そこから実行が開始されます。condition_expression? に合致しない場合は、その間にかかれた文やステートメントは無視されます。また、合致した場合、それ以降、case や default は無視されます。
    + default: は省略できますが、default がかかれた場合は強制的に default 以降の文やステートメントが実行されます。
    + ブロックを抜けるには break; を書きます。break を書き忘れて、次の case の内容まで実行してしまうのはよくあることなので注意してください。
    +
    + +
    +例:
        switch(a)
    +    {
    +    case 0:
    +        inform("a は 0 です");
    +        break;
    +    case 1:
    +        inform("b は 1 です");
    +        break;
    +    case 2:
    +        inform("b は 2 です");
    +        break;
    +    default:
    +        inform("b は 0 でも 1 でも 2 でもありません");
    +    }
    +
    +
    +    switch(a)
    +    {
    +    case 0:
    +    case 1: // break がないので case 0 の場合はここを通過する
    +        inform("a は 0 か 1 です");
    +        break;
    +    case 2:
    +        inform("a は 2 です");
    +    } // default がないので 0 1 2 以外の場合はなにも実行されない
    +
    +
    +    switch(a)
    +    {
    +    case b+1: // case の後には式も指定できる
    +        inform("a==b+1");
    +        break;
    +    case c+b:
    +        inform("a==c+b");
    +    }
    +
    +    switch(str)
    +    {
    +    case "あいうえお": // 文字列も指定できる
    +        type=1;
    +        break;
    +    case "かきくけこ":
    +        type=2;
    +        break;
    +    }
    +
    +
    + +
    + + + + diff --git a/docs/tjs2doc/contents/td.png b/docs/tjs2doc/contents/td.png new file mode 100644 index 0000000000000000000000000000000000000000..543465f5063b748cdc3eaa3be9d77d86cbbff06e GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaYymzYu0Xnhfx#tckw1{dSQ6wH p%;50sMjDXA<>}%WQgJIe0mx=zV0@~6?+=j0;OXk;vd$@?2>@bj6)pe( literal 0 HcmV?d00001 diff --git a/docs/tjs2doc/contents/token.html b/docs/tjs2doc/contents/token.html new file mode 100644 index 0000000..1471022 --- /dev/null +++ b/docs/tjs2doc/contents/token.html @@ -0,0 +1,246 @@ + + + + + + + トークン + + + + + + + + +

    トークン +

    + スクリプトは、解釈中、すべてトークンと呼ばれる単位に分解されて処理されます。
    + トークンと次のトークンの境界は、トークンの種類によって異なります。
    +

    裸の単語 +

    + 「裸の単語」とは、""'' クオート(引用)されていない、スクリプト中に直接書かれる特定の文字の並びのことです。
    + 「裸の単語」は以下の規則を持っています。
    + 
    +
    • アルファベットの小文字・大文字、'_'(アンダーバー)、数字、いわゆる全角文字で構成される。ただし数字は先頭にくることができない。
    • これらの連続が終わるまでが、一つの「裸の単語」として扱われる

    + +
    +例:
        ampan  // OK
    +    123a // 数字が先頭に来ているので NG
    +    _asdf // アンダーバーは先頭にくることができるので OK
    +    continue // これは予約語 OK
    +    全角文字 // いわゆる全角文字は「裸の単語」として OK
    +
    +
    + +
    + 「裸の単語」は、さらに予約語と識別子に分類されます。
    +
    +

    予約語 +

    + 予約語は以下のもので、識別子ではありません。「裸の単語」のうち、予約語ではないものはすべて識別子です。
    +
    + break continue const catch class case
    + debugger default delete do extends export
    + enum else function finally false for
    + global getter goto incontextof Infinity
    + invalidate instanceof isvalid import int in
    + if NaN null new octet protected property
    + private public return real synchronized switch
    + static setter string super typeof throw
    + this true try void var while with

    +
    + これらの予約語は、スクリプトの文法を構成する重要な用途として特殊な意味をそれぞれ持っています。このうちのいくつかは、演算子として使用されるものです。
    + ただし、現バージョンではこれらのすべての予約語が使用されているわけではありません。
    +
    +

    識別子 +

    + 「識別子」は、「裸の単語」のうち、予約語でないものすべてです。これらは、記述者が自由に命名することのできる変数や関数、クラス名などに用いられます。
    + 識別子は予約語を含んでいても、予約語そのものでなければ、予約語ではなく識別子として認識されます。
    +
    +

    記号 +

    + 記号類もトークンとして分解されます。記号類には以下のものがあります。
    +
    +>>>= >>> >>= >> >= > <<= <=
    +<-> << < === == => = !== != !
    +&&= && &= & ||=
    +|| |= | ... . ++ += + -= -- - *=
    +* /= / \= \ %= % ^= ^ [ ] ( ) ~
    +? : , ; { } # $

    +
    + これらは、最長一致でトークンとして切り出されます。たとえば、 ++ は、 ++ ではなく、 ++ という一つの記号として分解されます。これらを別々の ++ として記述したいばあいは、++ の間にスペースなどを挟む必要があります。
    +
    + 記号類は、それぞれ文法を構成する要素として重要な意味を持っています。記号のうち、いくつかは演算子として使用されるものです。
    +
    +

    数値即値 +

    + 数値即値は、数字、あるいは . (小数点)で始まるものです。TJS2 は、以下の形式を認識します。
    + 普通に数値を書けばそのまま10進の数値即値になります。
    + +
    +例:
        0
    +    3.1
    +    342.3
    +    1
    +
    +
    + +
    + また、10進については e または E を使い、10を底とする 指数指定をすることもできます。e でも E でも意味は同じです。
    + +
    +例:
        1e-3   // 1×10-3
    +    3.4e10   // 3.4×1010
    +    9.3E-2  // 9.3×10-2
    +
    +
    + +
    + 先頭に 0x または 0X をつけると 16進数での指定となります。0x でも 0X でも意味は同じです。
    + +
    +例:
        0x1234
    +    0Xff
    +    0x3f33
    +
    +
    + +
    + 先頭に 0b または 0B をつけると 2進数での指定となります。
    + +
    +例:
        0b0100
    +    0B0010100010100001
    +
    +
    + +
    + 先頭に 0 がつくと 8進数として扱われます。
    + +
    +例:
        01234
    +    033
    +
    +
    + +
    + 16進、8進、2進についても、小数点形式や p による指数指定が可能です。p は 2 を底とする指数指定です。
    + +
    +例:
        0b1.1    // 1 + 1/2 で 1.5 を表す
    +    0x2.f    // 2 + 15/16 で 2.9375 を表す
    +    0x1p8    // 1 × 28 で 256.0 を表す
    +
    +
    + +
    +
    + 数値即値は、それが数値即値の構成文字である限り一つの数値即値としてあつかわれます。
    +
    +

    文字列即値 +

    + 文字列即値(文字列リテラル)は、"" (ダブルクオーテーション) または ''(シングルクオーテーション)で囲まれるものです。ダブルクオーテーションをつかってもシングルクオーテーションを使ってもかまいません。
    + ただし、"" (ダブルクオーテーション) 中では '(シングルクオーテーション) を、''(シングルクオーテーション)中では " (ダブルクオーテーション) を、\ でエスケープする必要が無くなります。
    + +
    +例:
        "this is a string."
    +    'this is also a string.'
    +    "Can't use without a quotation."
    +
    +
    + +
    + 文字列中で \ (円記号) は特別な意味を持ちます。 \ の後に続く文字で意味が変わります。\ に続けて特殊な指定をすることをエスケープするといいます。
    +
    + +
    +\\    : \ マーク自体
    +\'    : ' (シングルクオーテーション)
    +\"    : " (ダブルクオーテーション)
    +\a    : BEL (可聴ベル)
    +\b    : BS (後退)
    +\f    : FF (フォームフィード)
    +\n    : LF (改行)
    +\r    : CR (復帰)
    +
    +\t    : HT (水平タブ)
    +\v    : VT (垂直タブ)
    +\xH   : H=16 進数 ( H が文字コードを表します )
    +\XH   : 上に同じ
    +
    +
    + +
    + \xH の形式で、H の部分には 16 進数を指定します。すると、その 16 進数は文字コードとして扱われ、その一文字に置き換わります。
    +
    + +
    +例:
        'Can\'t help'  ( \' を用いている )
    +    "\x1234"     ( ワイド文字としての 0x1234 という文字コードの文字 )
    +
    +
    + +
    +また、\xH の形式では、 \x の次に 16 進数を構成する文字 ( 0〜9 、A〜F、a〜f ) が続く限り、それは H の部分であるとみなされます。ただし、ワイド文字のサイズが 16bit の環境では最大 4 桁、32bit のマシンでは最大 8 桁までが認識されます ( Windowsの場合は 16bit、Linux や Solaris では 32bit です )。
    +"\x22An Apple" とかくと、先頭は \x22A であるとみなされてしまいます。これを避けるには、"\x22" "An Apple" として、文字列をわけ、続けて書いてください。TJS では、このように文字列即値が連続する場合、ひとつの文字列だとみなします。
    +
    + 文字列については 文字列に対する操作 も参照してください。
    +
    + +

    @ つき文字列即値 +

    + 文字列即値の前に @ を置くと、その文字列即値中の & から ; までの間、または ${ から } までの間を式とみなし、それを評価した結果をそこに展開するようになります (式を & と ; の間や ${ と } に書けば、その結果がそこに埋め込まれます)。
    + & や $ を展開したくない場合は、& や $ の前に \ を置くことで & や $ を展開しないようにすることができます。
    +
    + +
    +例:
        @"1+2=&1+2;"  ( "1+2=3" という文字列になる )
    +    @"変数 f の内容は &f; です"  ( 変数 f の内容を &f; の場所に展開する )
    +    @"関数 func を呼び出した結果は &func(); です"  ( 式として有効なものならば & と ; の間に記述可 )
    +    @"関数 func を呼び出した結果は ${func()} です"  ( 上と同じ )
    +    @"true \&\& false は &true && false;"  ( & の前に \ を書けば & は展開されない )
    +
    +
    + +
    + ここに記述する式は、この文字列の書かれている場所からアクセス可能な範囲にある変数など (ローカル変数を含む) にアクセスできます。
    +
    + +

    オクテット列即値 +

    + オクテット列即値は、<%%> で囲まれるもので、中にオクテットデータ ( バイナリデータ ) を書くことができます。
    + データは二桁の16進数をスペースなどで区切り、複数指定します。
    + +
    +例:
        <% 00 01 02 03 %>
    +    <% ff ff ff 00 04 0f ff 30 %>
    +
    +
    + +
    + オクテット列については オクテット列に対する操作 も参照してください。
    +
    +

    正規表現パターン +

    + 正規表現パターンは、// で囲まれるもので、なかに正規表現パターンを書くことができます。
    + 正規表現パターンの後に続けてフラグ文字を書くことができ、g は グローバルサーチフラグ ( 見つかったものをすべてにマッチ;このフラグがないと最初のものだけにマッチ )、i は英字大文字小文字を区別しないフラグ、l はローカライズされたコレーションを行うようにするフラグです。
    + このようにして書かれた正規表現パターンは、RegExp クラスのオブジェクトとして扱われます。
    + +
    +例:
        /[0-9]-[0-9]-[0-9]/
    +    /^;\s*(.*?)\s*=(.*)$/
    +    /start(.*?)end/gi
    +
    +
    + +
    + 正規表現パターンについては RegExp クラス も参照してください。
    +
    + + + + + + diff --git a/docs/tjs2doc/contents/try.html b/docs/tjs2doc/contents/try.html new file mode 100644 index 0000000..71336e9 --- /dev/null +++ b/docs/tjs2doc/contents/try.html @@ -0,0 +1,161 @@ + + + + + + + 例外処理 + + + + + + + + +

    例外処理 +

    + 例外とは、通常の処理では考えられないような、いわゆる「例外」のことで、多くの場合「エラー」と同じと考えてください。
    +
    +

    例外が発生する場所 +

    + プログラム中のどこでも例外が発生する可能性があります。
    + 例外を発生させることを「例外を投げる(throw)」ともいいます。
    + たとえば、以下のスクリプトがエラーを起こしたとします。
    +
    + +
    +例:
        "3%0"!; // "0 で除算をしようとしました" 例外が発生する
    +
    + +
    + このように 明らかに例外が発生する場合もありますが、発生するかしないかわからない場合もあります。
    +
    +

    例外の捕捉 +

    + try (試す) キーワードと、catch (捕捉) キーワードを使うと、例外を捕捉できます。
    + たとえば、上の例で発生するかもしれない例外を捕捉するために、以下のようなスクリプトを書くことができます。
    +
    + +
    +例:
        try // 例外が発生するするかもしれないので
    +    {
    +        func1(); // ここでは例外が発生するかもしれない
    +    }
    +    catch // 例外を捕捉する
    +    {
    +        // 例外がおきたとき、ここが実行される
    +        inform("画像を読み込むことができません。"); // メッセージを表示する
    +    }
    +
    +
    + +
    + このように、try のブロック内で例外の発生するかもしれない処理を書けば、例外がおきたときに catch のブロックを実行することができます。エラー処理をこのようにすっきりと書くことができます。
    +
    + try のブロックでなにも例外が起きなかった場合は、catch のブロックも実行されません。
    +
    + try のブロックでは何でも書くことができます。この例のように、はっきりとその行で例外がおきる可能性があることもありますが、関数呼び出しのそのまた関数呼び出しの先で例外が発生したときも、try ... catch を書いておけば例外が発生した時点でここに戻ってくることができます。
    +
    + 例外が発生した場合は、ブロックの残りの処理は中断され、try のある場所まで戻ってきます。
    +
    + catch のブロックでまた例外が発生した場合は、例外はこの場所では捕捉されません。そのまま例外は関数呼び出しなどをさかのぼり、もしほかの場所で try で例外の捕捉が行われていればそこで捕捉されます。
    +
    + 例外が投げられてから、catch ブロックに到達する間に別の例外が発生する可能性もありますが、動作は未定義です。
    +
    + 例外がスクリプト内のどこでも捕捉されなかった場合、例外はそのままスクリプトを抜けてアプリケーションに渡され、そこで処理されます。
    +
    Note
    +通常、このような例外はエラーとして実行を中断させてしまうので、なるべくエラーが起こりそうな場所には try ... catch を書くことをおすすめします。

    +
    +

    例外オブジェクト +

    + 例外に関するさまざまな情報が、Exception というクラスのオブジェクトとともに投げられてきます。このオブジェクトを例外オブジェクトと呼びます。これを、catch で受け取ることができます。
    + たとえば、以下のようなスクリプトを書くことができます。
    + +
    +例:
        try
    +    {
    +        loadImages("nothing.jpeg"); // 例外が発生するかもしれない処理
    +    }
    +    catch (e) // e という変数で例外を受け取る
    +    {
    +        // e.message は、例外とともに投げられたメッセージ文字列を表します。
    +        // これには例外が発生した理由が説明されている場合があります。
    +        inform("画像を読み込むことができません。\n"+e.message);
    +    }
    +
    +
    + + このように、catch の後の丸カッコ内に受け取る変数を書き、その変数に例外オブジェクトを受け取ることができます。
    + この変数のスコープは、catch の次のブロック内で始まり、このブロックとともに終わります。この変数はあらかじめ宣言されている必要はありません。
    +
    +

    throw ステートメント +

    + 例外を投げることもできます。例外を投げるには throw キーワードを使います。
    + たとえば、以下のようなスクリプトを書くことができます。
    + +
    +例:
        function pow2(n)
    +    {
    +        // 2 の n 乗を計算する n は正の整数でなければならない
    +        if(n<0) throw new Exception("負の数は指定できません。");
    +            // ↑ 例外を発生する
    +        return 1<<n;
    +    }
    +
    +
    + + この関数の引数に -1 など、負の数が渡された場合、例外が発生します。例外を投げているのは以下のステートメントです。
    +
    + +
    +throw new Exception("負の数は指定できません。"); +
    + +
    + new Exception("負の数は指定できません。") についてですが、これは Exception クラスのオブジェクトを、文字列を引数にして作成しています。詳しくは Exception クラスを参照してください。そして、この新しく作成されたオブジェクトを throw キーワードで投げています。
    + throw キーワードで投げることができるのは Exception クラスのオブジェクトとは限りません。数値でも文字列でも、関数への参照を投げることもできます。しかし、Exception クラス、またはそれから派生したクラスのオブジェクトを投げることが推奨されます。捕捉したときに catch のブロックで、Exception クラスのオブジェクトがくることのみを想定して書けばいいからです。
    +
    +

    例外を再び投げる +

    + catch で例外を捕捉したのはいいが、まだ例外を受け取る可能性のある try がどこかに宣言されているかもしれない、そのような場合に例外を再び投げることができます。
    + 以下のようなスクリプトを書くことができます。
    + +
    +例:
        function tryloadimage()
    +    {
    +        try
    +        {
    +            primaryLayer.loadImages("test1.bmp"); // test1.bmp を読んでみる
    +        }
    +        catch(e)
    +        {
    +            inform("画像読み込みに失敗しました。");
    +            throw e; // メッセージを表示はするが、例外を再び投げる
    +        }
    +    }
    +
    +    function test()
    +    {
    +        // tryloadimage を呼び出し、画像読み込みが成功すれば true
    +        // そうでなければ false を返す関数
    +        try
    +        {
    +            tryloadimage();
    +        }
    +        catch
    +        {
    +            return false;
    +        }
    +        return true;
    +    }
    +
    +
    + + ここで test() を呼び出し、画像読み込みに失敗した場合は、inform メソッドによりメッセージが表示されますが、再び例外が投げられるため、test 関数内の catch により捕捉することができます。
    +
    + + + + diff --git a/docs/tjs2doc/contents/ttjs.html b/docs/tjs2doc/contents/ttjs.html new file mode 100644 index 0000000..a4e25b7 --- /dev/null +++ b/docs/tjs2doc/contents/ttjs.html @@ -0,0 +1,252 @@ + + + + + + + tTJS + + + + + + + + +

    tTJS とは +

    + TJS2 スクリプトエンジンのクラスです。このクラスのオブジェクトを通して TJS2 を操作することができます。
    +
    +

    コンストラクタ +

    + tTJS のコンストラクタに引数はありません。
    + tTJS のオブジェクトは自動変数として作成できません。かならず new 演算子を用いて作成する必要があります。
    + 作成直後の 参照カウンタは 1 になっています。これはそのまま Release メソッドを呼べば tTJS のオブジェクトが解放されると言うことです。
    +
    +

    デストラクタ +

    + tTJS のデストラクタは保護部にあり、アクセスできません。
    + tTJS のオブジェクトを解放するには Release メソッドを使ってください。
    + また、tTJS のオブジェクトを解放する前には Shutdown メソッドを呼ぶことが推奨されます。
    +
    + +

    AddRef +

    +void tTJS::AddRef()
    +
    + TJS2 スクリプトエンジンの参照カウンタをインクリメントします。
    +

    Release +

    +void tTJS::Release()
    +
    + TJS2 スクリプトエンジンの参照カウンタをデクリメントします。
    + 参照カウンタが 0 になれば tTJS オブジェクトは解放されます。
    +

    Shutdown +

    +void tTJS::Shutdown()
    +
    + スクリプトエンジンのシャットダウンを行います。
    +
    + TJS2 スクリプトエンジンを解放するとき、Release メソッドの前にこのメソッドを呼ぶことを推奨します。
    +
    + +

    GetGlobal +

    +iTJSDispatch2 * tTJS::GetGlobal()
    +
    + global オブジェクトを取得します。iTJSDispatch2 インターフェース 型のオブジェクトが返されます。
    + このメソッドは global オブジェクトを返すとき、その参照カウンタをインクリメントします。
    +
    + + + +

    GetGlobalNoAddRef +

    +iTJSDispatch2 * tTJS::GetGlobalNoAddRef()
    +
    + global オブジェクトを取得します。GetGlobal と違うのは、global オブジェクトの参照カウンタをインクリメントしないと言うことです。
    +
    + + + +

    SetConsoleOutput +

    +void tTJS::SetConsoleOutput(iTJSConsoleOutput *console);
    +
    + コンソールの出力先を指定します。
    + コンソールは、TJS2 の出すエラーメッセージなどが出力されるところです。
    +
    +以下の引数があります。
    +
    +
    +
    console
    +
     コンソールの出力先を定義する、iTJSConsoleOutput 型のオブジェクトを指定します。
    + iTJSConsoleOutput 型は tjs.h に定義されている基本抽象クラスで、以下のメソッドがあります。
    +
    +
    +
    void iTJSConsoleOutput::ExceptionPrint(const tjs_char *msg)
    +
     例外に関する情報を出力するためのメソッドです。msg がメッセージを表します。
    +
    void iTJSConsoleOutput::Print(const tjs_char *msg)
    +
     その他の情報を出力するためのメソッドです。msg がメッセージを表します。
    +
    + +

    GetConsoleOutput +

    +tTJSConsoleOutput * tTJS::GetConsoleOutput() const
    +
    + コンソールの出力先を取得します。
    +
    + +

    OutputToConsole +

    +void tTJS::OutputToConsole(const tjs_char *msg) const
    +
    + コンソールに文字列を出力します。msg は出力するメッセージです。
    +
    + + +

    OutpuExceptionToConsole +

    +void tTJS::OutpuExceptionToConsole(const tjs_char *msg) const
    +
    + コンソールに例外の文字列を出力します。msg は出力するメッセージです。
    +
    + + + +

    OutputToConsoleWithCentering +

    +void tTJS::OutputToConsoleWithCentering(const tjs_char *msg, tjs_uint width) const
    +
    + コンソールに文字列をセンタリングして出力します。msg は出力するメッセージで、width は横幅です。
    + 横幅よりも出力するメッセージの文字数が少ない場合は、指定した横幅の中央にセンタリングして出力します + ( ただしすべての文字の幅を同一であると見なすため、全角が混じると崩れた表示になります )
    + + + + + +

    OutputToConsoleSeparator +

    +void tTJS::OutputToConsoleSeparator(const tjs_char *text, tjs_uint count) const
    +
    + text で示された区切り記号を、count 個、コンソールに出力します。
    + + + + +

    Dump +

    +void tTJS::Dump(tjs_uint width = 80) const
    +
    + TJS2 の状態をコンソールに出力します。
    + 各スクリプトブロック中の仮想マシンコードの逆アセンブル結果などが表示されます。
    + width には出力する横幅を指定します。
    + + +

    ExecScript +

    +void tTJS::ExecScript(
    +    const tjs_char *script,
    +    tTJSVariant *result = NULL,
    +    iTJSDispatch2 *context = NULL,
    +    const tjs_char *name = NULL,
    +    tjs_int lineofs = 0
    +    )
    +
    +void tTJS::ExecScript(
    +    const ttstr &script,
    +    tTJSVariant *result = NULL,
    +    iTJSDispatch2 *context = NULL,
    +    const tjs_char *name = NULL,
    +    tjs_int lineofs = 0
    +    )
    +
    + スクリプトを実行します。
    +
    + 以下の引数があります。
    +
    +
    +
    const tjs_char *script
    + +
    const ttstr &script
    +
     実行するスクリプトを指定します。
    + + +
    tTJSVariant *result
    +
     結果を受け取るための tTJSVariant 型の変数へのポインタを指定します。
    + NULL も指定できますが、NULL の場合は結果を受け取ることができません。
    +
    iTJSDispatch2 *context
    +
     このスクリプトが実行されるコンテキストを指定します。
    + NULL を指定すると、スクリプトは global コンテキスト上で実行されます。
    + 通常は NULL を指定しますが、スクリプトを特定のコンテキストで実行したい場合はそのコンテキストとなるオブジェクトを指定してください。
    + + +
    const tjs_char *name
    +
     スクリプトの名前を指定します。通常、そのスクリプトのファイル名を指定します。
    + 例外の通知の際にどこのスクリプトで例外が起こったかを知らせたりする目的で使用されます。
    + +
    tjs_int lineofs
    +
     スクリプト中の、そのスクリプトの始まった行(0〜)を指定します。
    + KAGシナリオ中に埋め込まれたTJSスクリプトのように、他のドキュメント中にTJSスクリプトが埋め込まれる場合に、そのTJSスクリプトの開始行を指定します。
    + 例外の通知の際にどこのスクリプトで例外が起こったかを知らせたりする目的で使用されます。
    + + +
    + +

    EvalExpression +

    +void tTJS::EvalExpression(
    +    const tjs_char *expression,
    +    tTJSVariant *result = NULL,
    +    iTJSDispatch2 *context = NULL,
    +    const tjs_char *name = NULL
    +    tjs_int lineofs = 0
    +    )
    +
    +void tTJS::EvalExpression(
    +    const ttstr &expression,
    +    tTJSVariant *result = NULL,
    +    iTJSDispatch2 *context = NULL,
    +    const tjs_char *name = NULL
    +    tjs_int lineofs = 0
    +    )
    +
    + 式を評価します。
    + 引数については ExecScript を参照してください。
    +
    + if 演算子のように式の結果を得ることができない演算子の場合、その結果を得ようとして result に非 NULL を指定すると例外が発生します。この場合は result には NULL を指定する必要があります。
    + + + + +

    SetPPValue +

    +void tTJS::SetPPValue(const tjs_char *name, const tjs_int32 value)
    +
    + 条件コンパイル用の変数を設定します。name は変数の名前、value は設定する値です。
    +
    + + + +

    GetPPValue +

    +tjs_int32 tTJS::GetPPValue(const tjs_char *name)
    +
    + 条件コンパイル用の変数を取得します。name は変数の名前です。変数が見つからなかった場合は 0 が帰ります。
    +
    + + + + +

    DoGarbageCollection +

    +tjs_int32 tTJS::DoGarbageCollection()
    +
    + ガベージコレクションを行います。TJS2 が保持しているキャッシュをクリアしたり、未処理のクリーンアップ処理を完了させます。
    +
    + + + + diff --git a/docs/tjs2doc/contents/types.html b/docs/tjs2doc/contents/types.html new file mode 100644 index 0000000..6daa2e1 --- /dev/null +++ b/docs/tjs2doc/contents/types.html @@ -0,0 +1,59 @@ + + + + + + + データ型 + + + + + + + + +

    データ型 +

    + TJS2 には変数に「型」はありませんが、内部的には型を持っています。型を持たないと言うよりは、型が自動的/動的に扱われるということです。
    + 内部の型としては、void, 整数型、実数型、文字列型、オブジェクト型、オクテット列型があります。
    +
    +

    void +

    + void は、何も表していないことを表します ( JavaScript とは意味が違います )。宣言したての変数は void です。
    + void 同士の比較には、=== (識別) 演算子を用います。
    + typeof 演算子は、これに対しては "void" を返します。
    +
    +

    整数型 +

    + TJS2 は整数型として 64bit の精度の整数を扱うことができます。整数は通常符号あり整数として扱われますが、唯一の例外として >>> 演算子は、左辺を符号なし整数として扱います。
    + typeof 演算子は、これに対しては "Integer" を返します。
    +
    +

    実数型 +

    + TJS2 は実数型として 64bit の精度の実数 ( 倍精度実数 ) を扱うことができます。
    + typeof 演算子は、これに対しては "Real" を返します。
    +
    +

    文字列型 +

    + TJS2 は長さ制限のない、ゼロ終結文字列を扱うことができます。ゼロ終結文字列とは、\0 で文字列が終わると仮定して文字列を扱うと言うことです。
    + 文字コードはワイド文字 ( 通常は UNICODE ) を扱いますが、16bitのワイド文字か 32bitのワイド文字かは TJS2 がコンパイルされた環境によって異なります。たとえば Windows では 16bit ですが、Solaris や Linux では 32bit になります。
    + typeof 演算子は、これに対しては "String" を返します。
    +
    +

    オブジェクト型 +

    + オブジェクト型は、オブジェクトを保持する型です。new 演算子で確保したオブジェクトのほか、関数、クラス、プロパティオブジェクトなどはすべてオブジェクト型になります。
    + typeof 演算子は、これに対しては "Object" を返します。
    +
    + TJS や JavaScript と異なり、TJS2 のオブジェクト型は、オブジェクトそのものへのポインタと、それが使用されるべきコンテキストとなるオブジェクトのポインタの2つのポインタを内部に持っていて、いわゆるクロージャを実現できるようになっています。このコンテキスト部分を変更する演算子が incontextof 演算子です。
    +
    +

    オクテット列型 +

    + オクテット列型は、8bit 幅のデータ列 (オクテット列型) をあつかう型です。主にバイナリデータを扱うための型です。
    + typeof 演算子は、これに対しては "Octet" を返します。
    +
    + + + + diff --git a/docs/tjs2doc/contents/variable.html b/docs/tjs2doc/contents/variable.html new file mode 100644 index 0000000..e6ba2b2 --- /dev/null +++ b/docs/tjs2doc/contents/variable.html @@ -0,0 +1,117 @@ + + + + + + + 変数 + + + + + + + + +

    変数 +

    + TJS2 の変数は var キーワードで指定します。TJS2 では変数を宣言しなければ使うことができません。
    + var キーワードの書式は以下の通りです。
    + +
    + var 変数名;
    +
    +
    + + 変数名は , (カンマ)で区切って複数個指定することもできます。変数に初期値が必要な場合は、
    + +
    + var 変数名 = 初期値;
    +
    +
    + + の書式で変数に初期値を代入することができます。
    + +
    +例:
        var variable=0;
    +    var var2=variable+2;
    +    var var3="this is var3.";
    +    var var1,var2,var3;
    +    var a=0,b=1,c=3;
    +
    +
    + +
    + 変数は宣言時に型を指定する必要はありません。代入されたものの型になります。また、計算途中や文脈では、自動的に型が変換されます。
    +
    +

    変数名 +

    + 変数名として有効なのはすべての識別子です。
    + +
    +例:
        var ampan;
    +    var 123a;  // 数字が先頭にきているので NG
    +    var function; // function は予約語なので NG
    +    var function1; // 予約語を含むが予約語そのものではないので OK
    +    var 変数その一; // いわゆる全角文字も使用可能
    +
    +
    + +
    +

    変数の2重宣言 +

    + 同じ名前の変数を二回以上宣言してもエラーになりません。ただし、二回目以降の宣言で初期値が指定された場合、その初期値が変数に代入されます。2回目以降の宣言で初期値が与えられなかった場合は、void になります。
    + +
    +例:
        var a=0;
    +    var a; // 二回目の宣言 (エラーにならなく、a は void になる)
    +    var a=-1; // 三回目の宣言 (エラーにならないが a には -1 が代入される)
    +
    +
    + +
    +

    変数のスコープ +

    + { } (ブロック) で囲まれた部分で宣言された変数は、そのブロック内のみで有効な変数、つまりローカル変数になります。
    + また、C 言語と異なり、変数が宣言できる位置に制限はありません。
    + +
    +例:
        while(t--)
    +    {
    +        var ratio=t/all; // 変数 'ratio' を宣言
    +        setRatio(ratio);
    +    }
    +
    +    // ここに制御が移ったとき、'ratio' は削除されている
    +
    +    var test; // ここでも変数を宣言することができる
    +
    +
    + +
    + また、ブロック外の変数と同じ名前の変数がブロック内で宣言された場合、そのブロック内では、新しく宣言された変数のみにアクセスできます。
    + +
    +例:
        var ratio=0;
    +    if(flag)
    +    {
    +        var ratio; // ブロック外で宣言されている変数と同名の変数
    +
    +        ratio=buf.position / buf.totalTime; // ブロック内の ratio にのみアクセスできる
    +        setRatio(ratio);
    +    }
    +
    +    // ブロックを抜けるとブロック内の ratio は削除されるが、ブロック外の ratio はそのまま
    +    ratio=-1;
    +
    +
    + +
    Note
    + すべてのスコープの外側 (これをグローバルスコープと呼びます) で var で変数を宣言すると、その変数はグローバルオブジェクトのメンバとなります。
    +

    +
    + + + + diff --git a/docs/tjs2doc/contents/variant.html b/docs/tjs2doc/contents/variant.html new file mode 100644 index 0000000..fd8b9e9 --- /dev/null +++ b/docs/tjs2doc/contents/variant.html @@ -0,0 +1,88 @@ + + + + + + + tTJSVariant 型 + + + + + + + + +

    tTJSVariant とは +

    + tTJSVariant 型は、TJS2 における「変数」のデータを扱う型です。
    + tTJSVariant 型は内部型をもっていて、一つの型で void(未定義)、オブジェクト、整数、実数、文字列、オクテット列を表すことができます。
    + また、演算に関してはこれらの内部型の変換を自動的に扱います。
    +
    + + +

    tTJSVariantType +

    + tTJSVariant の内部型を表す列挙型です。tTJSVariant::Type メソッドで取得することができます。
    +
    +
    +
    tvtVoid
    +
     void型です。tTJSVariant 型を引数無しのコンストラクタで構築した場合はこの型になります。nullではありません。
    +
    tvtObject
    +
     オブジェクト型です。null の場合はこの内部型になります。
    +
    tvtString
    +
     文字列型です。
    +
    tvtOctet
    +
     オクテット列型です。
    +
    tvtInteger
    +
     整数型です。tTVInteger 型の数値を保持します。
    +
    tvtReal
    +
     実数型です。tTVReal 型の数値を保持します。
    + +

    オブジェクト参照 +

    + 内部型のうち、オブジェクトは参照カウンタ方式による管理を行います。
    + tTJSVariant 自体は参照カウンタの管理を自動的に行いますが、tTJSVariant から iTJSDispatch2 インターフェース を取得する各メソッドや、tTJSVariantClosure 型を取得するメソッドからオブジェクトへのポインタを取り出したあとの、参照カウンタの管理には関知しないので注意してください。
    +
    + + +

    オブジェクト型 +

    + tTJSVariantClosure 型は、tTJSVariant 内部でオブジェクトを保持している型です。この型には iTJSDispatch2 インターフェースを2つ保持する機構があり、一つはオブジェクトそのもの、もう一つはそのオブジェクトが実行されるコンテキストの情報を持っています。
    + tTJSVariantClosure 型は iTJSDispatch2 インターフェースが持っている各メソッドを持っています。tTJSVariantClosure 経由でこれらのメソッドにアクセスすれば、実行コンテキストを正しく処理することができます。
    +
    + tTJSVariantClosure 型を tTJSVariant 型から取り出すために tTJSVariant::AsObjectClosure と tTJSVariant::AsObjectClosureNoAddRef の2つがあります。前者はオブジェクトの参照カウンタをインクリメントしますが、後者はインクリメントしません。
    + tTJSVariantClosure 型は参照カウンタを自動的に管理する機構を持たないため、tTJSVariantClosure 型を tTJSVariant 型から取り出した後は参照カウンタの管理に注意する必要があります。
    +
    + + +

    文字列型 +

    + TJS2 の文字列は参照カウンタ方式で管理されていて、単純なコピーなどでは文字列の参照カウンタが増えるだけで文字列の実体は複製されません。
    + tTJSVariantString 型は、tTJSVariant 型と tTJSString 型で使われる、文字列を管理するための型です。tTJSVariantString 型を tTJSVariant 型から取り出すには tTJSVariant::AsString を用いることができます (このメソッドは参照カウンタをインクリメントします)。ただし、tTJSVariantString 型自体は参照カウンタを自動的に管理する機構を持っていないため、tTJSVariantString を使うときは注意が必要です。
    + tTJSString 型ならば参照カウンタを管理できるので、tTJSString 型に変換するのが楽でしょう ( tTJSVariant は tTJSString との変換演算子が定義されています )。
    +
    + +

    オクテット列型 +

    + TJS2 のオクテット列も文字列型同様、参照カウンタ方式で管理されています。
    + tTJSVariantOctet 型は、オクテット列を管理するための型です。この型も tTJSVariantString や tTJSVariantClosure 同様、参照カウンタを管理するための機構を持ってないので注意してください。tTJSVariantOctet 型を tTJSVariant 型から取り出すには tTJSVariant::AsOctet (参照カウンタをインクリメントする)、tTJSVariant::AsOctetNoAddRef (参照カウンタをインクリメントしない) を用いることができます。
    +
    + + +

    変換 +

    + tTJSVariant には様々な変換演算子やコンストラクタが定義されているので、プリミティブ型のように扱うことができます。
    + 上記のように、参照カウンタで管理される型との変換を行う場合は十分に注意する必要があります。
    +
    + +

    演算 +

    + 様々な演算子がオーバーロードされているので、演算に関してもプリミティブ型同様に行うことができます。演算の過程で必要になるような型変換などは自動的に処理されます。
    +
    + + + + + diff --git a/docs/tjs2doc/contents/vmcodes.html b/docs/tjs2doc/contents/vmcodes.html new file mode 100644 index 0000000..c7792dd --- /dev/null +++ b/docs/tjs2doc/contents/vmcodes.html @@ -0,0 +1,695 @@ + + + + + + + 仮想マシン + + + + + + + + +

    TJS2 VM +

    + TJS2 は、スクリプトをいったん仮想マシン (TJS2 VM) 用のバイナリコードにコンパイルしてから実行します。
    + 例外が発生したときやダンプを行ったときにこの TJS2 VM のコードの逆アセンブル結果が表示されるので、この仮想マシンについて簡単に説明します。
    +
    +

    命令コード +

    + TJS2 VM は関数やプロパティなどの実行単位ごとに独立していて、ある一つの関数が他の関数と命令コード空間、レジスタ空間、フラグ、定数領域を共有することはありません。
    + 命令ポインタ (ip) は関数などの頭でかならず 0 から始まります。
    + 命令コードを人間が読みやすい簡単な名前で表したものをニーモニックと呼びます。
    +

    レジスタ +

    + TJS2 VM のレジスタは、ニーモニック中では %(数字) で表されます。数字は負の数になることもあり得ます。レジスタ数に制限はありません。ローカル変数や計算中の一時的な値などはすべてレジスタに記録されます。主記憶 (メインメモリ) やスタックは存在しません。
    + レジスタが表す値は TJS2 のいわゆる変数と同じで、整数、実数、オブジェクト、文字列、オクテット列、void を表すことができます。
    + 現バージョンでは、レジスタ %0 は常に void になります。レジスタ %-1 は this になります。レジスタ %-2 は this proxy と呼ばれる特殊なオブジェクトで、このオブジェクトに対してメンバ参照を行うと、まず this を見て、そこに無ければ global を見に行くという動作をします。this proxy は global レベルの実行単位には存在しません。関数などの引数は %-3 や %-4 などのレジスタにあらかじめ格納された状態で実行が開始されます。
    + このような、あらかじめ用途が決まっていたり、実行前に値があらかじめ入っているレジスタ以外の値は、実行開始の時点では不定です。
    +
    +

    フラグ +

    + TJS2 VM にはフラグが1つだけあり、比較結果が格納されます。フラグは真か偽の値のみをとります。
    +
    +

    定数領域 +

    + TJS2 VM の定数領域は定数を記憶する場所で、ニーモニック中では *(数字) で表されます。定数領域は読み出し専用で、レジスタへこの定数領域の値を移すには const 命令が用いられます。また、関数名やプロパティ名など、名前でオブジェクトのメンバをアクセスするための「名前」もこの定数領域に格納されます。
    +
    +

    VM ニーモニック一覧 +

    + オペランドに %obj.*name%obj.%name の形式を持つものがありますが、これらはオブジェクトのメンバ参照を伴うものです。
    + オペランドに %obj.*name の形式を持つものは直接参照を行うもので、レジスタ %obj で表されたオブジェクトから *name で表された名前をもったメンバを参照します。
    + オペランドに %obj.%name の形式を持つものは間接参照を行うもので、レジスタ %obj で表されたオブジェクトから %name で表された名前をもったメンバを参照します。
    + このような命令のニーモニックは d または pd (direct / property direct) や i または pi (indirect / property indirect) のサフィックスをもちます。
    + サフィックスに p を持つ物は、対象レジスタのプロパティハンドラを動作させます (単項 '*' 演算子の動作をします)。
    +
    +
    +
    +
    nop
    +(no operation)
    +
     何もしません。
    + +
    const
    +(copy constant value)
    +
    書式: const %dest, *src
    +
    + *src で示された定数領域の値を %dest で示されたレジスタにコピーします。
    + +
    cp
    +(copy register)
    +
    書式: cp %dest, %src
    +
    + %src で示されたレジスタの値を %dest で示されたレジスタにコピーします。
    + +
    cl
    +(clear register)
    +
    書式: cl %dest
    +
    + %dest で示されたレジスタを void にします。
    + +
    ccl
    +(clear register)
    +
    書式: ccl %low-%high
    +
    + %low で示されたレジスタ から %high で示されたレジスタの範囲をすべて void にします。
    + +
    tt
    +(test true)
    +
    書式: tt %reg
    +
    + %reg で示されたレジスタが真を表していればフラグを真に、偽を表していればフラグを偽に設定します。
    + +
    tf
    +(test false)
    +
    書式: tf %reg
    +
    + tt と逆で、%reg で示されたレジスタが真を表していればフラグを偽に、偽を表していればフラグを真に設定します。
    + +
    ceq
    +(compare equal)
    +
    書式: ceq %reg1, %reg2
    +
    + %reg1 と %reg2 が通常比較 ( == 演算子の動作 ) で一致すればフラグを真、そうでなければ偽に設定します。
    + +
    cdeq
    +(compare distinct equal)
    +
    書式: cdeq %reg1, %reg2
    +
    + %reg1 と %reg2 が識別比較 ( === 演算子の動作 ) で一致すればフラグを真、そうでなければ偽に設定します。
    + +
    clt
    +(compare littler than)
    +
    書式: clt %reg1, %reg2
    +
    + %reg1 > %reg2 ならばフラグを真、そうでなければ偽に設定します。
    + +
    cgt
    +(compare greater than)
    +
    書式: cgt %reg1, %reg2
    +
    + %reg1 < %reg2 ならばフラグを真、そうでなければ偽に設定します。
    + +
    setf
    +(set flag)
    +
    書式: setf %dest
    +
    + フラグが真ならば %dest を真 (整数非0) に、偽ならば偽 (整数0) に設定します。
    + +
    setnf
    +(set not flag)
    +
    書式: setnf %dest
    +
    + setf と逆で、フラグが偽ならば %dest を真 (整数非0) に、真ならば偽 (整数0) に設定します。
    + +
    lnot
    +(logical not)
    +
    書式: lnot %reg
    +
    + %reg の真偽を逆にします。
    + +
    nf
    +(not flag)
    +
    書式: nf
    +
    + フラグの真偽を逆にします。
    + +
    jf
    +(jump if flag)
    +
    書式: jf ip
    +
    + フラグが真ならば ip にジャンプします。
    + +
    jnf
    +(jump if not flag)
    +
    書式: jnf ip
    +
    + フラグが偽ならば ip にジャンプします。
    + +
    inc, incpd, incpi, incp
    +(increment)
    +
    書式: inc %reg
    +書式: incpd %res, %obj.*name
    +書式: incpi %res, %obj.%name
    +書式: incp %res, %propobj
    +
    + %reg または %obj.*name または %obj.%name または %propobj をインクリメントします。
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    dec, decpd, decpi, decp
    +(decrement)
    +
    書式: dec %reg
    +書式: decpd %res, %obj.*name
    +書式: decpi %res, %obj.%name
    +書式: decp %res, %propobj
    +
    + %reg または %obj.*name または %obj.%name または %propobj をデクリメントします。
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    lor, lorpd, lorpi, lorp
    +(logical or)
    +
    書式: lor %dest, %src
    +
    + %dest と %src の論理和をとり、結果を %dest に格納します。
    +
    +書式: lorpd %res, %obj.*name, %src
    +
    + %obj.*name と %src の論理和をとり、結果を %obj.*name に格納します。
    +
    +書式: lorpi %res, %obj.%name, %src
    +
    + %obj.%name と %src の論理和をとり、結果を %obj.%name に格納します。
    +
    +書式: lorp %res, %propobj, %src
    +
    + %propobj と %src の論理和をとり、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    land, landpd, landpi, landp
    +(logical and)
    +
    書式: land %dest, %src
    +
    + %dest と %src の論理積をとり、結果を %dest に格納します。
    +
    +書式: landpd %res, %obj.*name, %src
    +
    + %obj.*name と %src の論理積をとり、結果を %obj.*name に格納します。
    +
    +書式: landpi %res, %obj.%name, %src
    +
    + %obj.%name と %src の論理積をとり、結果を %obj.%name に格納します。
    +
    +書式: landp %res, %propobj, %src
    +
    + %propobj と %src の論理積をとり、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    bor, borpd, borpi, borp
    +(bitwise or)
    +
    書式: bor %dest, %src
    +
    + %dest と %src のビットごとの論理和をとり、結果を %dest に格納します。
    +
    +書式: borpd %res, %obj.*name, %src
    +
    + %obj.*name と %src のビットごとの論理和をとり、結果を %obj.*name に格納します。
    +
    +書式: borpi %res, %obj.%name, %src
    +
    + %obj.%name と %src のビットごとの論理和をとり、結果を %obj.%name に格納します。
    +
    +書式: borp %res, %propobj, %src
    +
    + %propobj と %src のビットごとの論理和をとり、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    bxor, bxorpd, bxorpi, bxorp
    +(bitwise xor)
    +
    書式: bxor %dest, %src
    +
    + %dest と %src のビットごとの排他的論理和をとり、結果を %dest に格納します。
    +
    +書式: bxorpd %res, %obj.*name, %src
    +
    + %obj.*name と %src のビットごとの排他的論理和をとり、結果を %obj.*name に格納します。
    +
    +書式: bxorpi %res, %obj.%name, %src
    +
    + %obj.%name と %src のビットごとの排他的論理和をとり、結果を %obj.%name に格納します。
    +
    +書式: bxorp %res, %propobj, %src
    +
    + %propobj と %src のビットごとの排他的論理和をとり、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    band, bandpd, bandpi, bandp
    +(bitwise and)
    +
    書式: band %dest, %src
    +
    + %dest と %src のビットごとの論理積をとり、結果を %dest に格納します。
    +
    +書式: bandpd %res, %obj.*name, %src
    +
    + %obj.*name と %src のビットごとの論理積をとり、結果を %obj.*name に格納します。
    +
    +書式: bandpi %res, %obj.%name, %src
    +
    + %obj.%name と %src のビットごとの論理積をとり、結果を %obj.%name に格納します。
    +
    +書式: bandp %res, %propobj, %src
    +
    + %propobj と %src のビットごとの論理積をとり、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    sar, sarpd, sarpi, sarp
    +(shift arithmetic right)
    +
    書式: sar %dest, %src
    +
    + %dest を %src で表された回数分算術右シフトを行った結果を %dest に格納します。
    +
    +書式: sarpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で表された回数分算術右シフトを行った結果を %obj.*name に格納します。
    +
    +書式: sarpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で表された回数分算術右シフトを行った結果を %obj.%name に格納します。
    +
    +書式: sarp %res, %propobj, %src
    +
    + %propobj を %src で表された回数分算術右シフトを行った結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    sal, salpd, salpi, salp
    +(shift arithmetic left)
    +
    書式: sal %dest, %src
    +
    + %dest を %src で表された回数分算術左シフトを行った結果を %dest に格納します。
    +
    +書式: salpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で表された回数分算術左シフトを行った結果を %obj.*name に格納します。
    +
    +書式: salpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で表された回数分算術左シフトを行った結果を %obj.%name に格納します。
    +
    +書式: salp %res, %propobj, %src
    +
    + %propobj を %src で表された回数分算術左シフトを行った結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    sr, srpd, srpi, srp
    +(shift bitwise right)
    +
    書式: sr %dest, %src
    +
    + %dest を %src で表された回数分ビット右シフトを行った結果を %dest に格納します。
    +
    +書式: srpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で表された回数分ビット右シフトを行った結果を %obj.*name に格納します。
    +
    +書式: srpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で表された回数分ビット右シフトを行った結果を %obj.%name に格納します。
    +
    +書式: srp %res, %propobj, %src
    +
    + %propobj を %src で表された回数分ビット右シフトを行った結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    add, addpd, addpi, addp
    +(add)
    +
    書式: add %dest, %src
    +
    + %dest に %src を加算し、結果を %dest に格納します。
    +
    +書式: addpd %res, %obj.*name, %src
    +
    + %obj.*name に %src を加算し、結果を %obj.*name に格納します。
    +
    +書式: addpi %res, %obj.%name, %src
    +
    + %obj.%name に %src を加算し、結果を %obj.%name に格納します。
    +
    +書式: addp %res, %propobj, %src
    +
    + %propobj に %src を加算し、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    sub, subpd, subpi, subp
    +(subtract)
    +
    書式: sub %dest, %src
    +
    + %dest から %src を減算し、結果を %dest に格納します。
    +
    +書式: subpd %res, %obj.*name, %src
    +
    + %obj.*name から %src を減算し、結果を %obj.*name に格納します。
    +
    +書式: subpi %res, %obj.%name, %src
    +
    + %obj.%name から %src を減算し、結果を %obj.%name に格納します。
    +
    +書式: subp %res, %propobj, %src
    +
    + %propobj から %src を減算し、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    mod, modpd, modpi, modp
    +(modulo)
    +
    書式: mod %dest, %src
    +
    + %dest を %src で割ったあまりを %dest に格納します。
    +
    +書式: modpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で割ったあまりを %obj.*name に格納します。
    +
    +書式: modpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で割ったあまりを %obj.%name に格納します。
    +
    +書式: modp %res, %propobj, %src
    +
    + %propobj を %src で割ったあまりを %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    div, divpd, divpi, divp
    +(real divide)
    +
    書式: div %dest, %src
    +
    + %dest を %src で実数除算し、結果を %dest に格納します。
    +
    +書式: divpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で実数除算し、結果を %obj.*name に格納します。
    +
    +書式: divpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で実数除算し、結果を %obj.%name に格納します。
    +
    +書式: divp %res, %propobj, %src
    +
    + %propobj を %src で実数除算し、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    idiv, idivpd, idivpi, idivp
    +(integer divide)
    +
    書式: idiv %dest, %src
    +
    + %dest を %src で整数除算し、結果を %dest に格納します。
    +
    +書式: idivpd %res, %obj.*name, %src
    +
    + %obj.*name を %src で整数除算し、結果を %obj.*name に格納します。
    +
    +書式: idivpi %res, %obj.%name, %src
    +
    + %obj.%name を %src で整数除算し、結果を %obj.%name に格納します。
    +
    +書式: divp %res, %propobj, %src
    +
    + %propobj を %src で整数除算し、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    mul, mulpd, mulpi, mulp
    +(multiply)
    +
    書式: mul %dest, %src
    +
    + %dest に %src を乗算し、結果を %dest に格納します。
    +
    +書式: mulpd %res, %obj.*name, %src
    +
    + %obj.*name に %src を乗算し、結果を %obj.*name に格納します。
    +
    +書式: mulpi %res, %obj.%name, %src
    +
    + %obj.%name に %src を乗算し、結果を %obj.%name に格納します。
    +
    +書式: mulp %res, %propobj, %src
    +
    + %propobj に %src を乗算し、結果を %propobj に格納します。
    +
    + 上記の命令の中で、%res をパラメータに持つ物は、res が 0 で無ければ結果を %res にも格納します。
    +
    + +
    bnot
    +(bitwise not)
    +
    書式: bnot %reg
    +
    + %reg をビットごとの真偽を逆にし、%reg に再び格納します。
    + +
    asc
    +(make ascii string)
    +
    書式: asc %reg
    +
    + %reg で表された数値に相当する1文字を作成し、それを再び %reg に格納します。
    + +
    chr
    +(cheracter code)
    +
    書式: chr %reg
    +
    + %reg で表された文字列の最初の一文字の文字コードを %reg に格納します。
    + +
    num
    +(number)
    +
    書式: num %reg
    +
    + %reg で表されたレジスタを数値に変換します。
    + +
    chs
    +(change sign)
    +
    書式: chs %reg
    +
    + %reg で表されたレジスタの数値の正負を逆にします。
    + +
    inv
    +(invalidate)
    +
    書式: inv %reg
    +
    + %reg で表されたオブジェクトを無効化します。
    + +
    chkinv
    +(invalidate)
    +
    書式: chkinv %reg
    +
    + %reg で表されたオブジェクトが無効化されていなければ %reg を真に、そうでなければ偽に設定します。
    + +
    int
    +(convert to integer)
    +
    書式: int %reg
    +
    + %reg で表されたレジスタを整数に変換します。
    + +
    real
    +(convert to real)
    +
    書式: real %reg
    +
    + %reg で表されたレジスタを実数に変換します。
    + +
    string
    +(convert to string)
    +
    書式: string %reg
    +
    + %reg で表されたレジスタを文字列に変換します。
    + +
    octet
    +(convert to octet)
    +
    書式: octet %reg
    +
    + %reg で表されたレジスタをオクテット列に変換します。
    + +
    typeof, typeofd, typeofi
    +(check type)
    +
    書式: typeof %reg
    +書式: typeofd %obj.*name
    +書式: typeofi %obj.%name
    +
    + %reg または %obj.*name または %obj.%name の型を調べ、その型を表す文字列を再び %reg または %obj.*name または %obj.%name に格納します。
    + +
    eval
    +(evaluate expression)
    +
    書式: eval %reg
    +
    + %reg で表された文字列を式として実行し、その結果を再び %reg に格納します。
    + +
    eexp
    +(execute expression)
    +
    書式: eexp %reg
    +
    + %reg で表された文字列を式として実行し、結果を捨てます。
    + +
    chkins
    +(check instance)
    +
    書式: chkins %reg, %classname
    +
    + %reg で表されたオブジェクトが、%classname で表されたクラス名のクラスのインスタンスであれば %reg に真を、そうでなければ偽を格納します。
    + +
    call, calld, calli
    +(function call)
    +
    書式: call %dest, %func(%arg1, %arg2, %arg3, ...)
    +書式: calld %dest, %obj.*name(%arg1, %arg2, %arg3, ...)
    +書式: calli %dest, %obj.%name(%arg1, %arg2, %arg3, ...)
    +
    + %func または %obj.*name または %obj.%name で表された関数オブジェクトを、%arg1, %arg2, %arg3 ... の引数で呼び出し、結果を %dest に格納します。%dest が %0 の場合は結果は ( %0 には格納されずに ) 捨てられます。
    + +
    new
    +(create new)
    +
    書式: new %dest, %func(%arg1, %arg2, %arg3, ...)
    +
    + %func で表されたクラスオブジェクトを、%arg1, %arg2, %arg3 ... の引数で構築し、結果を %dest に格納します。
    + +
    gpd, gpds
    +(get property direct)
    +
    書式: gpd %dest, %obj.*name
    +書式: gpds %dest, %obj.*name
    +
    + %obj で表されたオブジェクトから *name で表されたメンバを参照し、その値を %dest にコピーします。
    + gpd はプロパティハンドラの呼び出しを伴いますが、gpds はプロパティハンドラを呼び出さず、プロパティオブジェクト自体を取得します。
    + +
    gpi, gpis
    +(get property indirect)
    +
    書式: gpi %dest, %obj.%name
    +書式: gpis %dest, %obj.%name
    +
    + %obj で表されたオブジェクトから %name で表されたメンバを参照し、その値を %dest にコピーします。
    + gpi はプロパティハンドラの呼び出しを伴いますが、gpis はプロパティハンドラを呼び出さず、プロパティオブジェクト自体を取得します。
    + +
    spd, spde, spdeh, spds
    +(set property direct)
    +
    書式: spd %obj.*name
    +書式: spde %obj.*name
    +書式: spdeh %obj.*name
    +書式: spds %obj.*name
    +
    + %obj で表されたオブジェクトの *name で表されたメンバに、%src の値を代入します。
    + spd は通常のアクセスを行いますが、メンバが存在しない場合は例外が発生します。
    + spde はメンバが存在しなければメンバを新規に作成します。
    + spdeh はメンバを隠しメンバとして設定します。現バージョンでは意味を持ちません。
    + spds はプロパティハンドラを呼び出さず、プロパティオブジェクト自体を置き換えます。
    + +
    spi, spie, spis
    +(set property indirect)
    +
    書式: spi %obj.%name
    +書式: spie %obj.%name
    +書式: spis %obj.%name
    +
    + %obj で表されたオブジェクトの %name で表されたメンバに、%src の値を代入します。
    + spi は通常のアクセスを行いますが、メンバが存在しない場合は例外が発生します。
    + spie はメンバが存在しなければメンバを新規に作成します。
    + spis はプロパティハンドラを呼び出さず、プロパティオブジェクト自体を置き換えます。
    + +
    getp
    +
    書式: getp %reg, %propobj
    +
    + %propobj で表されたプロパティオブジェクトの getter を動作させ、プロパティの値を得て、%reg に代入します。単項 '*' 演算子の動作を行います。
    +
    +
    setp
    +
    書式: setp %propobj, %reg
    +
    + %propobj で表されたプロパティオブジェクトの setter を動作させ、%reg の値を設定します。単項 '*' 演算子の動作を行います。
    +
    +
    deld, deli
    +(delete member)
    +
    書式: deld %reg, %obj.*name
    +書式: deli %reg, %obj.%name
    +
    + %obj で表されたオブジェクトの *name または %name で表されたメンバを削除します。
    + 削除が成功したかどうかの真偽を %reg に格納しますが、%reg が %0 の場合は結果を捨てます。
    + +
    srv
    +(set result value)
    +
    書式: srv %reg
    +
    + %reg の値を関数の戻り値とします ( 関数の戻り値は %reg で表された値になります )。
    + +
    ret
    +(return)
    +
    書式: ret
    +
    + 呼び出し元に戻ります。
    + +
    entry
    +(enter try block)
    +
    書式: entry ip, %reg
    +
    + 例外保護されたブロックに入ります。例外が発生した場合、ip にジャンプし、例外オブジェクトを %reg に設定します。
    + +
    extry
    +(exit from try block)
    +
    書式: extry
    +
    + 例外保護されたブロックから出ます。
    + +
    throw
    +(throw exception object)
    +
    書式: throw %reg
    +
    + %reg で表されたオブジェクトを例外オブジェクトとして投げます。
    + +
    chgthis
    +(change this)
    +
    書式: chgthis %dest, %src
    +
    + %dest で表されたオブジェクトのクロージャ部分を、%src で示されたオブジェクトに変更します。
    + +
    global
    +(get global object)
    +
    書式: global %dest
    +
    + グローバルオブジェクトを %dest に格納します。
    + +
    addci
    +(add class instance information)
    +
    書式: addci %dest, %info
    +
    + %dest で表されるオブジェクトのクラスインスタンス情報に %info を追加します。
    +
    regmember
    +(register members)
    +
    書式: regmember
    +
    + クラスのメンバを "this" オブジェクトに登録します。内部的に用いられます。
    + + +
    debugger
    +(call debugger)
    +
    書式: debugger
    +
    + 実行を中断し、デバッガを呼び出します。現バージョンの実装では、TJS2デバッガではなく、ネイティブなデバッガを呼び出します。
    +
    + + + + diff --git a/docs/tjs2doc/contents/while.html b/docs/tjs2doc/contents/while.html new file mode 100644 index 0000000..f1af9bc --- /dev/null +++ b/docs/tjs2doc/contents/while.html @@ -0,0 +1,108 @@ + + + + + + + while ステートメント + + + + + + + + +

    while ステートメント +

    + while ステートメントは、指定された条件が真である間、ステートメントまたはブロックを繰り返し実行するものです。ループを作成することができます。
    + 構文は以下の通りです。
    + +
    +while(expression)
    +    ステートメントまたはブロック
    +
    +
    + +
    + 「ステートメントまたはブロック」は、条件式である expression が真である限り、繰り返し実行されます。
    +
    + 動作としては、
    +(1) まず、expression を評価し、偽であれば、ステートメントまたはブロックは実行されない
    +(2) ステートメントまたはブロックを実行する
    +(3) expression を評価し、その結果が真ならば (2) へ、そうでなければ while ステートメント終了
    +
    + つまり、最初から expression が偽の場合はステートメントまたはブロックは実行されません。また、常に expression が評価されるわけではなく、ステートメントまたはブロックを一回実行するごとに expression の真偽がチェックされます。
    + また、(3) の時点で、ブロックの場合はいったんブロックから抜けます ( 変数などは消去されると言うこと )。
    + +
    +例:
        while(func()) ;
    +    /* func() が真の間、何もしないで func() を評価し続ける */
    +
    +    while(func()) i++;
    +    /* func() が真の間、i++ を実行し続ける */
    +
    +    while(i < 5) // i が 5 より小さい間
    +    {
    +        func(i);
    +        i++;
    +    }
    +
    +
    + +
    +

    break +

    + break ステートメントは、while を途中で終了させたい場合に記述します。
    + +
    +例:
        while(true) // break が実行されない限りは無限ループ
    +    {
    +        if(func()) break; // func() が真ならばwhile終了
    +        func2(); // ↑で break が実行されなければここにくる
    +    }
    +    // break が実行されると、ここにくる
    +
    +
    + +
    +

    continue +

    + continue ステートメントは、途中で、条件式の評価からやり直したいときに記述します。
    + continue が実行されると、(3) に実行が移ります。
    + +
    +例:
        var i = 0;
    +    while(i < 5)
    +    {
    +        if(func1()) continue;
    +        // func1() が true ならば、i < 5 の条件式チェックがされ、真ならば
    +        // またブロックの先頭から実行される
    +        func2();
    +        i++;
    +    }
    +
    +
    + +
    +

    do〜while +

    + do〜while ステートメントは、while ステートメントと同じですが、最初に条件式のチェックを行いません。
    + 構文は以下の通りです。
    + +
    +do
    +    ステートメントまたはブロック
    +while(expression);
    +
    +
    + +
    + 最初に条件式をチェックしないため、do の時点で条件式が偽でも「ステートメントまたはブロック」は実行されます。
    + いったん「ステートメントまたはブロック」が実行されれば条件式がチェックされ、偽ならばループを抜け、真ならば再びステートメントまたはブロックが実行され、これを繰り返します。
    +
    + + + + diff --git a/docs/tjs2doc/contents/with.html b/docs/tjs2doc/contents/with.html new file mode 100644 index 0000000..aa00400 --- /dev/null +++ b/docs/tjs2doc/contents/with.html @@ -0,0 +1,137 @@ + + + + + + + with ステートメント + + + + + + + + +

    with ステートメント +

    + with ステートメントは、. (ドット) 演算子における左側 (オブジェクト) を省略した場合に参照するオブジェクトを指定するものです。
    +
    + 構文は以下の通りです。
    + +
    +with(expression)
    +    ステートメントまたはブロック
    +
    +
    + +
    + 「ステートメントまたはブロック」内で、左側が省略された . (ドット)演算子が使用された場合、その . (ドット)演算子が参照するオブジェクトは、with ステートメントの expression で指定したオブジェクトになります。
    +
    + +
    +例:
        with(obj) .member = 1; // obj.member = 1; と同じ
    +
    +    with(obj)
    +    {
    +        .member1 = 1; // obj.member1 に 1 を代入
    +        .member2 = 2; // obj.member2 に 2 を代入
    +        .member3++; // obj.member3 をインクリメント
    +        .method(); // obj.method を呼び出す
    +    }
    +
    +
    + +
    + このステートメントは特に、オブジェクトに大量のプロパティを設定したり、連続してメソッドを呼ぶ際に、タイピングを減らすことができます。
    +
    + たとえば
    +
    + +
    +    var object = new Foo();
    +    object.setPos(0, 0);
    +    object.setSize(100, 100);
    +    object.name = "名前無し";
    +    object.color = 0xffffffff;
    +
    +
    + +
    + のようなスクリプトを以下のように書くことができます。
    +
    + +
    +    var object = new Foo();
    +    with(object)
    +    {
    +        .setPos(0, 0);
    +        .setSize(100, 100);
    +        .name = "名前無し";
    +        .color = 0xffffffff;
    +    }
    +
    +
    + +
    +
    +

    with ステートメントとオブジェクト +

    + with ステートメントで指定した expression は、with が実行される最初に1回だけ評価され、あとはそれを参照するだけになります。
    +
    + たとえば、
    +
    + +
    +this.dic = %[];
    +with(this.dic)
    +{
    +    .member = 1; // this.dic.member に 1 を代入
    +    this.dic = 0; // dic に何か別の物を代入
    +    .member = 2; // this.dic.member に 2 を代入
    +}
    +
    +
    + +
    + と書いても、2回目の .member への代入は成功するでしょう。with が実行される最初の状態で this.dic が評価され、あとはその評価された結果を用いているからです。毎回 this.dic を評価する訳ではありません。
    +
    + 評価は最初の1回だけのため、何回もオブジェクトを参照するような用途では、オブジェクトを参照するためのコードが毎回生成されるようなことがなくなり、高速になる場合があります。
    +
    + 上記の例は以下と等価のコードが生成されると考えることが出来ます。
    +
    + +
    +this.dic = %[];
    +{
    +    var 無名の特別なローカル変数 = this.dic;
    +    無名の特別なローカル変数.member = 1;
    +    this.dic = 0;
    +    無名の特別なローカル変数.member = 2;
    +}
    +
    +
    + +
    + with ステートメントでは、左側が省略された . (ドット) 演算子でしかアクセスできない、無名の特別なローカル変数に expression の評価の結果が代入され、以降、左側が省略された . (ドット) 演算子では、その「無名の特別なローカル変数」が参照されるようになります。
    + expression を評価した結果が保持されるスコープも、上記の「無名の特別なローカル変数」のローカル変数スコープと同じとみなすことができます ( with ステートメントが影響を与える範囲もその通りとなります )。
    +
    + +

    with ステートメント外での . 演算子 +

    + with ステートメント外で . (ドット) 演算子の左側が省略された場合、グローバルオブジェクトを参照することになります。
    + たとえば、with ステートメント外で
    +
    +.foo = 1;
    +
    + と記述すると
    +
    +global.foo = 1;
    +
    + と同じ意味になります。
    +
    + + + + diff --git a/docs/tjs2doc/index.html b/docs/tjs2doc/index.html new file mode 100644 index 0000000..83ef2fc --- /dev/null +++ b/docs/tjs2doc/index.html @@ -0,0 +1,10 @@ + + + + + + +(自動的にジャンプしない場合は下記のリンクをたどってください)
    +インデックスへ + +