목록Season 1/플래시 (105)
CODEONWORT
스핀 블러는 액션스크립트로 이미 만들었지만 품질이 넘 구려서 픽셀 벤더로 짰는데 만들고보니 for루프를 써버려서 플래시에서 못 씀 ㅋ ㅋ 아 제발 for루프 지원 좀!!! steps가 클 수록 더 많이 꼬이지만 당연히 연산량이 많아져서 속도가 푹푹 떨어지므로 그만 올리고 precision을 높이면 비슷한 결과가 나오지만 품질이 떨어진다는 말이죠 잠깐 이거 스핀 블러 아니잖아 내가 멀 만든겨
WTFPL 하에 배포합니다. BitmapSpriteSource, BitmapSprite은 그대로고 (몇 가지 쓰잘데기 없는 속성을 추가하긴 했다) BitmapClipSource, BitmapClip은 무비클립 구조를 재귀적으로 분석하여 무비클립처럼 다룰 수 있도록 만들었다. 예를 들어 무비클립 mc에 인스턴스 이름이 aa인 자식 무비클립이 있으면 var src:BitmapClipSource = new BitmapClipSource(mc) var ch:BitmapClipSource = src.child("aa") 이렇게 aa에 대한 BitmapClipSource 객체에 접근할 수 있다. 아직 문제가 많다.
저번에도 올렸지만 Nyarineko의 transition을 포크했었다. forked from: transition - wonderfl build flash online 구면좌표계를 이용해서 3D 버전으로 다시 포크했지만 transition 3D - wonderfl build flash online 원하는 모양이 나오지 않았다. wonderwhyer가 It needs to be rotatable :) 이라고 해서 돌려봤는데 transition 3D rotatable - wonderfl build flash online 파워 렉ㅋ ────────────추가──────────── 그러자 푸붉님이 Extremely Fast Line Algorithm 머시기로 최적화를 했고 with EFLA - wonderfl ..
다음과 같이 코드를 준비하자. mc.alpha = 0.5 // 사각형이 그려진 표시 객체 var src:BitmapData = new BitmapData(600, 300, true, 0x0) src.draw(mc, null, mc.transform.colorTransform) var dst:BitmapData = new BitmapData(600, 300, true, 0x0) dst.perlinNoise(300, 300, 8, 0, true, true) addChild(new Bitmap(dst)) src는 투명 비트맵이며 여기에 반투명한 표시 객체를 그렸다. 투명 비트맵을 하나 더 만들고 펄린 노이즈를 그려둔다. 이제 다음 코드를 추가하면 dst.copyPixels(src, src.rect, new P..
이것도 WTFPL 하에 배포합니다 BitmapData와 Bitmap의 관계에 착안해서 클래스를 BitmapSpriteSource, BitmapSprite로 나눴다. 한 무비클립으로부터 소스를 추출해서 BitmapSpriteSource에 담고 BitmapSprite로 그걸 표시한다. 일종의 경량(flyweight) 패턴이다. 기존의 gotoAndStop, nextFrame, prevFrame 같은 건 다 빼버리고, 표시 전환은 goto 메서드로만 한다. 스프라이트의 한 조각만을 보여준다는 개념이며 작동 결과는 무비클립의 gotoAndStop과 동일하다. 대상 무비클립에 적용된 변환도 제대로 따른다. var src:BitmapSpriteSource = new BitmapSpriteSource(mc) var ..
렌더링 속도를 위해 메모리를 낭비하고 턴을 마치겠다 (..) 무비클립의 모든 프레임을 순회하며 프레임마다 비트맵데이터를 준비하여 그린다. 무비클립의 프레임이 12개면 비트맵데이터도 12개다. 이 비트맵데이터들을 BitmapData 벡터에 담는다. 이제 Bitmap 객체를 생성하고 표시하고 싶은 프레임에 대응하는 비트맵데이터를 bitmapData 속성에 지정해주면 끝난다. 간단하게 구현해봤지만 문제점이 많으니 참고용으로만 쓸 것. WTFPL 하에 배포합니다 // x, y 좌표를 원래 무비클립의 위치와 맞추면 정확히 겹친다 // 이름으로 보면 Bitmap을 상속할 것 같지만 사실은 Sprite를 상속한다 // 뒤의 두 인수는 Bitmap 생성자의 pixelSnapping, smoothing와 일치하며 굳이 ..
forked from: transition - wonderfl build flash online 처음에는 파란 광선 필터를 먹여봤다가 선 자체의 색상을 수정했다 forked from: 簡単な集中線 - wonderfl build flash online 예전에 만든 부스터 효과가 생각나서 포크해봤다 ㅋㅋ 역시 포크는 원더플의 묘미!! Lightning 1 - wonderfl build flash online 이것도 나중에 포크해야지
플래시 플레이어 창의 크기를 변경하면 resize 이벤트가 전달되는데, stage.scaleMode가 "noScale" 이어서 표시 영역의 크기는 변하지 않는다는 조건이 깔려있어야 이 이벤트가 전달된다. 그러니까 플래시 플레이어 영역을 다 채우기 위해 exactFit으로 설정하거나 표시 영역이 다 보이면서 최대한 크게 그리는 showAll으로 설정하면 resize 이벤트를 받을 수 없다. (noBorder는 필요가 없을 것 같아서 논외 -_-a) 하지만 stage.scaleMode = "noScale"으로 설정하고 문서 자체의 scaleX, scaleY를 조절해버리면 resize 이벤트도 받고 exactFIt, showAll 비율도 흉내낼 수 있다. import flash.events.Event stag..
Matrix 클래스에 translate, rotate, scale는 있으면서 왜 skew(shear)는 없나 -.- 간단하게 만들었다. M은 층밀림 변환을 적용할 행렬, x는 가로로 밀리는 각도, y는 세로로 밀리는 각도다. (-90 초과 90 미만인 수만 쓸 것!) degree가 true면 x,y는 육십분법, false면 호도법의 값이다. 예제) import codeonwort.geom.skew var m:Matrix = mc.transform.matrix m.translate(-mc.x, -mc.y) // 변환의 중심점 설정은 skew(m, 45, 0) m.translate(mc.x, mc.y) // 필수 -_-! mc.transform.matrix = m 행렬에 대한 수학적 지식 없이 Matrix ..
조금 손봤다. 아마도 정렬와 음악의 시각화는 이걸로 끝 -_-a 그리고 푸붉님께 부탁했더니 3D로 만들어주셨다 감사 ㅋㅋ
!! 버블 정렬을 찬양하라 !!
정렬을 시각화하면 어떨까 해서 노래도 같이 넣어봤는데 전혀 정렬하는 게 보이지 않는다!!
화면을 누르면 그림이 바뀝니다. 생성한 PNG는 자유롭게 사용할 수 있습니다. 다운로드 링크 프로토타입 : http://codeonwort.tistory.com/188
http://codeonwort.tistory.com/164 여기서 가장 큰 문제였던 마지막 오류의 원인을 찾아냈다. 결론부터 말하자면 이름이 World인 커스텀 클래스를 작성하지 말라는 것이다. IK와 관련해서 World라는 전역 클래스가 있어서 이름이 충돌한다. 굳이 World를 고수하려면 클래스의 풀네임을 적어줘야 한다. import dnf.core.World var world:dnf.core.World = new dnf.core.World(viewport) 짜증나고 귀찮다? 다른 이름을 쓰는 게 정신 건강에 좋다. PhysObj, Joint, Spring도 같은 이유로 금지. 이걸로 삽질한 걸 생각하면