Remove animation at the end of the loop count - loops

I'm using the following code to play explosion animation, How can I removeSelf the animation when it finished the loop-count?
function showExplotion(event)
local sheetData = { width=32, height=32, numFrames=13, sheetContentWidth=128, sheetContentHeight=128 }
local mySheet = graphics.newImageSheet( "media/fire.png", sheetData )
local sequenceData = {
--{ name = "normalRun", start=1, count=13, loopCount = 1, time=800 }
{ name = "fastRun", frames={ 1,2,4,5,6,7,8,9,10,11,12,13 }, time=800, loopCount = 1 }
}
local animation = display.newSprite( mySheet, sequenceData )
animation.x = event.x
animation.y = event.y
animation:play()
end

you can add listener to your sprite animation to detect it's phase
function showExplotion(event)
local sheetData = { width=32, height=32, numFrames=13, sheetContentWidth=128, sheetContentHeight=128 }
local mySheet = graphics.newImageSheet( "media/fire.png", sheetData )
local sequenceData = {
--{ name = "normalRun", start=1, count=13, loopCount = 1, time=800 }
{ name = "fastRun", frames={ 1,2,4,5,6,7,8,9,10,11,12,13 }, time=800, loopCount = 1 }
}
local animation = display.newSprite( mySheet, sequenceData )
animation.x = event.x
animation.y = event.y
animation:play()
local function mySpriteListener( event )
if ( event.phase == "ended" ) then
animation:removeSelf()
animation = nil
end
end
animation:addEventListener( "sprite", mySpriteListener )
end

Related

How to create multi infinity loops with coroutine in Kotlin

I have a method in viewmodel that I want to execute infinity till client stop that.
This loop should work for each button separately and stop that too.
But when I execute the loop for fourth time, application hangs.
How can I manage the loop and run it for four separate objects
This is my method in viewmodel:
fun getLocationInfinity(context: Context, tripId: Long, passengerId: Int) =
viewModelScope.launch {
val gpsTracker = LocationGpsTracker(context, 0, 0)
val netGpsTracker = LocationGpsTrackerNetwork(context)
var way = Way()
way.latitude1 = gpsTracker.getLatitude()
way.longitude1 = gpsTracker.getLongitude()
way.accuracy1 = gpsTracker.getAccuracy()
way.latitudeNet1 = netGpsTracker.getLatitude()
way.longitudeNet1 = netGpsTracker.getLongitude()
way.accuracyNet1 = netGpsTracker.getAccuracy()
while (isActive) {
if (_passengerSwitch.value?.get(passengerId - 1) == true) {
way.latitude2 = way.latitude1
way.longitude2 = way.longitude1
way.accuracy2 = way.accuracy1
way.latitudeNet2 = way.latitudeNet1
way.longitudeNet2 = way.longitudeNet1
way.accuracyNet2 = way.accuracyNet1
way.latitude1 = gpsTracker.getLatitude()
way.longitude1 = gpsTracker.getLongitude()
way.accuracy1 = gpsTracker.getAccuracy()
way.latitudeNet1 = netGpsTracker.getLatitude()
way.longitudeNet1 = netGpsTracker.getLongitude()
way.accuracyNet1 = netGpsTracker.getAccuracy()
_way.postValue(way)
val tripDetails = TripDetails(
latitude1 = way.latitude1,
latitude2 = way.latitude2,
longitude1 = way.longitude1,
longitude2 = way.longitude2,
accuracy1 = way.accuracy1,
accuracy2 = way.accuracy2,
latitudeNet1 = way.latitudeNet1,
latitudeNet2 = way.latitudeNet2,
longitudeNet1 = way.longitudeNet1,
longitudeNet2 = way.longitudeNet2,
accuracy1Net = way.accuracyNet1,
accuracy2Net = way.accuracyNet2,
distance = null,
isCalculated = false,
tripId = tripId.toInt(),
isEnded = false
)
localRepository.insertLocation(tripDetails)
delay(2000)
}
}
}
The delay() call needs to be outside your if-block. Otherwise, if the condition is false, this loop will never suspend so it never relinquishes the thread.

How to read a specific file using corona sdk

I use to program although it has been quite a few years so Im having to relearn most of it, Im trying to make it so when one of the 3 buttons are clicked it reads the file attached to the button but all i get at the moment is nul in the terminal when i run it
Ive tried moving around sections of code but I cant find anything that works
local centerX = display.contentCenterX
local centerY = display.contentCenterY
local background = display.newImage("background.png")
background.x = centerX
background.y = centerY
local widget = require( "widget" )
-- Path for the file to read
local cluthaDirect = system.pathForFile( "clutha_Run.txt" )
local ranfDirect = system.pathForFile( "ranf_Run.txt" )
local centDirect = system.pathForFile( "cent_Run.txt" )
local function cluthaButtonEvent(event)
local phase = event.phase
if "ended" == phase then
print(cluthaFile)
end
end
local function centButtonEvent(event)
local phase = event.phase
if "ended" == phase then
print("C E N T R A L")
end
end
local function ranfButtonEvent(event)
local phase = event.phase
if "ended" == phase then
print("R A N F U R L Y")
end
end
local cluthaButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "clutha",
onEvent = cluthaButtonEvent,
}
local centButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY + 80,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "central",
onEvent = centButtonEvent,
}
local ranfButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY + 160,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "ranf",
onEvent = ranfButtonEvent,
}
-- Path for the file to read
--local cluthaDirect = system.pathForFile( "clutha_Run.txt" )
--local ranfDirect = system.pathForFile( "ranf_Run.txt" )
--local centDirect = system.pathForFile( "cent_Run.txt" )
-- Open the file handle
local cluthaFile, errorString = io.open( cluthaDirect, "r" )
local centFile, errorString = io.open( centDirect, "r" )
local ranfFile, errorString = io.open( ranfDirect, "r" )
if not cluthaFile then
-- Error occurred; output the cause
print( "cluthaFile error: " .. errorString )
else
-- Output lines
for line in cluthaFile:lines() do
print( line )
end
-- Close the file handle
--io.close( cluthaFile )
end
cluthaFile = nil
Try (not tested)
local widget = require( "widget" )
local function getContentOfFile( fileName, dir )
local contents = ''
local dir = dir or system.ResourceDirectory
local path = system.pathForFile( fileName, dir )
local file, errorString = io.open( path, "r" )
-- Open the file handle
local file, errorString = io.open( path, "r" )
if not file then
-- Error occurred; output the cause
print( "File error: " .. errorString )
else
-- Read data from file
contents = file:read( "*a" )
-- Close the file handle
io.close( file )
end
file = nil
return contents
end
local function cluthaButtonEvent( event )
local phase = event.phase
if "ended" == phase then
print( getContentOfFile("clutha_Run.txt") )
end
end
local function centButtonEvent( event )
local phase = event.phase
if "ended" == phase then
print( getContentOfFile("cent_Run.txt") )
end
end
local function ranfButtonEvent( event )
local phase = event.phase
if "ended" == phase then
print( getContentOfFile("ranf_Run.txt") )
end
end
local cluthaButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "clutha",
onEvent = cluthaButtonEvent,
}
local centButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY + 80,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "central",
onEvent = centButtonEvent,
}
local ranfButton = widget.newButton
{
left = centerX - 60,
top = centerY - centerY + 160,
width = display.contentWidth/2,
height = 60,
defaultFile = "buttonUnpressed.png",
overFile = "buttonPressed.png",
label = "ranf",
onEvent = ranfButtonEvent,
}

2 object of same type returns true when != checked

I am using model.GetType().GetProperties() with foreach to compare properties of 2 object of same class.
like this
foreach (var item in kayit.GetType().GetProperties())
{
var g = item.GetValue(plu);
var b = item.GetValue(kayit);
if (g is string && b is string&& g!=b)
{
a += item.Name + "*";
}
else if (g is DateTime&& b is DateTime&& g!=b)
{
a += item.Name + "*";
}
}
But the problem is even if they have the same value g!=b returns a true all the time. I have used a break point to prove this and they are literally same thing. Actually I am taking the value putting it in textbox then creating another class after button click and comaring to see the changed properties. So even if I don't change anything it doesn't read the mas equals. Can someone help me about this please?
more info:
I get the plu from database and populate my control with it:
txtorder.Text = plu.OrderNo;
dtporder.Value = nulldate(plu.OrderDate);
dtp1fit.Value = nulldate(plu.FirstFitDate);
dtp1yorum.Value = nulldate(plu.FirstCritDate);
dtp2fit.Value = nulldate(plu.SecondFitDate);
dtp2yorum.Value = nulldate(plu.SecondCritDate);
dtpsizeset.Value = nulldate(plu.SizeSetDate);
dtpsizesetok.Value = nulldate(plu.SizeSetOkDate);
dtpkumasplan.Value = nulldate(plu.FabricOrderByPlan);
txtTedarikci.Text = plu.Fabric_Supplier;
dtpkumasFP.Value = nulldate(plu.FabricOrderByFD);
dtpfabarrive.Value = nulldate(plu.FabricArrive);
dtpbulk.Value = nulldate(plu.BulkFabricDate);
dtpbulkok.Value = nulldate(plu.BulkConfirmDate);
dtpaccessory.Value = nulldate(plu.AccessoriesDate);
dtpaccessoryarrive.Value = nulldate(plu.AccessoriesArriveDate);
dtpcutok.Value = nulldate(plu.ProductionStartConfirmation);
dtpcutstart.Value = nulldate(plu.ProductionStart);
dtpshipmentdate.Value = nulldate(plu.ShipmentDate);
dtpshipmentsample.Value = nulldate(plu.ShipmentSampleDate);
dtpshippedon.Value = nulldate(plu.Shippedon);
nulldate is just a method where I change null values to my default value.
And this is what I do after button click:
var kayit = new uretim();
kayit.OrderNo = txtorder.Text.ToUpper();
kayit.OrderDate = vdat(dtporder.Value);
kayit.FirstFitDate = vdat(dtp1fit.Value);
kayit.FirstCritDate = vdat(dtp1yorum.Value);
kayit.SecondFitDate = vdat(dtp2fit.Value);
kayit.SecondCritDate = vdat(dtp2yorum.Value);
kayit.SizeSetDate = vdat(dtpsizeset.Value);
kayit.SizeSetOkDate = vdat(dtpsizesetok.Value);
kayit.FabricOrderByPlan = vdat(dtpkumasplan.Value);
kayit.Fabric_Supplier = txtTedarikci.Text;
kayit.FabricOrderByFD = vdat(dtpkumasFP.Value);
kayit.FabricArrive = vdat(dtpfabarrive.Value);
kayit.BulkFabricDate = vdat(dtpbulk.Value);
kayit.BulkConfirmDate = vdat(dtpbulkok.Value);
kayit.AccessoriesDate = vdat(dtpaccessory.Value);
kayit.AccessoriesArriveDate = vdat(dtpaccessoryarrive.Value);
kayit.ProductionStartConfirmation = vdat(dtpcutok.Value);
kayit.ProductionStart = vdat(dtpcutstart.Value);
kayit.ShipmentDate = vdat(dtpshipmentdate.Value);
kayit.ShipmentSampleDate = vdat(dtpshipmentsample.Value);
kayit.Shippedon = vdat(dtpshippedon.Value);
kayit.Status = true;
kayit.WrittenDate = DateTime.Now;
kayit.GuidKey = plu.GuidKey != null ? plu.GuidKey : Guid.NewGuid().ToString("N");
I have proven by breakpoint that values are actually same. But the != check retruns a true.
When you are doing
g != b
compiler doesn't know that these objects are strings to compare so it compares their references. You can do:
g.Equals(b) //be carefull if one of them is null
or
g.ToString() != b.ToString()
EDIT
You can compare them after you check the type:
if (g is string && b is string)
{
if( g.ToString() != b.ToString() ){
}
}

Error: Cannot convert array of data to (class)

I'm still rather new to JS and GAS and I'm afraid I don't understand arrays real well yet. Your help is greatly appreciated.
Prior to this script, I have another script that pulls information from a list into a spreadsheet that is formatted to look like an invoice. The user then makes changes to the invoice and saves that changes back again to the exact same line that the data was pulled from. This is simply a way of updating changes to the invoice in a user-friendly format.
When I run my script below, I get an error saying that it "Cannot convert"...a list of the data in the array..." to (class)"...the name of the file.
I'm afraid I don't know enough about array classes to solve this problem. I looked for other questions and answers to this same problem, but if I found one, I didn't understand it well enough to apply it to my situation.
The error is happening on line 133 (oh, so close to running the whole script).
function overwriteInvoice() {
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Invoice");
//start change customer name into customer code
var customerName = sheet.getRange('I2').getValue();
var ccsheet = ss.getSheetByName("CustomerCodes");
var lastRow = ccsheet.getLastRow();
//check how many rows it found
Logger.log("lastRow: " + lastRow);
var lookUp = ccsheet.getRange(2, 1, lastRow, 3).getValues();
for (nn=0; nn<lookUp.length; ++nn) {
if (lookUp[nn][0] == customerName) {break}
}
var customerCode = lookUp[nn][1];
//check customer code to make sure it is returning correct info.
Logger.log("customerCode: " + customerCode);
//end change customer name into customer code
//start build array
var arrayOfData = [];
arrayOfData[0] = sheet.getRange('G2');//invoiceorquote
arrayOfData[1] = sheet.getRange('C10');//invoicequote number
arrayOfData[2] = sheet.getRange('C9');//date
arrayOfData[3] = customerCode;//customer code DON'T CHANGE THIS
arrayOfData[4] = sheet.getRange('I9'); //joblotcode
arrayOfData[5] = sheet.getRange('J27');//total
arrayOfData[6] = sheet.getRange('L32');//invoice paid
arrayOfData[7] = sheet.getRange('B30');//notes
arrayOfData[8] = sheet.getRange('B13');//area13;
arrayOfData[9] = sheet.getRange('D13');//description13;
arrayOfData[10] = sheet.getRange('I13');//quantity13;
arrayOfData[11] = sheet.getRange('J13');//units13;
arrayOfData[12] = sheet.getRange('K13');//pricePerUnit13;
arrayOfData[13] = sheet.getRange('L13');//subtotal13;
arrayOfData[14] = sheet.getRange('B14');//area14;
arrayOfData[15] = sheet.getRange('D14');//description14;
arrayOfData[16] = sheet.getRange('I14');//quantity14;
arrayOfData[17] = sheet.getRange('J14');//units14;
arrayOfData[18] = sheet.getRange('K14');//pricePerUnit14;
arrayOfData[19] = sheet.getRange('L14');//subtotal14;
arrayOfData[20] = sheet.getRange('B15');//area15;
arrayOfData[21] = sheet.getRange('D15');//description15;
arrayOfData[22] = sheet.getRange('I15');//quantity15;
arrayOfData[23] = sheet.getRange('J15');//units15 ;
arrayOfData[24] = sheet.getRange('K15');//pricePerUnit15 ;
arrayOfData[25] = sheet.getRange('L15');//subtotal15 ;
arrayOfData[26] = sheet.getRange('B16');//area16 ;
arrayOfData[27] = sheet.getRange('D16');//description16 ;
arrayOfData[28] = sheet.getRange('I16');//quantity16 ;
arrayOfData[29] = sheet.getRange('J16');//units16 ;
arrayOfData[30] = sheet.getRange('K16');//pricePerUnit16 ;
arrayOfData[31] = sheet.getRange('L16');//subtotal16 ;
arrayOfData[32] = sheet.getRange('B17');//area17 ;
arrayOfData[33] = sheet.getRange('D17');//description17 ;
arrayOfData[34] = sheet.getRange('I17');//quantity17 ;
arrayOfData[35] = sheet.getRange('J17');//units17 ;
arrayOfData[36] = sheet.getRange('K17');//pricePerUnit17 ;
arrayOfData[37] = sheet.getRange('L17');//subtotal17 ;
arrayOfData[38] = sheet.getRange('B18');//area18 ;
arrayOfData[39] = sheet.getRange('D18');//description18 ;
arrayOfData[40] = sheet.getRange('I18');//quantity18 ;
arrayOfData[41] = sheet.getRange('J18');//units18 ;
arrayOfData[42] = sheet.getRange('K18');//pricePerUnit18 ;
arrayOfData[43] = sheet.getRange('L18');//subtotal18 ;
arrayOfData[44] = sheet.getRange('B19');//area19 ;
arrayOfData[45] = sheet.getRange('D19');//description19 ;
arrayOfData[46] = sheet.getRange('I19');//quantity19 ;
arrayOfData[47] = sheet.getRange('J19');//units19 ;
arrayOfData[48] = sheet.getRange('K19');//pricePerUnit19 ;
arrayOfData[49] = sheet.getRange('L19');//subtotal19 ;
arrayOfData[50] = sheet.getRange('B20');//area20 ;
arrayOfData[51] = sheet.getRange('D20');//description20 ;
arrayOfData[52] = sheet.getRange('I20');//quantity20 ;
arrayOfData[53] = sheet.getRange('J20');//units20 ;
arrayOfData[54] = sheet.getRange('K20');//pricePerUnit20 ;
arrayOfData[55] = sheet.getRange('L20');//subtotal20 ;
arrayOfData[56] = sheet.getRange('B21');//area21 ;
arrayOfData[57] = sheet.getRange('D21');//description21 ;
arrayOfData[58] = sheet.getRange('I21');//quantity21 ;
arrayOfData[59] = sheet.getRange('J21');//units21 ;
arrayOfData[60] = sheet.getRange('K21');//pricePerUnit21 ;
arrayOfData[61] = sheet.getRange('L21');//subtotal21 ;
arrayOfData[62] = sheet.getRange('B22');//area22 ;
arrayOfData[63] = sheet.getRange('D22');//description22 ;
arrayOfData[64] = sheet.getRange('I22');//quantity22 ;
arrayOfData[65] = sheet.getRange('J22');//units22 ;
arrayOfData[66] = sheet.getRange('K22');//pricePerUnit22 ;
arrayOfData[67] = sheet.getRange('L22');//subtotal22 ;
arrayOfData[68] = sheet.getRange('B23');//area23 ;
arrayOfData[69] = sheet.getRange('D23');//description23 ;
arrayOfData[70] = sheet.getRange('I23');//quantity23 ;
arrayOfData[71] = sheet.getRange('J23');//units23 ;
arrayOfData[72] = sheet.getRange('K23');//pricePerUnit23 ;
arrayOfData[73] = sheet.getRange('L23');//subtotal23 ;
arrayOfData[74] = sheet.getRange('B24');//area24 ;
arrayOfData[75] = sheet.getRange('D24');//description24 ;
arrayOfData[76] = sheet.getRange('I24');//quantity24 ;
arrayOfData[77] = sheet.getRange('J24');//units24 ;
arrayOfData[78] = sheet.getRange('K24');//pricePerUnit24 ;
arrayOfData[79] = sheet.getRange('L24');//subtotal24 ;
//end build array
//start find correct row
var searchFor = sheet.getRange("C10").getValue();
var invoiceRecord = ss.getSheetByName("InvoiceRecord");
var lastRow = invoiceRecord.getLastRow();
//verify last row
Logger.log("lastRow: " + lastRow);
//create an array of values to search
var searchArea = invoiceRecord.getRange(4, 1, lastRow, 4).getValues();
//start search the array
for (jj=0; jj<searchArea.length; ++jj) {
if (searchArea[jj][1]==searchFor) {break};
}
var copyToRow = searchArea[jj];
//end find the correct row
//ERROR!
invoiceRecord.getRange(copyToRow, 1, 1, arrayOfData.length).setValues(arrayOfData);
//ERROR!
ui.alert('Invoice Changes Saved', ui.ButtonSet.OK);
}
Thank you so much for your help.
Update
I am so frustrated by this problem that I decided to take a different tact to narrow down the cause. I removed the array entirely and assigned each value to a variable in order to see if the array is the problem. Apparently, it is not. The results when I run this code now say error: "Cannot convert NaN to (class). (line 140, file "OverwriteExistingInvoice")"
function overwriteInvoice() {
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Invoice");
//start change customer name into customer code
var customerName = sheet.getRange('I2').getValue();
var ccsheet = ss.getSheetByName("CustomerCodes");
var lastRow = ccsheet.getLastRow();
//check how many rows it found
Logger.log("lastRow: " + lastRow);
var lookUp = ccsheet.getRange(2, 1, lastRow-2, 3).getValues();
var nn=0
for (nn=0; nn<lookUp.length; ++nn) {
if (lookUp[nn][0] == customerName) {break}
}
var customerCode = lookUp[nn][1];
//check customer code to make sure it is returning correct info.
Logger.log("customerCode: " + customerCode);
//end change customer name into customer code
//start build array
var column0 = sheet.getRange('G2').getValue();//invoiceorquote
var column1 = sheet.getRange('C10').getValue();//invoicequote number
var column2 = sheet.getRange('C9').getValue();//date
var column3 = customerCode;//customer code DON'T CHANGE THIS
var column4 = sheet.getRange('I9').getValue(); //joblotcode
var column5 = sheet.getRange('J27').getValue();//total
var column6 = sheet.getRange('L32').getValue();//invoice paid
var column7 = sheet.getRange('B30').getValue();//notes
var column8 = sheet.getRange('B13').getValue();//area13;
var column9 = sheet.getRange('D13').getValue();//description13;
var column10 = sheet.getRange('I13').getValue();//quantity13;
var column11 = sheet.getRange('J13').getValue();//units13;
var column12 = sheet.getRange('K13').getValue();//pricePerUnit13;
var column13 = sheet.getRange('L13').getValue();//subtotal13;
var column14 = sheet.getRange('B14').getValue();//area14;
var column15 = sheet.getRange('D14').getValue();//description14;
var column16 = sheet.getRange('I14').getValue();//quantity14;
var column17 = sheet.getRange('J14').getValue();//units14;
var column18 = sheet.getRange('K14').getValue();//pricePerUnit14;
var column19 = sheet.getRange('L14').getValue();//subtotal14;
var column20 = sheet.getRange('B15').getValue();//area15;
var column21 = sheet.getRange('D15').getValue();//description15;
var column22 = sheet.getRange('I15').getValue();//quantity15;
var column23 = sheet.getRange('J15').getValue();//units15 ;
var column24 = sheet.getRange('K15').getValue();//pricePerUnit15 ;
var column25 = sheet.getRange('L15').getValue();//subtotal15 ;
var column26 = sheet.getRange('B16').getValue();//area16 ;
var column27 = sheet.getRange('D16').getValue();//description16 ;
var column28 = sheet.getRange('I16').getValue();//quantity16 ;
var column29 = sheet.getRange('J16').getValue();//units16 ;
var column30 = sheet.getRange('K16').getValue();//pricePerUnit16 ;
var column31 = sheet.getRange('L16').getValue();//subtotal16 ;
var column32 = sheet.getRange('B17').getValue();//area17 ;
var column33 = sheet.getRange('D17').getValue();//description17 ;
var column34 = sheet.getRange('I17').getValue();//quantity17 ;
var column35 = sheet.getRange('J17').getValue();//units17 ;
var column36 = sheet.getRange('K17').getValue();//pricePerUnit17 ;
var column37 = sheet.getRange('L17').getValue();//subtotal17 ;
var column38 = sheet.getRange('B18').getValue();//area18 ;
var column39 = sheet.getRange('D18').getValue();//description18 ;
var column40 = sheet.getRange('I18').getValue();//quantity18 ;
var column41 = sheet.getRange('J18').getValue();//units18 ;
var column42 = sheet.getRange('K18').getValue();//pricePerUnit18 ;
var column43 = sheet.getRange('L18').getValue();//subtotal18 ;
var column44 = sheet.getRange('B19').getValue();//area19 ;
var column45 = sheet.getRange('D19').getValue();//description19 ;
var column46 = sheet.getRange('I19').getValue();//quantity19 ;
var column47 = sheet.getRange('J19').getValue();//units19 ;
var column48 = sheet.getRange('K19').getValue();//pricePerUnit19 ;
var column49 = sheet.getRange('L19').getValue();//subtotal19 ;
var column50 = sheet.getRange('B20').getValue();//area20 ;
var column51 = sheet.getRange('D20').getValue();//description20 ;
var column52 = sheet.getRange('I20').getValue();//quantity20 ;
var column53 = sheet.getRange('J20').getValue();//units20 ;
var column54 = sheet.getRange('K20').getValue();//pricePerUnit20 ;
var column55 = sheet.getRange('L20').getValue();//subtotal20 ;
var column56 = sheet.getRange('B21').getValue();//area21 ;
var column57 = sheet.getRange('D21').getValue();//description21 ;
var column58 = sheet.getRange('I21').getValue();//quantity21 ;
var column59 = sheet.getRange('J21').getValue();//units21 ;
var column60 = sheet.getRange('K21').getValue();//pricePerUnit21 ;
var column61 = sheet.getRange('L21').getValue();//subtotal21 ;
var column62 = sheet.getRange('B22').getValue();//area22 ;
var column63 = sheet.getRange('D22').getValue();//description22 ;
var column64 = sheet.getRange('I22').getValue();//quantity22 ;
var column65 = sheet.getRange('J22').getValue();//units22 ;
var column66 = sheet.getRange('K22').getValue();//pricePerUnit22 ;
var column67 = sheet.getRange('L22').getValue();//subtotal22 ;
var column68 = sheet.getRange('B23').getValue();//area23 ;
var column69 = sheet.getRange('D23').getValue();//description23 ;
var column70 = sheet.getRange('I23').getValue();//quantity23 ;
var column71 = sheet.getRange('J23').getValue();//units23 ;
var column72 = sheet.getRange('K23').getValue();//pricePerUnit23 ;
var column73 = sheet.getRange('L23').getValue();//subtotal23 ;
var column74 = sheet.getRange('B24').getValue();//area24 ;
var column75 = sheet.getRange('D24').getValue();//description24 ;
var column76 = sheet.getRange('I24').getValue();//quantity24 ;
var column77 = sheet.getRange('J24').getValue();//units24 ;
var column78 = sheet.getRange('K24').getValue();//pricePerUnit24 ;
var column79 = sheet.getRange('L24').getValue();//subtotal24 ;
//end build array
//start find correct row
var searchFor = sheet.getRange("C10").getValue();
var invoiceRecord = ss.getSheetByName("InvoiceRecord");
var lastRow = invoiceRecord.getLastRow();
//verify last row
Logger.log("lastRow: " + lastRow);
//create an array of values to search
var searchArea = invoiceRecord.getRange(4, 1, lastRow, 4).getValues();
//start search the array
var jj=0
for (jj=0; jj<searchArea.length; ++jj) {
if (searchArea[jj][1]==searchFor) {break};
}
Logger.log('jj value: ' + jj);
var copyToRow = searchArea[jj];
Logger.log('copyToRow: ' + copyToRow);
//end find correct row
//start copy over same entry
//error on next line
invoiceRecord.getRange(copyToRow-1, 1).setValue(column0);
//error on above line
ui.alert('Invoice Changes Saved', ui.ButtonSet.OK);
}
I really appreciate all the help thus far. I am about to tear my hair out!
UPDATE
This is the code that finally worked correctly.
function overwriteInvoice() {
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Invoice");
//start change customer name into customer code
var customerName = sheet.getRange('I2').getValue();
var ccsheet = ss.getSheetByName("CustomerCodes");
var lastRow = ccsheet.getLastRow();
//check how many rows it found
Logger.log("lastRow: " + lastRow);
var lookUp = ccsheet.getRange(2, 1, lastRow-2, 3).getValues();
var nn=0
for (nn=0; nn<lookUp.length; ++nn) {
if (lookUp[nn][0] == customerName) {break}
}
var customerCode = lookUp[nn][1];
//check customer code to make sure it is returning correct info.
Logger.log("customerCode: " + customerCode);
//end change customer name into customer code
//start build array
var arrayOfData = [];
arrayOfData[0] = sheet.getRange('G2').getValue();//invoiceorquote
arrayOfData[1] = sheet.getRange('C10').getValue();//invoicequote number
arrayOfData[2] = sheet.getRange('C9').getValue();//date
arrayOfData[3] = customerCode;//customer code DON'T CHANGE THIS
arrayOfData[4] = sheet.getRange('I9').getValue(); //joblotcode
arrayOfData[5] = sheet.getRange('J27').getValue();//total
arrayOfData[6] = sheet.getRange('L32').getValue();//invoice paid
arrayOfData[7] = sheet.getRange('B30').getValue();//notes
arrayOfData[8] = sheet.getRange('B13').getValue();//area13;
arrayOfData[9] = sheet.getRange('D13').getValue();//description13;
arrayOfData[10] = sheet.getRange('I13').getValue();//quantity13;
arrayOfData[11] = sheet.getRange('J13').getValue();//units13;
arrayOfData[12] = sheet.getRange('K13').getValue();//pricePerUnit13;
arrayOfData[13] = sheet.getRange('L13').getValue();//subtotal13;
arrayOfData[14] = sheet.getRange('B14').getValue();//area14;
arrayOfData[15] = sheet.getRange('D14').getValue();//description14;
arrayOfData[16] = sheet.getRange('I14').getValue();//quantity14;
arrayOfData[17] = sheet.getRange('J14').getValue();//units14;
arrayOfData[18] = sheet.getRange('K14').getValue();//pricePerUnit14;
arrayOfData[19] = sheet.getRange('L14').getValue();//subtotal14;
arrayOfData[20] = sheet.getRange('B15').getValue();//area15;
arrayOfData[21] = sheet.getRange('D15').getValue();//description15;
arrayOfData[22] = sheet.getRange('I15').getValue();//quantity15;
arrayOfData[23] = sheet.getRange('J15').getValue();//units15 ;
arrayOfData[24] = sheet.getRange('K15').getValue();//pricePerUnit15 ;
arrayOfData[25] = sheet.getRange('L15').getValue();//subtotal15 ;
arrayOfData[26] = sheet.getRange('B16').getValue();//area16 ;
arrayOfData[27] = sheet.getRange('D16').getValue();//description16 ;
arrayOfData[28] = sheet.getRange('I16').getValue();//quantity16 ;
arrayOfData[29] = sheet.getRange('J16').getValue();//units16 ;
arrayOfData[30] = sheet.getRange('K16').getValue();//pricePerUnit16 ;
arrayOfData[31] = sheet.getRange('L16').getValue();//subtotal16 ;
arrayOfData[32] = sheet.getRange('B17').getValue();//area17 ;
arrayOfData[33] = sheet.getRange('D17').getValue();//description17 ;
arrayOfData[34] = sheet.getRange('I17').getValue();//quantity17 ;
arrayOfData[35] = sheet.getRange('J17').getValue();//units17 ;
arrayOfData[36] = sheet.getRange('K17').getValue();//pricePerUnit17 ;
arrayOfData[37] = sheet.getRange('L17').getValue();//subtotal17 ;
arrayOfData[38] = sheet.getRange('B18').getValue();//area18 ;
arrayOfData[39] = sheet.getRange('D18').getValue();//description18 ;
arrayOfData[40] = sheet.getRange('I18').getValue();//quantity18 ;
arrayOfData[41] = sheet.getRange('J18').getValue();//units18 ;
arrayOfData[42] = sheet.getRange('K18').getValue();//pricePerUnit18 ;
arrayOfData[43] = sheet.getRange('L18').getValue();//subtotal18 ;
arrayOfData[44] = sheet.getRange('B19').getValue();//area19 ;
arrayOfData[45] = sheet.getRange('D19').getValue();//description19 ;
arrayOfData[46] = sheet.getRange('I19').getValue();//quantity19 ;
arrayOfData[47] = sheet.getRange('J19').getValue();//units19 ;
arrayOfData[48] = sheet.getRange('K19').getValue();//pricePerUnit19 ;
arrayOfData[49] = sheet.getRange('L19').getValue();//subtotal19 ;
arrayOfData[50] = sheet.getRange('B20').getValue();//area20 ;
arrayOfData[51] = sheet.getRange('D20').getValue();//description20 ;
arrayOfData[52] = sheet.getRange('I20').getValue();//quantity20 ;
arrayOfData[53] = sheet.getRange('J20').getValue();//units20 ;
arrayOfData[54] = sheet.getRange('K20').getValue();//pricePerUnit20 ;
arrayOfData[55] = sheet.getRange('L20').getValue();//subtotal20 ;
arrayOfData[56] = sheet.getRange('B21').getValue();//area21 ;
arrayOfData[57] = sheet.getRange('D21').getValue();//description21 ;
arrayOfData[58] = sheet.getRange('I21').getValue();//quantity21 ;
arrayOfData[59] = sheet.getRange('J21').getValue();//units21 ;
arrayOfData[60] = sheet.getRange('K21').getValue();//pricePerUnit21 ;
arrayOfData[61] = sheet.getRange('L21').getValue();//subtotal21 ;
arrayOfData[62] = sheet.getRange('B22').getValue();//area22 ;
arrayOfData[63] = sheet.getRange('D22').getValue();//description22 ;
arrayOfData[64] = sheet.getRange('I22').getValue();//quantity22 ;
arrayOfData[65] = sheet.getRange('J22').getValue();//units22 ;
arrayOfData[66] = sheet.getRange('K22').getValue();//pricePerUnit22 ;
arrayOfData[67] = sheet.getRange('L22').getValue();//subtotal22 ;
arrayOfData[68] = sheet.getRange('B23').getValue();//area23 ;
arrayOfData[69] = sheet.getRange('D23').getValue();//description23 ;
arrayOfData[70] = sheet.getRange('I23').getValue();//quantity23 ;
arrayOfData[71] = sheet.getRange('J23').getValue();//units23 ;
arrayOfData[72] = sheet.getRange('K23').getValue();//pricePerUnit23 ;
arrayOfData[73] = sheet.getRange('L23').getValue();//subtotal23 ;
arrayOfData[74] = sheet.getRange('B24').getValue();//area24 ;
arrayOfData[75] = sheet.getRange('D24').getValue();//description24 ;
arrayOfData[76] = sheet.getRange('I24').getValue();//quantity24 ;
arrayOfData[77] = sheet.getRange('J24').getValue();//units24 ;
arrayOfData[78] = sheet.getRange('K24').getValue();//pricePerUnit24 ;
arrayOfData[79] = sheet.getRange('L24').getValue();//subtotal24 ;
//end build array
//start find correct row
var searchFor = sheet.getRange("C10").getValue();
var invoiceRecord = ss.getSheetByName("InvoiceRecord");
var lastRow = invoiceRecord.getLastRow();
//verify last row
Logger.log("lastRow: " + lastRow);
//create an array of values to search
var searchArea = invoiceRecord.getRange(4, 1, lastRow, 4).getValues();
//start search the array
var jj=0
for (jj=0; jj<searchArea.length; ++jj) {
if (searchArea[jj][1]==searchFor) {break};
}
Logger.log('jj value: ' + jj);
var copyToRow = jj+4;
Logger.log('copyToRow: ' + copyToRow);
//end find correct row
//start copy over the same entry
var outerArray = [];
outerArray.push(arrayOfData);
invoiceRecord.getRange(copyToRow, 1, 1, 80).setValues(outerArray);
ui.alert('Invoice Changes Saved', ui.ButtonSet.OK);
}
Add the getValue() method to all of the lines with:
arrayOfData[x] = sheet.getRange('XX');//What to get
Right now, a range object is being put into the array, and not a value.
Should be:
arrayOfData[x] = sheet.getRange('XX').getValue();//Note
Create an outer array, and put arrayOfData into it:
var outerArray = [];
outerArray.push(arrayOfData);
//getRange(Start row, start column, number of rows, number of columns)
invoiceRecord.getRange(copyToRow, 1, outerArray.length, outerArray[0].length)
.setValues(outerArray);
The setValues() method must have a two dimensional array. If this is for just one row of data, then there will only be one inner array.

lights out game using CORONA SDK

am trying to devalope a lights out game with CORONA SDK
but am not able to figure out a way for looping it !!!
how many functions to create and the way to keep this going
here is my code (its dummy but a friend gave it to me as am trying to go on from there )
obj = nil
px = 35
py = 50
r = 22
xi = 60
yi = 60
x1y1 = display.newCircle(px+xi*0,py+yi*0,r) x1y1.id = "x1y1"
x2y1 = display.newCircle(px+xi*1,py+yi*0,r) x2y1.id = "x2y1"
x3y1 = display.newCircle(px+xi*2,py+yi*0,r) x3y1.id = "x3y1"
x4y1 = display.newCircle(px+xi*3,py+yi*0,r) x4y1.id = "x4y1"
x5y1 = display.newCircle(px+xi*4,py+yi*0,r) x5y1.id = "x5y1"
x1y2 = display.newCircle(px+xi*0,py+yi*1,r) x1y2.id = "x1y2"
x2y2 = display.newCircle(px+xi*1,py+yi*1,r) x2y2.id = "x2y2"
x3y2 = display.newCircle(px+xi*2,py+yi*1,r) x3y2.id = "x3y2"
x4y2 = display.newCircle(px+xi*3,py+yi*1,r) x4y2.id = "x4y2"
x5y2 = display.newCircle(px+xi*4,py+yi*1,r) x5y2.id = "x5y2"
x1y3 = display.newCircle(px+xi*0,py+yi*2,r) x1y3.id = "x1y3"
x2y3 = display.newCircle(px+xi*1,py+yi*2,r) x2y3.id = "x2y3"
x3y3 = display.newCircle(px+xi*2,py+yi*2,r) x3y3.id = "x3y3"
x4y3 = display.newCircle(px+xi*3,py+yi*2,r) x4y3.id = "x4y3"
x5y3 = display.newCircle(px+xi*4,py+yi*2,r) x5y3.id = "x5y3"
x1y4 = display.newCircle(px+xi*0,py+yi*3,r) x1y4.id = "x1y4"
x2y4 = display.newCircle(px+xi*1,py+yi*3,r) x2y4.id = "x2y4"
x3y4 = display.newCircle(px+xi*2,py+yi*3,r) x3y4.id = "x3y4"
x4y4 = display.newCircle(px+xi*3,py+yi*3,r) x4y4.id = "x4y4"
x5y4 = display.newCircle(px+xi*4,py+yi*3,r) x5y4.id = "x5y4"
x1y5 = display.newCircle(px+xi*0,py+yi*4,r) x1y5.id = "x1y5"
x2y5 = display.newCircle(px+xi*1,py+yi*4,r) x2y5.id = "x2y5"
x3y5 = display.newCircle(px+xi*2,py+yi*4,r) x3y5.id = "x3y5"
x4y5 = display.newCircle(px+xi*3,py+yi*4,r) x4y5.id = "x4y5"
x5y5 = display.newCircle(px+xi*4,py+yi*4,r) x5y5.id = "x5y5"
bb = {x1y1,x2y1,x3y1,x4y1,x5y1,x1y2,x2y2,x3y2,x4y2,x5y2,x1y3,x2y3,x3y3,x4y3,x5y3,x1y4,x2y4,x3y4,x4y4,x5y4,x1y5,x2y5,x3y5,x4y5,x5y5}
iClicked = 0
function click(e)
if(e.phase == "ended") then
--circleID = e.target.id
--whichCircle()
print(e.target.id)
obj = e.target
for u=1,25 do
if(obj==bb[u]) then
iClicked = u
end
end
if((iClicked-5) > 0 and (iClicked-5) < 26) then
bb[iClicked-5]:setFillColor(1,0,0)
end
if((iClicked-1) > 0 and (iClicked-1) < 26) then
bb[iClicked-1]:setFillColor(1,0,0)
end
obj:setFillColor(1,0,0)
if((iClicked+1) > 0 and (iClicked+1) < 26) then
bb[iClicked+1]:setFillColor(1,0,0)
end
if((iClicked+5) > 0 and (iClicked+5) < 26) then
bb[iClicked+5]:setFillColor(1,0,0)
end
end
end
for k=1,25 do
bb[k]:addEventListener("touch",click)
end
its all about having 25 circles and lighting them on and off but it doesnt seem to work for me
any good help will be great
Thanks
local myCircles = {}
for y = 1, 5 do
myCircles[y] = {}
for x = 1, 5 do
myCircles[y][x] = display.newCircle(px+xi*0,py+yi*4,r)
myCircles[y][x].id = .id = "x" .. x .. "y" .. y
end
end
or something like that.
Rob

Resources