[popMenuScr]
property spriteNum
property menuContents,maxLine,selNum
property lineHi,orgLoc,menuSt,mLineOld
property memName,marker,triMarker,triPos
on beginSprite
set menuSt = 0
set mLineOld = 0
set memName = the name of the member of sprite spriteNum
-- 選択マーカー
set marker = getMarker(spriteNum)
set triMarker = getTriMarker(spriteNum)
set triPos = getTriPos(spriteNum)
-- メニューの内容
set menuContents = getMenuContents(spriteNum)
put the number of lines of menuContents into maxLine
-- 最初に選ばれているのは何番目か
set selNum = getFirstSelNum(spriteNum)
if selNum <> 0 then
put line selNum of menuContents into member memName
put triMarker into char triPos of member memName
else
set selNum = 1
end if
put the height of member memName into lineHi
put the loc of sprite spriteNum into orgLoc
end
on prepareFrame
case menuSt of
1:
put orgLoc - point(0,lineHi*(selNum-1)) into _loc
set the loc of sprite spriteNum = setInStage(_loc,0,lineHi*maxLine)
put menuContents into member memName
put marker into char 1 of line selNum of member memName
set menuSt = 2
3:
closeMenu
action spriteNum,selNum
4:
closeMenu
otherwise nothing
end case
end
on closeMenu
set the loc of sprite spriteNum = orgLoc
put line selNum of menuContents into member memName
put triMarker into char triPos of member memName
set menuSt = 0
end
on mouseDown
set menuSt = 1
end
on mouseWithIn
if menuSt <> 0 then
put the mouseLine into _line
if _line >= 1 and _line <= maxLine then
if _line <> mLineOld then
hilite line _line of member memName
set mLineOld = _line
end if
end if
end if
end
on mouseLeave
hilite line (maxLine+1) of member memName
set mLineOld = maxLine+1
end
on mouseUp
put the mouseLine into _line
if _line >= 1 and _line <= maxLine then
put the mouseLine into selNum
set menuSt = 3
else
set menuSt = 4
end if
end
on mouseUpOutside
set menuSt = 4
end
|
[startMovie]
on prepareMovie
global gStageWi,gStageHi
set gStageWi = the stageRight - the stageLeft
set gStageHi = the stageBottom - the stageTop
put " " into member "result"
end
-- 画面内に納める
on setInStage _loc,_w,_h
global gStageWi,gStageHi
if getAt(_loc,1) < 4 then setAt _loc,1,4
if getAt(_loc,2) < 4 then setAt _loc,2,4
if getAt(_loc,1)+_w+4 > gStageWi then setAt _loc,1,gStageWi-_w-4
if getAt(_loc,2)+_h+4 > gStageHi then setAt _loc,2,gStageHi-_h-4
return _loc
end
on getMarker _spriteNum
case _spriteNum of
7:return "・"
8:return " "
end case
end
on getTriMarker _spriteNum
case _spriteNum of
7:return "▼"
8:return " "
end case
end
on getTriPos _spriteNum
case _spriteNum of
7:return 6
8:return 5
end case
end
on getMenuContents _spriteNum
set menuContents = ""
case _spriteNum of
7:
-- "全角スペース&方向の名前&半角スペース・・・・"
put " 上面図 " & return after menuContents
put " 左面図 " & return after menuContents
put " 前面図 " & return after menuContents
put " 右面図 " & return after menuContents
put " 後面図 " & return after menuContents
put " 底面図 " after menuContents
return menuContents
8:
repeat with i = 5 to 22
if i <= 9 then
put " " & i into _n
else
put i into _n
end if
put " " & _n & "個 " & RETURN after menuContents
end repeat
delete the last Char of menuContents
return menuContents
end case
end
on getFirstSelNum _spriteNum
case _spriteNum of
7:
put the name of the member of sprite 6 into _picName
case _picName of
"上面図":return 1
"左面図":return 2
"前面図":return 3
"右面図":return 4
"後面図":return 5
"底面図":return 6
end case
8:
put " (答え)" into member the memberNum of sprite 8
return 0
end case
end
on action _spriteNum,_num
case _spriteNum of
7:
case _num of
1:put "上面図" into _picName
2:put "左面図" into _picName
3:put "前面図" into _picName
4:put "右面図" into _picName
5:put "後面図" into _picName
6:put "底面図" into _picName
end case
set the member of sprite 6 = member _picName
8:
case _num of
12:
beep
put "それが違うんだなぁ・・・" into member "result"
13:put "大正解!赤い立方体が16個と外側の青い立方体がツ
1個の計17個。" into member "result"
otherwise
beep
put "違います。" into member "result"
end case
end case
end
|