질문과 답변

Extra Form
함수설명
$la_delay
$lb_delay
$lc_delay
$ld_delay
$le_delay
$lf_delay
$lg_delay
인풋된 스킬 단축 아이콘의 순서이며
255 * (현제 감소중인 해당 스킬의 스킬딜래이 / 해당 스킬의 원래 스킬 딜래이)의
값이 각각 들어가 있습니다.(실시간 업데이트)
 
이값들을 opacity 로 하여 스킬을 사용하고 딜레이타임이 생길 때
'Cool time'이라는 아이콘을 원래 스킬 아이콘 위에 띄워줄 의도였습니다만,
제가 짠 것에서는 스킬 하나당 각각의 cooltime 아이콘이 생기는게 아니더군요
처음부터 맵 상단 왼쪽에 coottime이라는 아이콘이 있을 뿐만 아니라,
a스킬을 사용하고 cooltime 아이콘이 생겼다 사라졌다고 가정했을때,
b스킬을 사용하면 b스킬에 아이콘이 생길뿐만 아니라 a스킬에 생겼다 사라진
아이콘이 다시 등장하고 b스킬의 아이콘과 동시에 투명해집니다...
제가원하는건 이게아니라 기타 게임들과 같이 스킬마다 독립적으로 쿨타임 아이콘이 생겼다
지워지는 것인데 말이죠;;ㅠ
어떻게 수정해야 할 지 도와주시면 감사하겠습니다.
그래픽쪽은 아직도..영;; ㅠ

class Scene_Map 
  alias aacthud_main main
  def main
    @ct = Cooltime.new
    aacthud_main    
    @ct.dispose
    @ct = nil
  end 
   
  alias aacthud_update update
  def update
    aacthud_update
    @ct.update
  end
end
 
class Cooltime < Sprite
  include SkillIcon # Rect값이 정의되어있음
  def initialize
    super
    self.bitmap = Bitmap.new(644,482)
    ctbitmap = RPG::Cache.icon('CoolTime')
    self.bitmap.blt(0,0, ctbitmap, Rect.new(0,0,644,482))
    self.x = 0
    self.y = 0   
    self.z = 3020
    self.opacity = 255
  end
 
  def update
    super
    ctupdate
  end
 
  def ctupdate
    return if self.bitmap.disposed?
    bitmap = RPG::Cache.icon('CoolTime')
    if $la_delay >= 0
      self.opacity = $la_delay
      self.bitmap.blt(0, 0, bitmap, RECT_A)
    end
    if $lb_delay >= 0
      self.opacity = $lb_delay
      self.bitmap.blt(0, 0, bitmap, RECT_B)
    end
    if $lc_delay >= 0
      self.opacity = $lc_delay
      self.bitmap.blt(0, 0, bitmap, RECT_C)
    end
    if $ld_delay >= 0
      self.opacity = $ld_delay
      self.bitmap.blt(0, 0, bitmap, RECT_D)
    end
    if $lf_delay >= 0
      self.opacity = $lf_delay
      self.bitmap.blt(0, 0, bitmap, RECT_F)
    end
    if $lg_delay >= 0
      self.opacity = $lg_delay
      self.bitmap.blt(0, 0, bitmap, RECT_G)
    end
    if self.opacity == 0
      dispose
    end
   
  end
 
  def dispose
    if self.bitmap != nil
    self.bitmap.dispose
    end
  end
 
end#c

Who's Lighna

profile

스트레스 받는다.

Comment '10'
  • ?
    허걱 2012.06.04 01:37

    self.opacity = n 일 경우 전체의 투명도가 설정됩니다. (blt 부분만의 투명도가 아닌게 되죠)

    위의 말이 이해된다면 왜 다 같이 그려지는지 알 수 있을듯 하네요.

    왼쪽 위에 아이콘이 그려지는건 initialize 부분에서 그려줬기 때문입니다.


    개인적으로는...
    Cooltime 클래스를 Sprite로 받지 말고 Cooltime 내부의 a ~ g 까지의 sprite 를 만들어서 관리해 주는 식으로 하는게 좋을듯 하네요.

    예를들어서 아래와 같은 식으로...

    class CooltimeManager
       def initialize
         @cooltime = []
         7.times {|i| @cooltime.push(Cooltime.new(i)) }
       end

      def update

        @cooltime.each {|ctime| ctime.update }

      end

      def dispose

        @cooltime.each {|ctime| ctime.dispose }

      end

    end

    class Cooltime < Sprite
       def initialize(type)
         @type = type
         rect = [RECT_A, RECT_B, ... ][type]

         super(Viewport.new(rect.x, rect.y, rect.width, rect.height) )
         self.x, self.y = rect.x, rect.y
         self.bitmap = RPG::Cache.icon('CoolTime')
        end
       def update
         self.opacity = [0, [$la_delay, $lb_delay, ...][@type] ].max
       end
    end

  • profile
    Lighna 2012.06.04 03:43
    Rect = [recta,rectb,rectc,...][2]이라면
    Rect는 rectc값이 되는거군요..? 책에서만보던문법이 보여서 신기하네요..super부분은 잘 모르겠지만 어떻게해야할지 대강 감히 잡힙니다. 친절한답변 감사합니다~
  • ?
    허걱 2012.06.04 09:17

    super 같은 경우는 상위 클래스에 메소드가 정의되어 있을 경우 상위클래스의 메소드를 호출할 때 사용할 수 있습니다...라고 하면 좀 어렵게 보이긴 하는데...
    위에서는 잘못 썼는데...예를들어보면,


    Cooltime < Sprite 를 보면 Cooltime 클래스는 Sprite를 상속받은게 되죠. (Sprite 는 Cooltime 의 상위클래스)
    Sprite 의 initialize메소드의 경우... 지금 보니깐 viewport를 받아주네요.


    위의 경우 Cooltime 에서 initialize 라는 메소드가 재정의 되어 버리게 됩니다.

    initialize 라는게 Sprite 에서 정의되어 있는데 상속받은 Cooltime 에서 다시 정의 해주니깐...


    그래서 상위 클래스의 같은 메소드를 부르고 싶다고 할 경우는
    super(viewport) 등과 같이 super(인자) 의 형식으로 적어줄 경우 상위 클래스의 메소드를 실행하게 되죠.
    super(인자) 의 경우 인자가 없으면 super 만 적어주면 되고 아니라면
    상위 클래스의 메소드에서 필요한 인자를 적어주면 됩니다.

    위에서 잘못 적었다고 했는데
    super(rect.width, rect.height) 가 아니라 super() 혹은 super(viewport) 를 적어줘야 하겠네요.
    (지금 보니깐 그냥 적기만 해서 Bitmap 과 Sprite 를 헷갈렸나 보네요..ㅎㅎ;;)

  • profile
    Lighna 2012.06.04 12:19
    아하.. Rect의 가로길이와 세로길이가 왜 들어가는 줄 몰랐었는데.. 잘못적은거였군요 !.!
  • profile
    Lighna 2012.06.04 15:32

    추가로 질문드립니다 ㅜ dispose 메소드는 self.dispose 를 해야하나요 아니면 self.bitmap.dispose를 해야하나요? 그리고 @cooltime= Cooltime.new(3)이라고 한다면 Cooltime class내부에 있는 initialize(value)<-이곳에 있는 value값에 들어가는건가요..?

  • profile
    습작 2012.06.04 15:52
    그렇습니다.^^
  • ?
    허걱 2012.06.04 16:13
    먼저 value 에 대해서는 말한게 맞습니다.
    Cooltime.new(3) 을 봤을 때... 루비에서 new 라는 메소드를 사용할 경우 해당 클래스의 initialize 라는 함수를 먼저 호출하도록 되어 있습니다. 즉, Cooltime.new(3) 이라고 해주면 Cooltime 클래스의 initialize(value) 라는 함수의 인자값으로 value 부분의 3이 되는거죠.

    그리고 dispose 의 경우 Sprite 클래스에서는 기본적으로 내부 Bitmap (self.bitmap) 까지 dispose 해주는걸로 알고있긴 하지만... 개인적으로는 self.bitmap.dispose 와 self.dispose 까지 같이 사용해 주고 있네요...안하면 뭔가 껄끄러운듯한 느낌이 있어서..ㅎㅎ;;; (둘중 하나만 하고 싶으면 self.dispose 를 사용하면 됩니다.)
  • profile
    습작 2012.06.04 16:21
    아닛! 유령이신가, 폰이신가!
    허걱님, Lighna님 질문과는 상관 없는 이야기 이긴 합니다만,
    RGSS2에서 unicode encoding 하는 방법에 대해서 알려주실 수 있으신지요?
    ruby 1.8x에서는 unicode를 지원하지 않는다고 들었는데, 1.8x에서 unicode encode 하는 방법을 검색을 해봐도 제가 미숙해서인지 잘 모르겠더군요. ;ㅅ; )
  • ?
    허걱 2012.06.04 22:25

    자세한건 저도 잘 모르겠는데... 전에 조합한글 만들면서 알았던건 있습니다.
    [44912].pack('U*')
    위와 같이 해줄 경우 유니코드로 패킹할 수 있더군요.
    [배열].pack('U*') 에서 U 가 나타내는것이 UTF-8 로 알고 있습니다.
    UTF-8이 유니코드 형식을 말하니깐 위와 같은 방식으로 하는게 맞을듯 하네요.^^;

  • profile
    습작 2012.06.04 23:29
    좀 더 공부해 봐야 할 것 같네요. 답변 감사합니다.^^

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 13235
RMXP RMXP 스프라이트 관련 질문..ㅜ 10 Lighna 2012.06.04 1425
기타 컨스 Classic 스프라이트 관련 질문. 5 Lighna 2012.06.03 3622
RMVX tankentai sbs system 전투시 스킬선택창 사이즈 축소 관련 질문입니다. 1 톰소여동생 2012.06.03 1399
RMVX 시스템 윈도우에서 글씨를 중간에 배치 관련 질문입니다. 3 톰소여동생 2012.06.03 1276
RMVX 폰트의 크기유지, 1 톰소여동생 2012.06.03 1422
RMVXA 맵칩(최대512) 사이즈 늘리기 2 Tattoo 2012.06.03 1925
RMVX 적hp 볼수 있는 방법 없나요? ㅜㅜ 17 빠세 2012.06.03 1452
RMXP Blizz - abs 2.84v와, HUD를 호환, Blizz abs 이벤트 기능들을 알고 싶습니다. Nto'ze 2012.06.03 2180
RMVXA 특정 상태 판정 조건문 작성 3 쿠쿠밥솥 2012.06.03 1535
RMXP RMXP 'super'관련 질문 9 Lighna 2012.06.02 1434
RMVX 큰 그래픽을 어떻게 설정해야되나요?? 2 file 둔한 2012.06.02 1277
RMVX <특정상태에서 스킬 사용 금지방법> 질문입니다. 3 톰소여동생 2012.06.01 1535
RMVX 전투 후 이어지는 배경음 스크립트 5 크리티컬 2012.06.01 1681
RMXP KGC의 overdrive를 GTBS에 적용하고자 합니다. 1 아이리 2012.06.01 698
RMVX 무기에 따라 스킬을 사용하게 하고 싶은데요. 4 톰소여동생 2012.05.31 1217
RMXP 아이템을 착용하면 속성 저항값이 저하. 후루룹라면 2012.05.31 1597
RMVX 오메가 퀘스트라는 스크립트에 잘 모르겠는게 있는데 좀 알려주세요 ㅠㅠ; 1 아만자만즤 2012.05.30 1027
RMVXA vx ace 스크립트 관련 질문 입니다 3 네스퀵 2012.05.30 1687
기타 루비언어, Array 관련 질문입니다 6 TheEK 2012.05.30 994
RMVX 직접만든 캐릭터가 이상하게작게나와요. 6 file 아만자만즤 2012.05.29 1413
Board Pagination Prev 1 ... 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 ... 517 Next
/ 517