|
SWiSH Forum Forum użytkowników programów SWiSH |
|
SWiSH Max - Dziwny problem
vanioch - Sro 30 Lis, 2011 12:52 Temat postu: Dziwny problem Cześć, robię prosty ruch po okręgu (czyli okręg motion to path), zaznaczam opcję odwróć bo chcę przeciwnie do ruchu wskazówek zegara, wszystko działa. Ale jeśli mam te 2 obiekty w duszku i wtedy zrobię ten ruch to ruch po okręgu to nie zamyka się do końca, w załączniku swish. Jestem w kropce bo mam dużo pozagłębianych w siebie movie clipów i bez sensu teraz wszystko rozgrupowywać. Jeśli zrobię natomiast (jak obiekty są w duszku) ten ruch zgodnie z zegarkiem ruch się bez problemu zamyka. Nie ma jakiejś opcji która odwróci już zrobiony ruch?
shastaan - Sro 30 Lis, 2011 13:03
Coś popultałeś. Przeniosłem - narzędziem subselection tool (A) - ostatnią pozycję w odpowiednie miejsce i działa.
Zrobiłem potem od nowa i też działa.
Januszr - Sro 30 Lis, 2011 13:25
Ruch zaczyna sięw dokładnie tym miejscu, w którym zrobiłeś. A dokonałeś tego poprzez kliknięcie na punkt końca ruchu podczas edycji (narzędziem MotionPathTool), co doprowadziło do wycięcia Vertexa oraz kawałka motion path. Wiem, bo sam na to się wkurzam bardzo często
Rozwiązania chyba nie ma (a może jest - klikanie z jakimś klawiszem)... ja staram się powiększyć maksymalnie a następnie kliknąć obok istniejących vertexów. A drzewiej było łatwiej...
vanioch - Sro 30 Lis, 2011 13:26
OK dzia, problem rozwiązany
shastaan - Sro 30 Lis, 2011 14:10
Z ciekawości zapytam, po co wam do tego motion path tool?
espe1 - Sro 30 Lis, 2011 15:19
a nie lepiej:
Kod: |
onSelfEvent (load) {
//ustawienie środka rotacji (elipsy)
centerX = 280;
centerY = 160;
//wysokość i szerokość rotacji (elipsy)
radiusX = 200;
radiusY = 100;
//szybkość rotacji
angle = 0.1;
speed = 0.1;
this.onEnterFrame = function() {
mc._x = centerX + radiusX*Math.cos(angle);
mc._y = centerY + radiusY*Math.sin(angle);
//- obr. w lewo, + obr. w prawo
angle -= speed;
}
} |
gdzie:
mc - to nasze kółko, które ma się obracać po elipsie,
no i wszystkie parametry można szybko i łatwo zmienić
Januszr - Sro 30 Lis, 2011 21:24
Cytat: | Z ciekawości zapytam, po co wam do tego motion path tool? | do narysowania "pętelki" na końcu animacji/zmiany kawałka animacji.
Tak lepiej i plik będzie mniejszy. Pytanie tylko, jak napisać równanie ruchu takie jak w załączniku?
Espe, twoja znajomość AS jest bardzo cenna i chętnie wykorzystałbym ją na własne potrzeby:)
Ale do tego, ważną, a nawet kluczową sprawą jest to, czy posiadasz nokię z symbianem? Kwestia jest taka, że nie ma oprogramowania na symbiana, które potrafi czytać videostream z kamer wifi - jednak to na inny wątek...
espe1 - Sro 30 Lis, 2011 23:54
np. tak:
Kod: |
onSelfEvent (load) {
x0 = _x;
y0 = _y;
tx = Math.random()*3000;
ty = Math.random()*3000;
vx = .06+ Math.random()*.02;
vy = .12+ Math.random()*.06;
ampX = (70+Math.random()*70)*_xscale/100;
ampY = (40+Math.random()*10)*_yscale/100;
onEnterFrame = function() {
_x = x0+Math.sin(tx+=vx)*ampX;
_y = y0+Math.sin(ty+=vy)*ampY;
dx = _x-oldX;
dy = _y-oldY;
_rotation = Math.atan2(dy, dx)/Math.PI*180; //można też dać: Math.random()
oldX = _x;
oldY = _y;
}
}
|
lub bardziej skomplikowane:
Kod: |
onSelfEvent (load) {
_x=0; _y=0;
function getx(radius,angle) {
radians=Math.PI*angle/180;
return radius * Math.cos(radians);
}
function gety(radius,angle) {
radians=Math.PI*angle/180;
return radius * Math.sin(radians);
}
bigRadTarget = 5+random(145);
bigAngTarget = random(720)-360;
smallRadTarget = 25+random(25);
smallAngTarget = random(720)-360;
xbase = 275;
ybase = 200;
bigRadius = 5+random(145);
smallRadius = 2+random(48);
bigAngle = random(720)-360;
smallAngle = random(720)-360;
bigaSpeed = 0;
bigrSpeed = 0;
smallaSpeed = 0;
smallrSpeed = 0;
}
onSelfEvent (enterFrame) {
//
bigRdiff = bigRadTarget-bigRadius;
if (bigRdiff>0) {
if (bigrSpeed>=bigRdiff) {
bigRadTarget = 5+random(145);
} else {
if (bigrSpeed<5) {
bigrSpeed++;
}
bigRadius+=bigrSpeed;
}
} else {
if (bigrSpeed<=bigRdiff) {
bigRadTarget = 5+random(145);
} else {
if (bigrSpeed> -5) {
bigrSpeed--;
}
bigRadius+=bigrSpeed;
}
}
//
smallRdiff = smallRadTarget-smallRadius;
if (smallRdiff>0) {
if (smallrSpeed>=smallRdiff) {
smallRadTarget = 25+random(25);
} else {
if (smallrSpeed<2) {
smallrSpeed++;
}
smallRadius+=smallrSpeed;
}
} else {
if (smallrSpeed<=smallRdiff) {
smallRadTarget = 25+random(25);
} else {
if (smallrSpeed> -2) {
smallrSpeed--;
}
smallRadius+=smallrSpeed;
}
}
// rotations
bigAdiff = bigAngTarget-bigAngle;
if (bigAdiff>0) {
if (bigaSpeed>=bigAdiff) {
bigAngTarget = random(720)-360;
} else {
if (bigaSpeed<5) {
bigaSpeed++;
}
bigAngle+=bigaSpeed;
}
} else {
if (bigaSpeed<=bigAdiff) {
bigAngTarget = random(720)-360;
} else {
if (bigaSpeed> -5) {
bigaSpeed--;
}
bigAngle+=bigaSpeed;
}
}
//
smallAdiff = smallAngTarget-smallAngle;
if (smallAdiff>0) {
if (smallaSpeed>=smallAdiff) {
smallAngTarget = random(720)-360;
} else {
if (smallaSpeed<10) {
smallaSpeed++;
}
smallAngle+=smallaSpeed;
}
} else {
if (smallaSpeed<=smallAdiff) {
smallAngTarget = random(720)-360;
} else {
if (smallaSpeed> -10) {
smallaSpeed--;
}
smallAngle+=smallaSpeed;
}
}
//
xpos=getx(bigRadius,bigAngle)+getx(smallRadius,smallAngle);
_x=xpos*550/400+xbase;
_y=gety(bigRadius,bigAngle)+gety(smallRadius,smallAngle)+ybase;
}
onSelfEvent (enterFrame) {
_x = _x+0.7*(_parent.b01._x-_x);
_y = _y+0.7*(_parent.b01._y-_y);
} |
Kiedyś zrobiłem poruszające się plemniki
Tworzymy clipa i nazywamy go "plemnik" (oczywiście musimy sobie narysować plemnika)
Kod: |
onSelfEvent (load) {
acceleration = 20; //można zmieniać
newpos = function(){
ranx = random(Stage.width);
rany = random(Stage.height);
};
newpos();
this.onEnterFrame = function(){
dx = ranx-this._x;
dy = rany-this._y;
ar = Math.atan2(dy,dx);
this._rotation = ar*180/Math.PI;
this._x += dx/acceleration;
this._y += dy/acceleration;
if (Math.abs(dx) < 1 || Math.abs(dy) < 1) {
newpos(); // move
}
}
}
|
A przed klipem dajemy:
Kod: |
onSelfEvent (load) {
for (i=0; i<50; i++){ //ilość można zmieniać
duplicateMovieClip(plemnik, "plemnik"+i, i);
}
}
|
W komponentach swisha jest też latający motyl z możliwością obrotu
[ Dodano: Czw 01 Gru, 2011 10:08 ]
Dodam tylko, że do plemników można dodać funkcję zmiany koloru (random color):
Kod: |
onSelfEvent(load){ //lub (enterFrame) - dynamiczna zmiana
r=Math.floor(Math.random()*255)
g=Math.floor(Math.random()*255)
b=Math.floor(Math.random()*255)
colourobj=new Color(this)
colourobj.setRGB(r << 16 | g << 8 | b)
} |
|
|