PDA

Просмотр полной версии : Магазин


7DimaN7
06.08.2007, 16:13
Народ!Помогите, пожалуйста!
Создаю игру, в ней будет магазин.В первом кадре пишу код.
myVar = "сок";
but.onRelease = function (){
if (tf1.text != myVar2){
tf1.text = myVar }
else if(tf1.text == myVar2 && tf2.text != myVar2){
tf2.text = myVar}
else if(tf1.text != myVar){
tf1.text = myVar }
else if(tf1.text == myVar && tf2.text != myVar2){
tf2.text = myVar}
}
myVar2 = "колбаса";
but2.onRelease = function (){
if (tf1.text != myVar){
tf1.text = myVar2 }
else if(tf1.text == myVar2 && tf2.text != myVar){
tf2.text = myVar2}
else if(tf1.text == myVar2 && tf2.text != myVar2){
tf2.text = myVar2}
else if(tf1.text == myVar && tf2.text != myVar){
tf2.text = myVar2}
}
Есть два динам. текста(tf1 и tf2) и две кнопки(but и but2)
Не получается, чтобы при нажатии дважды на сок, в обоих динам. текстах появлялось слово сок.То же самое и с колбасой.

silin
06.08.2007, 16:51
не вполне ясно что надо, может так..
but.onRelease = function() {
(tf1.text==myVar1) ? tf2.text=myVar1 : tf1.text=myVar1;

};
but2.onRelease = function() {
(tf1.text==myVar2) ? tf2.text=myVar2 : tf1.text=myVar2;
};

7DimaN7
07.08.2007, 13:40
Уже сам догадался что к чему, но все равно спасибо!Понял то, что это не удобно.У меня в магазине будет еще около 5 продуктов.Тогда код получится ОГРОМНЫЙ.Можно это как-нибудь сделать по-другому?
Например с массивом.

silin
07.08.2007, 14:30
var products:Array=["first","second","third"];
var labels:Array=[tf1,tf2,tf3,tf4];//текстфилды (сколько надо)
var buttons:Array=[but1,but2,but3];//кнопки (по числу продуктов)
function butPress(){
var n:Number=this.tag;
var s:String=products[n]
for(var i=0;i<labels.length;i++) if(s!=labels[i].text) break;
if(i<labels.length)labels[i].text=s;
}
for(var i in buttons){
buttons[i].tag=i;
buttons[i].onPress=butPress;
}

7DimaN7
07.08.2007, 14:47
Ага!Спасибо!Работает.Только еще как сделать, если нажал на кнопку first
он вылез в первом текстфилде, а если потом на вторую кнопку, слово sekond вылезло во втором текстфилде?С третьим аналагичная ситуация.

silin
07.08.2007, 15:17
сделать можно как угодно: сам видишь, что это нетрудно..
но нужна четкая и однозначная логика действий, которую у тебя уловить сложно: "а если потом на вторую кнопку" - а если не потом, а до.., а если в первом текстфилде не first, а third, что если все текстфилды уже заняты, то все: больше нет выбора?.. и еще много таких если..
продумай логику/алгоритм приложения, по нему и пиши и все встанет на свои места само собой..

вариант (при выборе сверх запланированных мест, выкидывает первый):
var products:Array=["first","second","third"];
var choices:Array=[];
var labels:Array=[tf1,tf2,tf3,tf4];//текстфилды (сколько надо)
var buttons:Array=[but1,but2,but3];//кнопки (по числу продуктов)

function butPress(){
choices.push(products[this.tag]);
if(choices.length>labels.length) choices.shift();
for(var i in labels) labels[i].text=choices[i] || "";
}

for(var i in buttons){
buttons[i].tag=i;
buttons[i].onPress=butPress;
}

7DimaN7
07.08.2007, 15:24
Я просто новичок во flashе.Смысл в том, что человек приходи в магазин и выбирает, что хочет в любом порядке.А когда все текстфилды заняты то все: выбора больше нет.Я уже долго не могу осуществить свою идею.Вот.Обратился к вам!

silin
07.08.2007, 15:33
для "выбора больше нет"
function butPress(){
if(choices.length==labels.length) return;
choices.push(products[this.tag]);
for(var i in labels) labels[i].text=choices[i] || "";
}

7DimaN7
07.08.2007, 15:43
короче говоря, вот, что мне надо.Только продуктов побольше и код попроще.(не слишком нагло?;) )

silin
07.08.2007, 15:50
сори, не буду и смотреть..
дело не в наглости, а в бессмысленности подхода "сделайте за меня"..

7DimaN7
07.08.2007, 15:59
Ясно.Я попробовал сделать, что хотел с помощью твоего кода, но ничего в нем не понял.Увы!

etc
07.08.2007, 16:38
Ну так разбирайтесь в коде! Ваша задача — вам её и реализовывать.