File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -17,6 +17,25 @@ let $selectedElementId: string = "";
1717 */
1818let $validValue : boolean = false ;
1919
20+ /**
21+ * @description アンカー位置の割合
22+ * Anchor position ratio
23+ *
24+ * @type {Record<string, [number, number]> }
25+ * @private
26+ */
27+ export const $anchorFrac : Record < string , [ number , number ] > = {
28+ "top-left" : [ 0 , 0 ] ,
29+ "middle-left" : [ 0.5 , 0 ] ,
30+ "bottom-left" : [ 1 , 0 ] ,
31+ "top-center" : [ 0 , 0.5 ] ,
32+ "middle-center" : [ 0.5 , 0.5 ] ,
33+ "bottom-center" : [ 1 , 0.5 ] ,
34+ "top-right" : [ 0 , 1 ] ,
35+ "middle-right" : [ 0.5 , 1 ] ,
36+ "bottom-right" : [ 1 , 1 ]
37+ } ;
38+
2039/**
2140 * @description ConvertMovieClipModalの選択した中心点のElement IDを取得
2241 * Get the selected center point Element ID of ConvertMovieClipModal
Original file line number Diff line number Diff line change 11import type { Character } from "@/core/domain/model/Character" ;
22import type { IPosition } from "@/interface/IPosition" ;
33import type { IBounds } from "@/interface/IBounds" ;
4- import { $getSelectedElementId } from "../ConvertMovieClipModalUtil" ;
5-
6- /**
7- * @description アンカー位置の割合
8- * Anchor position ratio
9- *
10- * @type {Record<string, [number, number]> }
11- * @private
12- */
13- const $anchorFrac : Record < string , [ number , number ] > = {
14- "top-left" : [ 0 , 0 ] ,
15- "middle-left" : [ 0.5 , 0 ] ,
16- "bottom-left" : [ 1 , 0 ] ,
17- "top-center" : [ 0 , 0.5 ] ,
18- "middle-center" : [ 0.5 , 0.5 ] ,
19- "bottom-center" : [ 1 , 0.5 ] ,
20- "top-right" : [ 0 , 1 ] ,
21- "middle-right" : [ 0.5 , 1 ] ,
22- "bottom-right" : [ 1 , 1 ]
23- } ;
4+ import {
5+ $anchorFrac ,
6+ $getSelectedElementId
7+ } from "../ConvertMovieClipModalUtil" ;
248
259/**
2610 * @description ConvertMovieClipModalの選択した中心点に合わせてDisplayObjectの位置を計算
Original file line number Diff line number Diff line change @@ -8,6 +8,10 @@ import { execute as convertMovieClipModalHideUseCase } from "./ConvertMovieClipM
88import { execute as externalLibraryAddNewMovieClipUseCase } from "@/external/controller/application/ExternalLibrary/usecase/ExternalLibraryAddNewMovieClipUseCase" ;
99import { execute as convertMovieClipModalCalcPositionService } from "../service/ConvertMovieClipModalCalcPositionService" ;
1010import { execute as screenAreaCalcSelectedBoundsService } from "@/screen/application/ScreenArea/service/ScreenAreaCalcSelectedBoundsService" ;
11+ import {
12+ $anchorFrac ,
13+ $getSelectedElementId
14+ } from "../ConvertMovieClipModalUtil" ;
1115
1216/**
1317 * @description 指定の名前のMovieClipを作成して、選択中のDisplayObjectを配置
@@ -128,20 +132,28 @@ export const execute = async (event: PointerEvent): Promise<void> =>
128132 newCharacter . startFrame = startFrame ;
129133 newCharacter . endFrame = endFrame ;
130134
131- // todo: xy position
132-
133135 const currentExternalLayer = new ExternalLayer (
134136 workspace ,
135137 movieClip ,
136138 layer
137139 ) ;
138140
139- await currentExternalLayer . addCharacter ( new ExternalCharacter (
140- workspace ,
141- movieClip ,
142- layer ,
143- newCharacter
144- ) ) ;
141+ const newExternalCharacter = await currentExternalLayer
142+ . addCharacter ( new ExternalCharacter (
143+ workspace ,
144+ movieClip ,
145+ layer ,
146+ newCharacter
147+ ) ) ;
148+
149+ // 中心点に合わせて座標を移動
150+ const [ ax , ay ] = $anchorFrac [ $getSelectedElementId ( ) as keyof typeof $anchorFrac ] ;
151+ await newExternalCharacter . setX (
152+ bounds . xMin + Math . abs ( bounds . xMax - bounds . xMin ) * ax
153+ ) ;
154+ await newExternalCharacter . setY (
155+ bounds . yMin + Math . abs ( bounds . yMax - bounds . yMin ) * ay
156+ ) ;
145157
146158 // モーダルを非表示にする
147159 convertMovieClipModalHideUseCase ( ) ;
You can’t perform that action at this time.
0 commit comments